bin/146189: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Fri May 14 12:40:07 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, 14 May 2010 12:34:16 +0000 (UTC)

 Author: ed
 Date: Fri May 14 12:34:06 2010
 New Revision: 208070
 URL: http://svn.freebsd.org/changeset/base/208070
 
 Log:
   MFC r207453:
   
     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
 
 Modified:
   stable/8/usr.bin/script/script.c
 Directory Properties:
   stable/8/usr.bin/script/   (props changed)
 
 Modified: stable/8/usr.bin/script/script.c
 ==============================================================================
 --- stable/8/usr.bin/script/script.c	Fri May 14 10:06:20 2010	(r208069)
 +++ stable/8/usr.bin/script/script.c	Fri May 14 12:34:06 2010	(r208070)
 @@ -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