summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Davison <wayned@users.sourceforge.net>2005-08-09 05:41:55 +0000
committerWayne Davison <wayned@users.sourceforge.net>2005-08-09 05:41:55 +0000
commit9937c30ba32082ce8784dcd69136221bccf344d1 (patch)
tree816176418a7c6031925c4715b2e7c427785bd3a1
parente041d77fbcc00cedddfa7331bb6516caf46e87dc (diff)
downloadzsh-9937c30ba32082ce8784dcd69136221bccf344d1.tar.gz
zsh-9937c30ba32082ce8784dcd69136221bccf344d1.zip
21581: Thorsten Dahlheimer: Src/builtin.c: fixed error output
for unknown signal names when using "trap -".
-rw-r--r--Src/builtin.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index de1cb68e4..811d02506 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -5017,13 +5017,20 @@ bin_trap(char *name, char **argv, UNUSED(Options ops), UNUSED(int func))
/* If we have a signal number, unset the specified *
* signals. With only -, remove all traps. */
if ((getsignum(*argv) != -1) || (!strcmp(*argv, "-") && argv++)) {
- if (!*argv)
+ if (!*argv) {
for (sig = 0; sig < VSIGCOUNT; sig++)
unsettrap(sig);
- else
- while (*argv)
- unsettrap(getsignum(*argv++));
- return 0;
+ } else {
+ for (; *argv; argv++) {
+ sig = getsignum(*argv);
+ if (sig == -1) {
+ zwarnnam(name, "undefined signal: %s", *argv, 0);
+ break;
+ }
+ unsettrap(sig);
+ }
+ }
+ return *argv != NULL;
}
/* Sort out the command to execute on trap */