From owner-svn-src-head@FreeBSD.ORG Wed Jun 5 19:08:23 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id A26D8D77; Wed, 5 Jun 2013 19:08:23 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 946B01B88; Wed, 5 Jun 2013 19:08:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r55J8NKu005633; Wed, 5 Jun 2013 19:08:23 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r55J8NZR005631; Wed, 5 Jun 2013 19:08:23 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201306051908.r55J8NZR005631@svn.freebsd.org> From: Jilles Tjoelker Date: Wed, 5 Jun 2013 19:08:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r251429 - in head: bin/sh tools/regression/bin/sh/builtins X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Jun 2013 19:08:23 -0000 Author: jilles Date: Wed Jun 5 19:08:22 2013 New Revision: 251429 URL: http://svnweb.freebsd.org/changeset/base/251429 Log: sh: Allow multiple operands in wait builtin. This is only part of the PR; the behaviour for unknown/invalid pids/jobs remains unchanged (aborts the builtin with status 2). PR: 176916 Submitted by: Vadim Goncharov Added: head/tools/regression/bin/sh/builtins/wait8.0 (contents, props changed) Modified: head/bin/sh/jobs.c Modified: head/bin/sh/jobs.c ============================================================================== --- head/bin/sh/jobs.c Wed Jun 5 18:49:28 2013 (r251428) +++ head/bin/sh/jobs.c Wed Jun 5 19:08:22 2013 (r251429) @@ -95,6 +95,7 @@ static int ttyfd = -1; static void restartjob(struct job *); #endif static void freejob(struct job *); +static int waitcmdloop(struct job *); static struct job *getjob(char *); pid_t getjobpgrp(char *); static pid_t dowait(int, struct job *); @@ -459,15 +460,26 @@ int waitcmd(int argc __unused, char **argv __unused) { struct job *job; - int status, retval; - struct job *jp; + int retval; nextopt(""); - if (*argptr != NULL) { + if (*argptr == NULL) + return (waitcmdloop(NULL)); + + do { job = getjob(*argptr); - } else { - job = NULL; - } + retval = waitcmdloop(job); + argptr++; + } while (*argptr != NULL); + + return (retval); +} + +static int +waitcmdloop(struct job *job) +{ + int status, retval; + struct job *jp; /* * Loop until a process is terminated or stopped, or a SIGINT is Added: head/tools/regression/bin/sh/builtins/wait8.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/wait8.0 Wed Jun 5 19:08:22 2013 (r251429) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +exit 44 & p44=$! +exit 45 & p45=$! +exit 7 & p7=$! +wait "$p44" "$p7" "$p45" +[ "$?" = 45 ]