From e74aaf93854b9453b9949954aec77710b257d8b6 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 27 Sep 2009 02:05:45 +0200 Subject: [PATCH] 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 --- shell/ash.c | 9 ++++++--- shell/ash_test/ash-signals/savetrap.right | 6 +++--- shell/ash_test/ash-signals/signal1.right | 10 +++++----- shell/hush.c | 7 +++++-- shell/hush_test/hush-trap/savetrap.right | 6 +++--- shell/hush_test/hush-trap/usage.right | 12 ++++++------ 6 files changed, 28 insertions(+), 22 deletions(-) diff --git a/shell/ash.c b/shell/ash.c index c909cae2b..d7355ce81 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -12267,13 +12267,16 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) for (signo = 0; signo < NSIG; signo++) { char *tr = trap_ptr[signo]; 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), - (signo == 0 ? "" : "SIG"), get_signame(signo)); /* trap_ptr != trap only if we are in special-cased `trap` code. * In this case, we will exit very soon, no need to free(). */ - /* if (trap_ptr != trap) */ + /* if (trap_ptr != trap && tp[0]) */ /* free(tr); */ } } diff --git a/shell/ash_test/ash-signals/savetrap.right b/shell/ash_test/ash-signals/savetrap.right index 9cfd7a56c..a59225be3 100644 --- a/shell/ash_test/ash-signals/savetrap.right +++ b/shell/ash_test/ash-signals/savetrap.right @@ -1,8 +1,8 @@ trap -- 'echo Exiting' EXIT -trap -- 'echo WINCH!' SIGWINCH +trap -- 'echo WINCH!' WINCH trap -- 'echo Exiting' EXIT -trap -- 'echo WINCH!' SIGWINCH +trap -- 'echo WINCH!' WINCH trap -- 'echo Exiting' EXIT -trap -- 'echo WINCH!' SIGWINCH +trap -- 'echo WINCH!' WINCH Done Exiting diff --git a/shell/ash_test/ash-signals/signal1.right b/shell/ash_test/ash-signals/signal1.right index beb0a988e..cf403ac62 100644 --- a/shell/ash_test/ash-signals/signal1.right +++ b/shell/ash_test/ash-signals/signal1.right @@ -1,20 +1,20 @@ got signal -trap -- 'echo got signal' SIGUSR1 +trap -- 'echo got signal' USR1 sent 1 signal got signal wait interrupted -trap -- 'echo got signal' SIGUSR1 +trap -- 'echo got signal' USR1 sent 2 signal got signal wait interrupted -trap -- 'echo got signal' SIGUSR1 +trap -- 'echo got signal' USR1 sent 3 signal got signal wait interrupted -trap -- 'echo got signal' SIGUSR1 +trap -- 'echo got signal' USR1 sent 4 signal got signal wait interrupted -trap -- 'echo got signal' SIGUSR1 +trap -- 'echo got signal' USR1 sent 5 signal sleep completed diff --git a/shell/hush.c b/shell/hush.c index d75b0da7e..b515eabd2 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -7111,8 +7111,11 @@ static int FAST_FUNC builtin_trap(char **argv) if (G.traps[i]) { printf("trap -- "); print_escaped(G.traps[i]); - /* bash compat: it says SIGxxx, not just xxx */ - printf(" %s%s\n", i == 0 ? "" : "SIG", get_signame(i)); + /* 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: */ + printf(" %s\n", get_signame(i)); } } /*fflush(stdout); - done after each builtin anyway */ diff --git a/shell/hush_test/hush-trap/savetrap.right b/shell/hush_test/hush-trap/savetrap.right index 9cfd7a56c..a59225be3 100644 --- a/shell/hush_test/hush-trap/savetrap.right +++ b/shell/hush_test/hush-trap/savetrap.right @@ -1,8 +1,8 @@ trap -- 'echo Exiting' EXIT -trap -- 'echo WINCH!' SIGWINCH +trap -- 'echo WINCH!' WINCH trap -- 'echo Exiting' EXIT -trap -- 'echo WINCH!' SIGWINCH +trap -- 'echo WINCH!' WINCH trap -- 'echo Exiting' EXIT -trap -- 'echo WINCH!' SIGWINCH +trap -- 'echo WINCH!' WINCH Done Exiting diff --git a/shell/hush_test/hush-trap/usage.right b/shell/hush_test/hush-trap/usage.right index 5b90222f8..c0dbd6c3c 100644 --- a/shell/hush_test/hush-trap/usage.right +++ b/shell/hush_test/hush-trap/usage.right @@ -2,13 +2,13 @@ ___ ___ ___ trap -- 'a' EXIT -trap -- 'a' SIGINT -trap -- 'a' SIGUSR1 -trap -- 'a' SIGUSR2 +trap -- 'a' INT +trap -- 'a' USR1 +trap -- 'a' USR2 ___ ___ -trap -- 'a' SIGUSR1 -trap -- 'a' SIGUSR2 +trap -- 'a' USR1 +trap -- 'a' USR2 ___ ___ -trap -- 'a' SIGUSR2 +trap -- 'a' USR2