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.
This commit is contained in:
Jilles Tjoelker 2012-07-28 14:32:55 +00:00
parent e07d856055
commit faa787d323
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=238865

View File

@ -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