diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2006-10-30 10:37:17 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2006-10-30 10:37:17 +0000 |
commit | ff9f2bb88e60e77e8b6d7670ec90651ac4ae5cec (patch) | |
tree | 753e15d925aad1c50d58b7212602b7135c153357 /Src | |
parent | 3292f9ec1fbac66f644a54baafb775cdd477027a (diff) | |
download | zsh-ff9f2bb88e60e77e8b6d7670ec90651ac4ae5cec.tar.gz zsh-ff9f2bb88e60e77e8b6d7670ec90651ac4ae5cec.tar.xz zsh-ff9f2bb88e60e77e8b6d7670ec90651ac4ae5cec.zip |
22913: set $! on "bg"
Diffstat (limited to 'Src')
-rw-r--r-- | Src/jobs.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Src/jobs.c b/Src/jobs.c index 509b9e843..5b42a45b0 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -1789,9 +1789,21 @@ bin_fg(char *name, char **argv, Options ops, int func) case BIN_WAIT: if (func == BIN_BG) jobtab[job].stat |= STAT_NOSTTY; - if ((stopped = (jobtab[job].stat & STAT_STOPPED))) + if ((stopped = (jobtab[job].stat & STAT_STOPPED))) { makerunning(jobtab + job); - else if (func == BIN_BG) { + if (func == BIN_BG) { + /* Set $! to indicate this was backgrounded */ + Process pn = jobtab[job].procs; + for (;;) { + Process next = pn->next; + if (!next) { + lastpid = (zlong) pn->pid; + break; + } + pn = next; + } + } + } else if (func == BIN_BG) { /* Silly to bg a job already running. */ zwarnnam(name, "job already in background"); thisjob = ocj; |