From 24f5a3d9ca8a43fb635461db03b8f737eaed9894 Mon Sep 17 00:00:00 2001 From: "wtc%netscape.com" Date: Fri, 12 Feb 1999 18:48:42 +0000 Subject: [PATCH] Make sure the redirected standard I/O fd's are blocking so that libc's stdio.h functions can work. git-svn-id: svn://10.0.0.236/trunk@20591 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/nsprpub/pr/src/md/unix/uxproces.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mozilla/nsprpub/pr/src/md/unix/uxproces.c b/mozilla/nsprpub/pr/src/md/unix/uxproces.c index 6b1d4110c25..3ae0f5a1979 100644 --- a/mozilla/nsprpub/pr/src/md/unix/uxproces.c +++ b/mozilla/nsprpub/pr/src/md/unix/uxproces.c @@ -145,6 +145,7 @@ ForkAndExec( int nEnv, idx; char *const *childEnvp; char **newEnvp = NULL; + int flags; process = PR_NEW(PRProcess); if (!process) { @@ -200,6 +201,10 @@ ForkAndExec( _exit(1); /* failed */ } close(attr->stdinFd->secret->md.osfd); + flags = fcntl(0, F_GETFL, 0); + if (flags & O_NONBLOCK) { + fcntl(0, F_SETFL, flags & ~O_NONBLOCK); + } } if (attr->stdoutFd && attr->stdoutFd->secret->md.osfd != 1) { @@ -207,6 +212,10 @@ ForkAndExec( _exit(1); /* failed */ } close(attr->stdoutFd->secret->md.osfd); + flags = fcntl(1, F_GETFL, 0); + if (flags & O_NONBLOCK) { + fcntl(1, F_SETFL, flags & ~O_NONBLOCK); + } } if (attr->stderrFd && attr->stderrFd->secret->md.osfd != 2) { @@ -214,6 +223,10 @@ ForkAndExec( _exit(1); /* failed */ } close(attr->stderrFd->secret->md.osfd); + flags = fcntl(2, F_GETFL, 0); + if (flags & O_NONBLOCK) { + fcntl(2, F_SETFL, flags & ~O_NONBLOCK); + } } if (attr->currentDirectory) { if (chdir(attr->currentDirectory) < 0) {