Author: jilles
Date: Sat Aug 24 09:57:32 2013
New Revision: 254767
URL: http://svnweb.freebsd.org/changeset/base/254767

Log:
  sh: Do not prematurely discard stopped jobs in a wait builtin.
  
  If a job is specified to 'wait', wait for it to complete. Formerly, in
  interactive mode, the job was deleted if it stopped.
  
  If no jobs are specified in interactive mode, 'wait' still waits for all jobs
  to complete or stop.
  
  In non-interactive mode, WUNTRACED is not passed to wait3() so stopped jobs
  are not detected.
  
  PR:           bin/181435

Modified:
  head/bin/sh/jobs.c

Modified: head/bin/sh/jobs.c
==============================================================================
--- head/bin/sh/jobs.c  Sat Aug 24 09:42:14 2013        (r254766)
+++ head/bin/sh/jobs.c  Sat Aug 24 09:57:32 2013        (r254767)
@@ -495,14 +495,10 @@ waitcmdloop(struct job *job)
        in_waitcmd++;
        do {
                if (job != NULL) {
-                       if (job->state) {
+                       if (job->state == JOBDONE) {
                                status = job->ps[job->nprocs - 1].status;
                                if (WIFEXITED(status))
                                        retval = WEXITSTATUS(status);
-#if JOBS
-                               else if (WIFSTOPPED(status))
-                                       retval = WSTOPSIG(status) + 128;
-#endif
                                else
                                        retval = WTERMSIG(status) + 128;
                                if (! iflag || ! job->changed)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to