bin/146189: commit references a PR
dfilter service
dfilter at FreeBSD.ORG
Fri Apr 30 22:40:09 UTC 2010
The following reply was made to PR bin/146189; it has been noted by GNATS.
From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: bin/146189: commit references a PR
Date: Fri, 30 Apr 2010 22:34:08 +0000 (UTC)
Author: ed
Date: Fri Apr 30 22:33:49 2010
New Revision: 207453
URL: http://svn.freebsd.org/changeset/base/207453
Log:
Remove WNOHANG flag from wait3().
Because script(1) now reliably terminates when the TTY is closed, it may
be the case that the call to wait3() occurs just before the child
process exits. This causes error codes to be ignored.
Just change script(1) to use waitpid() instead of wait3(). This makes it
more portable and prevents the need for a loop, since waitpid() only
returns a specified process.
PR: bin/146189
Tested by: amdmi3@, older version
MFC after: 2 weeks
Modified:
head/usr.bin/script/script.c
Modified: head/usr.bin/script/script.c
==============================================================================
--- head/usr.bin/script/script.c Fri Apr 30 22:31:37 2010 (r207452)
+++ head/usr.bin/script/script.c Fri Apr 30 22:33:49 2010 (r207453)
@@ -219,23 +219,17 @@ usage(void)
void
finish(void)
{
- pid_t pid;
- int die, e, status;
+ int e, status;
- die = e = 0;
- while ((pid = wait3(&status, WNOHANG, 0)) > 0)
- if (pid == child) {
- die = 1;
- if (WIFEXITED(status))
- e = WEXITSTATUS(status);
- else if (WIFSIGNALED(status))
- e = WTERMSIG(status);
- else /* can't happen */
- e = 1;
- }
-
- if (die)
+ if (waitpid(child, &status, 0) == child) {
+ if (WIFEXITED(status))
+ e = WEXITSTATUS(status);
+ else if (WIFSIGNALED(status))
+ e = WTERMSIG(status);
+ else /* can't happen */
+ e = 1;
done(e);
+ }
}
void
_______________________________________________
svn-src-all at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
More information about the freebsd-bugs
mailing list