ash,hush: make trap output short signal names, without SIG prefix

function                                             old     new   delta
evalvar                                             1373    1371      -2
builtin_trap                                         457     441     -16
trapcmd                                              260     236     -24

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2009-09-27 02:05:45 +02:00
parent 6c750f1518
commit e74aaf9385
6 changed files with 28 additions and 22 deletions

View File

@ -12267,13 +12267,16 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
for (signo = 0; signo < NSIG; signo++) { for (signo = 0; signo < NSIG; signo++) {
char *tr = trap_ptr[signo]; char *tr = trap_ptr[signo];
if (tr) { if (tr) {
out1fmt("trap -- %s %s%s\n", /* note: bash adds "SIG", but only if invoked
* as "bash". If called as "sh", or if set -o posix,
* then it prints short signal names.
* We are printing short names: */
out1fmt("trap -- %s %s\n",
single_quote(tr), single_quote(tr),
(signo == 0 ? "" : "SIG"),
get_signame(signo)); get_signame(signo));
/* trap_ptr != trap only if we are in special-cased `trap` code. /* trap_ptr != trap only if we are in special-cased `trap` code.
* In this case, we will exit very soon, no need to free(). */ * In this case, we will exit very soon, no need to free(). */
/* if (trap_ptr != trap) */ /* if (trap_ptr != trap && tp[0]) */
/* free(tr); */ /* free(tr); */
} }
} }

View File

@ -1,8 +1,8 @@
trap -- 'echo Exiting' EXIT trap -- 'echo Exiting' EXIT
trap -- 'echo WINCH!' SIGWINCH trap -- 'echo WINCH!' WINCH
trap -- 'echo Exiting' EXIT trap -- 'echo Exiting' EXIT
trap -- 'echo WINCH!' SIGWINCH trap -- 'echo WINCH!' WINCH
trap -- 'echo Exiting' EXIT trap -- 'echo Exiting' EXIT
trap -- 'echo WINCH!' SIGWINCH trap -- 'echo WINCH!' WINCH
Done Done
Exiting Exiting

View File

@ -1,20 +1,20 @@
got signal got signal
trap -- 'echo got signal' SIGUSR1 trap -- 'echo got signal' USR1
sent 1 signal sent 1 signal
got signal got signal
wait interrupted wait interrupted
trap -- 'echo got signal' SIGUSR1 trap -- 'echo got signal' USR1
sent 2 signal sent 2 signal
got signal got signal
wait interrupted wait interrupted
trap -- 'echo got signal' SIGUSR1 trap -- 'echo got signal' USR1
sent 3 signal sent 3 signal
got signal got signal
wait interrupted wait interrupted
trap -- 'echo got signal' SIGUSR1 trap -- 'echo got signal' USR1
sent 4 signal sent 4 signal
got signal got signal
wait interrupted wait interrupted
trap -- 'echo got signal' SIGUSR1 trap -- 'echo got signal' USR1
sent 5 signal sent 5 signal
sleep completed sleep completed

View File

@ -7111,8 +7111,11 @@ static int FAST_FUNC builtin_trap(char **argv)
if (G.traps[i]) { if (G.traps[i]) {
printf("trap -- "); printf("trap -- ");
print_escaped(G.traps[i]); print_escaped(G.traps[i]);
/* bash compat: it says SIGxxx, not just xxx */ /* note: bash adds "SIG", but only if invoked
printf(" %s%s\n", i == 0 ? "" : "SIG", get_signame(i)); * as "bash". If called as "sh", or if set -o posix,
* then it prints short signal names.
* We are printing short names: */
printf(" %s\n", get_signame(i));
} }
} }
/*fflush(stdout); - done after each builtin anyway */ /*fflush(stdout); - done after each builtin anyway */

View File

@ -1,8 +1,8 @@
trap -- 'echo Exiting' EXIT trap -- 'echo Exiting' EXIT
trap -- 'echo WINCH!' SIGWINCH trap -- 'echo WINCH!' WINCH
trap -- 'echo Exiting' EXIT trap -- 'echo Exiting' EXIT
trap -- 'echo WINCH!' SIGWINCH trap -- 'echo WINCH!' WINCH
trap -- 'echo Exiting' EXIT trap -- 'echo Exiting' EXIT
trap -- 'echo WINCH!' SIGWINCH trap -- 'echo WINCH!' WINCH
Done Done
Exiting Exiting

View File

@ -2,13 +2,13 @@ ___
___ ___
___ ___
trap -- 'a' EXIT trap -- 'a' EXIT
trap -- 'a' SIGINT trap -- 'a' INT
trap -- 'a' SIGUSR1 trap -- 'a' USR1
trap -- 'a' SIGUSR2 trap -- 'a' USR2
___ ___
___ ___
trap -- 'a' SIGUSR1 trap -- 'a' USR1
trap -- 'a' SIGUSR2 trap -- 'a' USR2
___ ___
___ ___
trap -- 'a' SIGUSR2 trap -- 'a' USR2