aboutsummaryrefslogtreecommitdiff
path: root/bin/sh/jobs.c
diff options
context:
space:
mode:
Diffstat (limited to 'bin/sh/jobs.c')
-rw-r--r--bin/sh/jobs.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c
index 05e2e889239d..c86394f0d46c 100644
--- a/bin/sh/jobs.c
+++ b/bin/sh/jobs.c
@@ -298,6 +298,7 @@ showjob(struct job *jp, int mode)
{
char s[64];
char statestr[64];
+ const char *sigstr;
struct procstat *ps;
struct job *j;
int col, curr, i, jobno, prev, procno;
@@ -324,8 +325,9 @@ showjob(struct job *jp, int mode)
i = WSTOPSIG(ps->status);
else
i = -1;
- if (i > 0 && i < sys_nsig && sys_siglist[i])
- strcpy(statestr, sys_siglist[i]);
+ sigstr = strsignal(i);
+ if (sigstr != NULL)
+ strcpy(statestr, sigstr);
else
strcpy(statestr, "Suspended");
#endif
@@ -337,10 +339,11 @@ showjob(struct job *jp, int mode)
WEXITSTATUS(ps->status));
} else {
i = WTERMSIG(ps->status);
- if (i > 0 && i < sys_nsig && sys_siglist[i])
- strcpy(statestr, sys_siglist[i]);
+ sigstr = strsignal(i);
+ if (sigstr != NULL)
+ strcpy(statestr, sigstr);
else
- fmtstr(statestr, 64, "Signal %d", i);
+ strcpy(statestr, "Unknown signal");
if (WCOREDUMP(ps->status))
strcat(statestr, " (core dumped)");
}
@@ -1019,6 +1022,7 @@ dowait(int mode, struct job *job)
struct procstat *sp;
struct job *jp;
struct job *thisjob;
+ const char *sigstr;
int done;
int stopped;
int sig;
@@ -1026,7 +1030,7 @@ dowait(int mode, struct job *job)
int wflags;
int restore_sigchld;
- TRACE(("dowait(%d) called\n", block));
+ TRACE(("dowait(%d, %p) called\n", mode, job));
restore_sigchld = 0;
if ((mode & DOWAIT_SIG) != 0) {
sigfillset(&mask);
@@ -1129,10 +1133,11 @@ dowait(int mode, struct job *job)
coredump = WCOREDUMP(sp->status);
}
if (sig > 0 && sig != SIGINT && sig != SIGPIPE) {
- if (sig < sys_nsig && sys_siglist[sig])
- out2str(sys_siglist[sig]);
+ sigstr = strsignal(sig);
+ if (sigstr != NULL)
+ out2str(sigstr);
else
- outfmt(out2, "Signal %d", sig);
+ out2str("Unknown signal");
if (coredump)
out2str(" (core dumped)");
out2c('\n');
@@ -1293,6 +1298,10 @@ until:
cmdputs(n->narg.text);
cmdputs("() ...");
break;
+ case NNOT:
+ cmdputs("! ");
+ cmdtxt(n->nnot.com);
+ break;
case NCMD:
for (np = n->ncmd.args ; np ; np = np->narg.next) {
cmdtxt(np);