diff options
author | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-05-01 03:26:45 +0000 |
---|---|---|
committer | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-05-01 03:26:45 +0000 |
commit | ea04c1dbb04f66a42f92e698850f831d1e65676b (patch) | |
tree | cee43791ed24bf5b027214022a81ec972147f8a8 /Src | |
parent | 45c4101a52596dbb43c9ecc55329690cce09fc78 (diff) | |
download | zsh-ea04c1dbb04f66a42f92e698850f831d1e65676b.tar.gz zsh-ea04c1dbb04f66a42f92e698850f831d1e65676b.tar.xz zsh-ea04c1dbb04f66a42f92e698850f831d1e65676b.zip |
Merge of 21296: Add ERR alias for ZERR where possible.
Diffstat (limited to 'Src')
-rw-r--r-- | Src/builtin.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Src/builtin.c b/Src/builtin.c index 1d9f458e6..20a6d5045 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -4983,13 +4983,14 @@ bin_trap(char *name, char **argv, UNUSED(Options ops), UNUSED(int func)) shfunctab->printnode(hn, 0); DPUTS(!hn, "BUG: I did not find any trap functions!"); } else if (sigtrapped[sig]) { - if (!sigfuncs[sig]) - printf("trap -- '' %s\n", sigs[sig]); + char *name = getsigname(sig); + if (!siglists[sig]) + printf("trap -- '' %s\n", name); else { s = getpermtext(sigfuncs[sig], NULL); printf("trap -- "); quotedzputs(s, stdout); - printf(" %s\n", sigs[sig]); + printf(" %s\n", name); zsfree(s); } } @@ -5022,14 +5023,25 @@ bin_trap(char *name, char **argv, UNUSED(Options ops), UNUSED(int func)) /* set traps */ for (; *argv; argv++) { Eprog t; + int flags; sig = getsignum(*argv); if (sig == -1) { zwarnnam(name, "undefined signal: %s", *argv, 0); break; } + if (!strcmp(sigs[sig], *argv)) + flags = 0; + else { + /* + * Record that the signal is used under an assumed name. + * If we ever have more than one alias per signal this + * will need improving. + */ + flags = ZSIG_ALIAS; + } t = dupeprog(prog, 0); - if (settrap(sig, t)) + if (settrap(sig, t, flags)) freeeprog(t); } return *argv != NULL; |