]> andersk Git - moira.git/blobdiff - gdb/gdb_fserv.c
network table public
[moira.git] / gdb / gdb_fserv.c
index 1a789912444ec6c12f5d051e93f3fafabb75af13..fb815299ba2741c17945acc3ea50644f89e0e1ef 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *     $Header$
+ * $Header$
  */
 
 #ifndef lint
@@ -7,7 +7,6 @@ static char *rcsid_gdb_fserv_c = "$Header$";
 #endif lint
 
 
-
 /************************************************************************
  *     
  *                        gdb_fserv.c
@@ -30,7 +29,8 @@ static char *rcsid_gdb_fserv_c = "$Header$";
 #include <sys/signal.h>
 #include "gdb.h"
 #include <sys/resource.h>
-\f
+
+
 /************************************************************************
  *     
  *                     create_forking_server (create_forking_server)
@@ -165,26 +165,25 @@ int (*validate)();
 /*     Called on SIGCHILD to reap all dead children.
 /*     
 /************************************************************************/
+#ifndef POSIX
 int
+#else
+void
+#endif
 gdb_reaper()
 {
+#ifdef POSIX
+       int status;
+#else
        union wait status;
+#endif
        extern char *sys_siglist[];
        
-       while (wait3(&status, WNOHANG, (struct rusage *)0) >0) {
-#ifdef notdef
-               if (WIFEXITED(status)) {
-                       if (status.w_retcode)
-                               printf("exited with code %d\n",
-                                       status.w_retcode);
-               }
-               if (WIFSIGNALED(status)) {
-                       printf("exited on %s signal%s\n",
-                              sys_siglist[status.w_termsig],
-                              (status.w_coredump?"; core dumped":0));
-               }
-#endif notdef
-       }
+#ifdef POSIX
+       while (waitpid(-1, &status, WNOHANG) >0);
+#else
+       while (wait3(&status, WNOHANG, (struct rusage *)0) >0);
+#endif
 }
 \f
 /************************************************************************/
@@ -198,5 +197,14 @@ gdb_reaper()
 int
 g_do_signals()
 {
-       (void) signal(SIGCHLD, gdb_reaper);
+#ifdef POSIX
+    struct sigaction act;
+
+    act.sa_handler = gdb_reaper;
+    sigemptyset(&act.sa_mask);
+    act.sa_flags = 0;
+    (void) sigaction(SIGCHLD, &act, (struct sigaction *)0);
+#else /* sun */
+    (void) signal(SIGCHLD, gdb_reaper);
+#endif 
 }
This page took 0.038692 seconds and 4 git commands to generate.