int junki,i;
char *tmpBuffer;
int errorBytes;
- struct stat statBuffer;
int firstPass, tmpi;
char *tmpProgName = NULL;
firstPass = 1;
while (1) {
- if ( fstat(errorpipeG[0], &statBuffer) ) {
- break;
+ char buf;
+ nfound =select(MAXSOCKS, FD_SET_CAST(&readfds), FD_SET_CAST(NULL),
+ FD_SET_CAST(NULL), &timeoutShort);
+ if (nfound > 0) {
+ tmpi = read (errorpipeG[0], &buf, 1);
+ } else {
+ tmpi = 0;
}
- else if ( statBuffer.st_size > 0 ) {
+
+ if ( tmpi > 0 ) {
/*
* Grow buffer to hold entire error stream.
*/
firstPass = 0;
if (tmpBuffer == NULL)
tmpBuffer = (char *) malloc(
- statBuffer.st_size + 1);
+ tmpi + 1);
else
tmpBuffer = (char *) realloc( tmpBuffer,
- errorBytes +
- statBuffer.st_size + 1);
+ errorBytes + tmpi + 1);
/*
* Drain error pipe.
*/
- tmpi = read (errorpipeG[0], &tmpBuffer[errorBytes],
- statBuffer.st_size);
- if (tmpi > 0) /* else let fstat() redetect problem */
- errorBytes += tmpi;
+ tmpBuffer[errorBytes] = buf;
+ errorBytes += tmpi;
tmpBuffer[errorBytes] = '\0';
if (errorBytes < 65535) {