I *always* forgotting svn add
[oweals/busybox.git] / networking / fakeidentd.c
index 29e09d13e10562ce5361eee6e3c49ea6665cefce..8967a7a386a4a0be34693275631a96fa5302008f 100644 (file)
@@ -77,17 +77,16 @@ static void inetbind(void)
        int s, port;
        struct sockaddr_in addr;
        int len = sizeof(addr);
-       int one = 1;
        struct servent *se;
 
-       if ((se = getservbyname("identd", "tcp")) == NULL)
-               port = IDENT_PORT;
-       else
+       se = getservbyname("identd", "tcp");
+       port = IDENT_PORT;
+       if (se)
                port = se->s_port;
 
        s = xsocket(AF_INET, SOCK_STREAM, 0);
 
-       setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
+       setsockopt_reuseaddr(s);
 
        memset(&addr, 0, sizeof(addr));
        addr.sin_addr.s_addr = inet_addr(bind_ip_address);
@@ -110,13 +109,13 @@ static void handlexitsigs(int signum)
 /* May succeed. If not, won't care. */
 static void writepid(uid_t nobody, uid_t nogrp)
 {
-       char buf[24];
+       char buf[sizeof(int)*3 + 2];
        int fd = open(PIDFILE, O_WRONLY|O_CREAT|O_TRUNC, 0664);
 
        if (fd < 0)
                return;
 
-       snprintf(buf, 23, "%d\n", getpid());
+       sprintf(buf, "%d\n", getpid());
        write(fd, buf, strlen(buf));
        fchown(fd, nobody, nogrp);
        close(fd);
@@ -140,7 +139,7 @@ static int godaemon(void)
        case 0:
                pw = getpwnam(nobodystr);
                if (pw == NULL)
-                       bb_error_msg_and_die("Cannot find uid/gid of user '%s'", nobodystr);
+                       bb_error_msg_and_die("cannot find uid/gid of user '%s'", nobodystr);
                nobody = pw->pw_uid;
                nogrp = pw->pw_gid;
                writepid(nobody, nogrp);
@@ -157,7 +156,6 @@ static int godaemon(void)
 
                setsid();
 
-               openlog(bb_applet_name, 0, LOG_DAEMON);
                return 1;
        }
 
@@ -219,13 +217,17 @@ static int checkInput(char *buf, int len, int l)
 
 int fakeidentd_main(int argc, char **argv)
 {
+       /* This applet is an inetd-style daemon */
+       openlog(applet_name, 0, LOG_DAEMON);
+       logmode = LOGMODE_SYSLOG;
+
        memset(conns, 0, sizeof(conns));
        memset(&G, 0, sizeof(G));
        FD_ZERO(&G.readfds);
        FD_SET(0, &G.readfds);
 
        /* handle -b <ip> parameter */
-       bb_getopt_ulflags(argc, argv, "b:", &bind_ip_address);
+       getopt32(argc, argv, "b:", &bind_ip_address);
        /* handle optional REPLY STRING */
        if (optind < argc)
                G.identuser = argv[optind];
@@ -286,7 +288,7 @@ deleteconn:
 
                if (s < 0) {
                        if (errno != EINTR) /* EINTR */
-                               syslog(LOG_ERR, "accept: %s", strerror(errno));
+                               bb_perror_msg("accept");
                } else {
                        if (G.conncnt == MAXCONNS)
                                i = closeOldest();
@@ -300,7 +302,7 @@ deleteconn:
                        conns[i].lasttime = time(NULL);
                }
        }
-       } /* end of while(1) */
+       } /* end of while (1) */
 
        return 0;
 }