version 1.17, 1999/12/06 22:20:34 |
version 1.18, 1999/12/06 22:24:31 |
|
|
Buffer buf; /* buffer to store the result */ |
Buffer buf; /* buffer to store the result */ |
char *cp; |
char *cp; |
ssize_t cc; |
ssize_t cc; |
int length; |
size_t length; |
|
|
|
|
*err = NULL; |
*err = NULL; |
|
|
*/ |
*/ |
(void) close(fds[1]); |
(void) close(fds[1]); |
|
|
buf = Buf_Init (MAKE_BSIZE); |
buf = Buf_Init(MAKE_BSIZE); |
|
|
do { |
do { |
char result[BUFSIZ]; |
char result[BUFSIZ]; |
cc = read(fds[0], result, sizeof(result)); |
cc = read(fds[0], result, sizeof(result)); |
if (cc > 0) |
if (cc > 0) |
Buf_AddBytes(buf, cc, (Byte *) result); |
Buf_AddChars(buf, cc, result); |
} |
} |
while (cc > 0 || (cc == -1 && errno == EINTR)); |
while (cc > 0 || (cc == -1 && errno == EINTR)); |
|
|
|
|
while(((pid = wait(&status)) != cpid) && (pid >= 0)) |
while(((pid = wait(&status)) != cpid) && (pid >= 0)) |
continue; |
continue; |
|
|
res = (char *)Buf_GetAll (buf, &length); |
res = Buf_GetAll(buf, &length); |
Buf_Destroy (buf, FALSE); |
Buf_Destroy(buf, FALSE); |
|
|
if (cc == -1) |
if (cc == -1) |
*err = "Couldn't read shell's output for \"%s\""; |
*err = "Couldn't read shell's output for \"%s\""; |