From owner-svn-src-all@FreeBSD.ORG Sat Jul 28 14:32:56 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4970A106564A; Sat, 28 Jul 2012 14:32:56 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 33F508FC08; Sat, 28 Jul 2012 14:32:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6SEWuDH035736; Sat, 28 Jul 2012 14:32:56 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6SEWtnq035734; Sat, 28 Jul 2012 14:32:55 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201207281432.q6SEWtnq035734@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 28 Jul 2012 14:32:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238865 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jul 2012 14:32:56 -0000 Author: jilles Date: Sat Jul 28 14:32:55 2012 New Revision: 238865 URL: http://svn.freebsd.org/changeset/base/238865 Log: sh: Track continued jobs (even if not continued by bg or fg). This uses wait3's WCONTINUED flag. There is no message for this. The change is visible in "jobs" or if the job stops again. Modified: head/bin/sh/jobs.c Modified: head/bin/sh/jobs.c ============================================================================== --- head/bin/sh/jobs.c Sat Jul 28 13:12:57 2012 (r238864) +++ head/bin/sh/jobs.c Sat Jul 28 14:32:55 2012 (r238865) @@ -1027,7 +1027,8 @@ dowait(int block, struct job *job) pid = waitproc(block, &status); TRACE(("wait returns %d, status=%d\n", (int)pid, status)); } while ((pid == -1 && errno == EINTR && breakwaitcmd == 0) || - (pid > 0 && WIFSTOPPED(status) && !iflag)); + (pid > 0 && (WIFSTOPPED(status) || WIFCONTINUED(status)) && + !iflag)); if (pid == -1 && errno == ECHILD && job != NULL) job->state = JOBDONE; if (breakwaitcmd != 0) { @@ -1050,7 +1051,11 @@ dowait(int block, struct job *job) TRACE(("Changing status of proc %d from 0x%x to 0x%x\n", (int)pid, sp->status, status)); - sp->status = status; + if (WIFCONTINUED(status)) { + sp->status = -1; + jp->state = 0; + } else + sp->status = status; thisjob = jp; } if (sp->status == -1) @@ -1118,7 +1123,7 @@ waitproc(int block, int *status) int flags; #if JOBS - flags = WUNTRACED; + flags = WUNTRACED | WCONTINUED; #else flags = 0; #endif