don't need "make rall" (make install does it twice)
[unix-history] / usr / src / old / implogd / implogd.c
index a3177a3..71877e7 100644 (file)
@@ -1,14 +1,35 @@
+/*
+ * Copyright (c) 1983,1988 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that this notice is preserved and that due credit is given
+ * to the University of California at Berkeley. The name of the University
+ * may not be used to endorse or promote products derived from this
+ * software without specific prior written permission. This software
+ * is provided ``as is'' without express or implied warranty.
+ */
+
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)implogd.c  4.7 (Berkeley) %G%";
-#endif
+char copyright[] =
+"@(#) Copyright (c) 1983,1988 Regents of the University of California.\n\
+ All rights reserved.\n";
+#endif not lint
+
+#ifndef lint
+static char sccsid[] = "@(#)implogd.c  5.5 (Berkeley) %G%";
+#endif not lint
 
 
-#include <time.h>
 #include <sgtty.h>
 
 #include <sgtty.h>
 
+#include <sys/time.h>
 #include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/param.h>
 #include <sys/socket.h>
+#include <sys/syslog.h>
 #include <sys/file.h>
 
 #include <sys/file.h>
 
+#include <net/if.h>
+
 #include <netinet/in.h>
 #include <netimp/if_imp.h>
 
 #include <netinet/in.h>
 #include <netimp/if_imp.h>
 
@@ -36,18 +57,34 @@ struct sockstamp {
 main(argc, argv)
        char *argv[];
 {
 main(argc, argv)
        char *argv[];
 {
-       int s;
+       int i, s;
        time_t t;
        struct sockstamp from;
 
        argc--, argv++;
        time_t t;
        struct sockstamp from;
 
        argc--, argv++;
+       openlog("implogd", LOG_PID | LOG_ODELAY, LOG_DAEMON);
        if (argc > 0 && !strcmp(argv[0], "-d"))
                options |= SO_DEBUG;
        if (argc > 0 && !strcmp(argv[0], "-d"))
                options |= SO_DEBUG;
+       log = open(LOGFILE, O_CREAT|O_WRONLY|O_APPEND, 0644);
+       if (log < 0) {
+               syslog(LOG_ERR, "%s: %m\n", LOGFILE);
+               perror("implogd: open");
+               exit(1);
+       }
+       from.sin_time = time(0);
+       from.sin_len = sizeof (time_t);
+       write(log, (char *)&from, sizeof (from));
+       if ((s = socket(AF_IMPLINK, SOCK_RAW, 0)) < 0) {
+               syslog(LOG_ERR, "socket: %m\n");
+               perror("implogd: socket");
+               exit(5);
+       }
 #ifndef DEBUG
        if (fork())
                exit(0);
 #ifndef DEBUG
        if (fork())
                exit(0);
-       for (s = 0; s < 10; s++)
-               (void) close(t);
+       for (i = 0; i < 10; i++)
+               if (i != log && i != s)
+                       (void) close(i);
        (void) open("/", 0);
        (void) dup2(0, 1);
        (void) dup2(0, 2);
        (void) open("/", 0);
        (void) dup2(0, 1);
        (void) dup2(0, 2);
@@ -58,24 +95,13 @@ main(argc, argv)
          }
        }
 #endif
          }
        }
 #endif
-       log = open(LOGFILE, O_CREAT|O_WRONLY|O_APPEND, 0644);
-       if (log < 0) {
-               perror("implogd: open");
-               exit(1);
-       }
-       from.sin_time = time(0);
-       from.sin_len = sizeof (time_t);
-       write(log, (char *)&from, sizeof (from));
-       while ((s = socket(AF_IMPLINK, SOCK_RAW, 0, 0)) < 0) {
-               perror("implogd: socket");
-               sleep(5);
-       }
        for (;;) {
                int fromlen = sizeof (from), len;
 
                len = recvfrom(s, request, sizeof (request), 0,
                        &from, &fromlen);
                if (len < 0) {
        for (;;) {
                int fromlen = sizeof (from), len;
 
                len = recvfrom(s, request, sizeof (request), 0,
                        &from, &fromlen);
                if (len < 0) {
+                       syslog(LOG_ERR, "recvfrom: %m\n");
                        perror("implogd: recvfrom");
                        continue;
                }
                        perror("implogd: recvfrom");
                        continue;
                }