--- server.c	Tue Jun  4 21:40:19 2002
+++ server.c	Tue Jun  4 21:42:56 2002
@@ -54,7 +54,6 @@
 #endif /* USG5 || SVR4 */
 
 #include <sys/param.h>
-#include <sgtty.h>
 #include <sys/types.h>
 #include <ctype.h>
 
@@ -66,7 +65,7 @@
 #else
 char *malloc();
 #endif
-long time();
+time_t time();
 uid_t getuid();
 char *progname;
 int debug = 0;
@@ -99,6 +98,9 @@
      }
 
      if (! strcmp (basename (progname), "rmsgd")) {
+#if (defined(BSD) && (BSD >= 199306))
+	(void)daemon(0,0);
+#else
           if (fork()) _exit(0);  /* make myself a daemon */
 #ifdef BSD
           fd = open("/dev/tty", O_RDWR);  /* disconnect from control tty */
@@ -109,10 +111,11 @@
 #else
           (void) setpgrp ();
 #endif
+#endif
      }
 
      else {
-          (void) fprintf (stderr, "Starting from inetd not yet supported, rename me ase rmsgd and start\nfrom /etc/rc\n");
+          (void) fprintf (stderr, "Starting from inetd not yet supported, rename me ase rmsgd and start\nfrom /etc/rc.local\n");
      }
 
      if (argc > 1)
@@ -142,7 +145,7 @@
 {
      int child, pid, fd;
      unsigned int retval = 0;
-#if defined(HPUX) || defined(SVR4)
+#if defined(HPUX) || defined(SVR4) || defined(BSD)
      int status;
 #else
      union wait status;
@@ -198,6 +201,9 @@
 #if defined(HPUX) || defined(SVR4)
           if (status & 0xff) retval = -1;
           else retval = ((status & 0xffff) >> 8);
+#elif defined(BSD)
+          if (WIFSIGNALED(status)) retval = -1;
+          else retval = WEXITSTATUS(status);
 #else
           if (status.w_termsig) retval = -1;       /* ended in signal */
           else retval = status.w_retcode;


syntax highlighted by Code2HTML, v. 0.9.1