diff --git a/servers/vfs/pipe.c b/servers/vfs/pipe.c index eb61e3b6f..ea75afb07 100644 --- a/servers/vfs/pipe.c +++ b/servers/vfs/pipe.c @@ -394,13 +394,6 @@ int count; /* max number of processes to release */ f->filp_vno != vp) continue; - /* Do a pipe_check to see if we really want to callback this - * select; a close() doesn't always warrant it. - */ - if(pipe_check(f, op == VFS_READ ? READING : WRITING, - f->filp_flags, 1, 1) != EAGAIN) { - continue; - } select_callback(f, selop); f->filp_pipe_select_ops &= ~selop; diff --git a/usr.bin/make/job.c b/usr.bin/make/job.c index 43df92375..c37ec6f20 100644 --- a/usr.bin/make/job.c +++ b/usr.bin/make/job.c @@ -1380,7 +1380,7 @@ JobExec(Job *job, char **argv) * by killing its process family, but not commit suicide. */ #if defined(MAKE_NATIVE) || defined(HAVE_SETPGID) -#if defined(SYSV) || defined(__minix) +#if defined(SYSV) /* XXX: dsl - I'm sure this should be setpgrp()... */ (void)setsid(); #else @@ -2061,7 +2061,15 @@ Job_CatchOutput(void) if (nready > 0 && readyfd(&childExitJob)) { char token = 0; ssize_t count; +#if defined(__minix) + /* Workaround: While the pipe is deemed ready to be read, it can still + * return EAGAIN in the read below. */ + do { +#endif /* defined(__minix) */ count = read(childExitJob.inPipe, &token, 1); +#if defined(__minix) + } while(-1 == count && EAGAIN == errno); +#endif /* defined(__minix) */ switch (count) { case 0: Punt("unexpected eof on token pipe");