diff options
author | Wayne Davison <wayned@users.sourceforge.net> | 2005-08-09 05:41:55 +0000 |
---|---|---|
committer | Wayne Davison <wayned@users.sourceforge.net> | 2005-08-09 05:41:55 +0000 |
commit | 9937c30ba32082ce8784dcd69136221bccf344d1 (patch) | |
tree | 816176418a7c6031925c4715b2e7c427785bd3a1 | |
parent | e041d77fbcc00cedddfa7331bb6516caf46e87dc (diff) | |
download | zsh-9937c30ba32082ce8784dcd69136221bccf344d1.tar.gz zsh-9937c30ba32082ce8784dcd69136221bccf344d1.tar.xz zsh-9937c30ba32082ce8784dcd69136221bccf344d1.zip |
21581: Thorsten Dahlheimer: Src/builtin.c: fixed error output
for unknown signal names when using "trap -".
-rw-r--r-- | Src/builtin.c | 17 |
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 */ |