]> andersk Git - moira.git/blobdiff - gdb/gdb_fserv.c
Fix allocation strategy in setup_ahst(); shouldn't be redefining the argv
[moira.git] / gdb / gdb_fserv.c
index c1089c024e057e8e25b48c9e2d171193293c1ce0..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,30 +165,25 @@ int (*validate)();
 /*     Called on SIGCHILD to reap all dead children.
 /*     
 /************************************************************************/
-#ifndef sun
+#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
 /************************************************************************/
@@ -202,13 +197,13 @@ gdb_reaper()
 int
 g_do_signals()
 {
-#ifdef sun
-    struct sigvec act;
+#ifdef POSIX
+    struct sigaction act;
 
-    act.sv_handler = gdb_reaper;
-    act.sv_mask = 0;
-    act.sv_flags = 0;
-    (void) sigvec(SIGCHLD, &act, NULL);
+    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.034598 seconds and 4 git commands to generate.