OSDN Git Service

only shut down the server process if the master process is exiting
authorkorbb <korbb@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Jun 2000 17:25:47 +0000 (17:25 +0000)
committerkorbb <korbb@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Jun 2000 17:25:47 +0000 (17:25 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34360 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fixinc/server.c

index 574be6a..8857e6c 100644 (file)
@@ -1,3 +1,9 @@
+2000-06-02  Bruce Korb  <bkorb@gnu.org>
+
+       * fixinc/server.c(sig_handler):  resume closing server on SIGPIPE
+       (server_setup):  define the server's master pid
+       (close_server):  actually do the deed IFF we are the server's master
+
 2000-06-02  Jakub Jelinek  <jakub@redhat.com>
 
        * c-common.c (c_get_alias_set): Check whether signed_type did not
index 598652c..eba1933 100644 (file)
@@ -84,6 +84,7 @@
 #endif
 
 STATIC volatile t_bool read_pipe_timeout;
+STATIC pid_t server_master_pid = NOPROCESS;
 
 static t_pchar def_args[] =
 { (char *) NULL, (char *) NULL };
@@ -183,10 +184,12 @@ load_data (fp)
 void
 close_server ()
 {
-  if (server_id != NULLPROCESS)
+  if (  (server_id != NULLPROCESS)
+     && (server_master_pid == getpid ()))
     {
       kill ((pid_t) server_id, SIGKILL);
       server_id = NULLPROCESS;
+      server_master_pid = NOPROCESS;
       fclose (server_pair.pf_read);
       fclose (server_pair.pf_write);
       server_pair.pf_read = server_pair.pf_write = (FILE *) NULL;
@@ -209,8 +212,6 @@ sig_handler (signo)
           "fixincl ERROR:  sig_handler: killed pid %ld due to %s\n",
           (long) server_id, signo == SIGPIPE ? "SIGPIPE" : "SIGALRM");
 #endif
-  if (signo == SIGPIPE)
-    return;
   close_server ();
   read_pipe_timeout = BOOL_TRUE;
 }
@@ -231,6 +232,8 @@ server_setup ()
   else
     fputs ("NOTE: server restarted\n", stderr);
 
+  server_master_pid = getpid ();
+
   signal (SIGPIPE, sig_handler);
   signal (SIGALRM, sig_handler);