summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-10 16:29:21 +0000
committeroliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-10 16:29:21 +0000
commit8bb5d2a62165cf534eef5cdc95f38235afb21118 (patch)
treebc1dde13ee1df734ce16aa8b53f4540962833ea9
parente36dc2c1a45e6e64afe1adbbccf4c00f3e55e996 (diff)
downloadppe42-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/ChangeLog5
-rw-r--r--gcc/fixinc/server.c20
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';
OpenPOWER on IntegriCloud