diff options
| author | oliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-02-10 16:29:21 +0000 |
|---|---|---|
| committer | oliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-02-10 16:29:21 +0000 |
| commit | 8bb5d2a62165cf534eef5cdc95f38235afb21118 (patch) | |
| tree | bc1dde13ee1df734ce16aa8b53f4540962833ea9 | |
| parent | e36dc2c1a45e6e64afe1adbbccf4c00f3e55e996 (diff) | |
| download | ppe42-gcc-8bb5d2a62165cf534eef5cdc95f38235afb21118.tar.gz ppe42-gcc-8bb5d2a62165cf534eef5cdc95f38235afb21118.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31894 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/fixinc/server.c | 20 |
2 files changed, 22 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 417fc14dac2..977e894e344 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> diff --git a/gcc/fixinc/server.c b/gcc/fixinc/server.c index 1eacda78f25..676df8cd0f6 100644 --- a/gcc/fixinc/server.c +++ b/gcc/fixinc/server.c @@ -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'; |

