diff options
author | Paul Smith <psmith@gnu.org> | 2001-06-01 03:56:50 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2001-06-01 03:56:50 +0000 |
commit | ce2c6eadf1a7f49465a51a4377f2705ce637715c (patch) | |
tree | 4e3fe9abeb5b51cd37f36f139e71ee9c79527374 /function.c | |
parent | 5d582d4ba06495a95854c45828399f7edfe51a50 (diff) | |
download | gunmake-ce2c6eadf1a7f49465a51a4377f2705ce637715c.tar.gz |
Fix for EINTR problems when using jobserver.
New translation files.
Fix for @+ inside define macros being applied too widely.
Various other bug fixes.
Diffstat (limited to 'function.c')
-rw-r--r-- | function.c | 9 |
1 files changed, 3 insertions, 6 deletions
@@ -1435,8 +1435,7 @@ func_shell (o, argv, funcname) buffer = (char *) xmalloc (maxlen + 1); /* Read from the pipe until it gets EOF. */ - i = 0; - do + for (i = 0; ; i += cc) { if (i == maxlen) { @@ -1444,12 +1443,10 @@ func_shell (o, argv, funcname) buffer = (char *) xrealloc (buffer, maxlen + 1); } - errno = 0; cc = read (pipedes[0], &buffer[i], maxlen - i); - if (cc > 0) - i += cc; + if (cc <= 0) + break; } - while (cc > 0 || EINTR_SET); buffer[i] = '\0'; /* Close the read side of the pipe. */ |