BSD 4_4 release
[unix-history] / usr / src / libexec / talkd / talkd.c
index 4430982..669931b 100644 (file)
@@ -1,23 +1,44 @@
 /*
 /*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1983, 1993
+ *     The 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.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-char copyright[] =
-"@(#) Copyright (c) 1983 Regents of the University of California.\n\
- All rights reserved.\n";
+static char copyright[] =
+"@(#) Copyright (c) 1983, 1993\n\
      The Regents of the University of California.  All rights reserved.\n";
 #endif /* not lint */
 
 #ifndef lint
 #endif /* not lint */
 
 #ifndef lint
-static char sccsid[] = "@(#)talkd.c    5.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)talkd.c    8.1 (Berkeley) 6/4/93";
 #endif /* not lint */
 
 /*
 #endif /* not lint */
 
 /*
@@ -26,19 +47,25 @@ static char sccsid[] = "@(#)talkd.c 5.3 (Berkeley) %G%";
  * disconnect all descriptors and ttys, and then endless
  * loop on waiting for and processing requests
  */
  * disconnect all descriptors and ttys, and then endless
  * loop on waiting for and processing requests
  */
-#include <stdio.h>
-#include <errno.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <protocols/talkd.h>
 #include <signal.h>
 #include <syslog.h>
 #include <signal.h>
 #include <syslog.h>
-
-#include <protocols/talkd.h>
+#include <time.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <paths.h>
 
 CTL_MSG                request;
 CTL_RESPONSE   response;
 
 int    sockt;
 int    debug = 0;
 
 CTL_MSG                request;
 CTL_RESPONSE   response;
 
 int    sockt;
 int    debug = 0;
-int    timeout();
+void   timeout();
 long   lastmsgtime;
 
 char   hostname[32];
 long   lastmsgtime;
 
 char   hostname[32];
@@ -54,7 +81,7 @@ main(argc, argv)
        int cc;
 
        if (getuid()) {
        int cc;
 
        if (getuid()) {
-               fprintf(stderr, "%s: getuid: not super-user", argv[0]);
+               fprintf(stderr, "%s: getuid: not super-user\n", argv[0]);
                exit(1);
        }
        openlog("talkd", LOG_PID, LOG_DAEMON);
                exit(1);
        }
        openlog("talkd", LOG_PID, LOG_DAEMON);
@@ -62,8 +89,8 @@ main(argc, argv)
                syslog(LOG_ERR, "gethostname: %m");
                _exit(1);
        }
                syslog(LOG_ERR, "gethostname: %m");
                _exit(1);
        }
-       if (chdir("/dev") < 0) {
-               syslog(LOG_ERR, "chdir: /dev: %m");
+       if (chdir(_PATH_DEV) < 0) {
+               syslog(LOG_ERR, "chdir: %s: %m", _PATH_DEV);
                _exit(1);
        }
        if (argc > 1 && strcmp(argv[1], "-d") == 0)
                _exit(1);
        }
        if (argc > 1 && strcmp(argv[1], "-d") == 0)
@@ -83,12 +110,14 @@ main(argc, argv)
                process_request(mp, &response);
                /* can block here, is this what I want? */
                cc = sendto(sockt, (char *)&response,
                process_request(mp, &response);
                /* can block here, is this what I want? */
                cc = sendto(sockt, (char *)&response,
-                   sizeof (response), 0, &mp->ctl_addr, sizeof (mp->ctl_addr));
+                   sizeof (response), 0, (struct sockaddr *)&mp->ctl_addr,
+                   sizeof (mp->ctl_addr));
                if (cc != sizeof (response))
                        syslog(LOG_WARNING, "sendto: %m");
        }
 }
 
                if (cc != sizeof (response))
                        syslog(LOG_WARNING, "sendto: %m");
        }
 }
 
+void
 timeout()
 {
 
 timeout()
 {