summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2009-11-21 20:44:34 +0000
committerjilles <jilles@FreeBSD.org>2009-11-21 20:44:34 +0000
commitb93ea764d1d0def18567c878f714bdd74d2866f9 (patch)
tree56e8951b61d88c5f217bc12e6c6978dd04ba02a0 /bin
parente3acc4fb3576529ef4735fe244ab638a98888963 (diff)
downloadFreeBSD-src-b93ea764d1d0def18567c878f714bdd74d2866f9.zip
FreeBSD-src-b93ea764d1d0def18567c878f714bdd74d2866f9.tar.gz
trap: do not consider a bad signal name a fatal error.
POSIX explicitly prescribes this. Continue processing any other signals and return status 1.
Diffstat (limited to 'bin')
-rw-r--r--bin/sh/trap.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/bin/sh/trap.c b/bin/sh/trap.c
index 48aa264..3a6803b 100644
--- a/bin/sh/trap.c
+++ b/bin/sh/trap.c
@@ -149,6 +149,7 @@ trapcmd(int argc, char **argv)
{
char *action;
int signo;
+ int errors = 0;
if (argc <= 1) {
for (signo = 0 ; signo < sys_nsig ; signo++) {
@@ -183,8 +184,10 @@ trapcmd(int argc, char **argv)
}
}
while (*argv) {
- if ((signo = sigstring_to_signum(*argv)) == -1)
- error("bad signal %s", *argv);
+ if ((signo = sigstring_to_signum(*argv)) == -1) {
+ out2fmt_flush("trap: bad signal %s\n", *argv);
+ errors = 1;
+ }
INTOFF;
if (action)
action = savestr(action);
@@ -196,7 +199,7 @@ trapcmd(int argc, char **argv)
INTON;
argv++;
}
- return 0;
+ return errors;
}
OpenPOWER on IntegriCloud