diff --git a/cde/programs/dtexec/Main.c b/cde/programs/dtexec/Main.c index 362458871..60c6d2282 100644 --- a/cde/programs/dtexec/Main.c +++ b/cde/programs/dtexec/Main.c @@ -1163,7 +1163,6 @@ main ( int junki,i; char *tmpBuffer; int errorBytes; - struct stat statBuffer; int firstPass, tmpi; char *tmpProgName = NULL; @@ -1390,28 +1389,31 @@ main ( 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) {