server.c (load_data): Return NULL if the marker line is not found.
authorAlexandre Oliva <oliva@lsd.ic.unicamp.br>
Thu, 10 Feb 2000 16:29:21 +0000 (16:29 +0000)
committerAlexandre Oliva <oliva@gcc.gnu.org>
Thu, 10 Feb 2000 16:29:21 +0000 (16:29 +0000)
* fixinc/server.c (load_data): Return NULL if the marker line is
not found.
(run_shell): If load_data returns NULL, retry the command once, in
a new shell.

From-SVN: r31894

gcc/ChangeLog
gcc/fixinc/server.c

index 417fc14dac2fe8d191931222de1139f3d2d90912..977e894e344d9a4e5ed44e79e893dc61832fd488 100644 (file)
@@ -1,5 +1,10 @@
 2000-02-10  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
 
+       * fixinc/server.c (load_data): Return NULL if the marker line is
+       not found.
+       (run_shell): If load_data returns NULL, retry the command once, in
+       a new shell.
+
        * configure: Rebuilt.
 
 2000-02-09  Bruce Korb  <bkorb@gnu.org>
index 1eacda78f25b0c9df25a916a5e7d7aa778cd5d8e..676df8cd0f693e9b77ae545c664907c591f78616 100644 (file)
@@ -114,6 +114,7 @@ load_data (fp)
   size_t text_size;
   char *pz_scan;
   char z_line[1024];
+  t_bool got_done = BOOL_FALSE;
 
   text_size = sizeof (z_line) * 2;
   pz_scan = pz_text = malloc (text_size);
@@ -131,7 +132,10 @@ load_data (fp)
         break;
 
       if (strncmp (z_line, z_done, sizeof (z_done) - 1) == 0)
-        break;
+       {
+         got_done = BOOL_TRUE;
+         break;
+       }
 
       strcpy (pz_scan, z_line);
       pz_scan += strlen (z_line);
@@ -157,7 +161,7 @@ load_data (fp)
     }
 
   alarm (0);
-  if (read_pipe_timeout)
+  if (read_pipe_timeout || ! got_done)
     {
       free ((void *) pz_text);
       return (char *) NULL;
@@ -255,6 +259,9 @@ char *
 run_shell (pz_cmd)
      const char *pz_cmd;
 {
+  t_bool retry = BOOL_TRUE;
+
+ do_retry:
   /*  IF the shell server process is not running yet,
       THEN try to start it.  */
   if (server_id == NULLPROCESS)
@@ -299,9 +306,16 @@ run_shell (pz_cmd)
     
     if (pz == (char *) NULL)
       {
+       close_server ();
+
+       if (retry)
+         {
+           retry = BOOL_FALSE;
+           goto do_retry;
+         }
+
         fprintf (stderr, "CLOSING SHELL SERVER - command failure:\n\t%s\n",
                  pz_cmd);
-        close_server ();
         pz = (char *) malloc (1);
         if (pz != (char *) NULL)
           *pz = '\0';