ash,hush: make trap output short signal names, without SIG prefix
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 27 Sep 2009 00:05:45 +0000 (02:05 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 27 Sep 2009 00:05:45 +0000 (02:05 +0200)
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>
shell/ash.c
shell/ash_test/ash-signals/savetrap.right
shell/ash_test/ash-signals/signal1.right
shell/hush.c
shell/hush_test/hush-trap/savetrap.right
shell/hush_test/hush-trap/usage.right

index c909cae2b2ed5fa6981e6a289777cdc0411bd273..d7355ce81acfd3ca6a80aa6d3d6ded25035afa16 100644 (file)
@@ -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); */
                        }
                }
index 9cfd7a56c25af840eebc8f5cd66327ca6083a36d..a59225be3a1320984ffb68e40c37c30f003aec21 100644 (file)
@@ -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
index beb0a988e7aa3ad2923e7ab8aa812da0e51256b7..cf403ac6202cfe0408be1b1fe9e10f68b2f30151 100644 (file)
@@ -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
index d75b0da7e467e8f7bd204850ffa41081e4a41ba6..b515eabd2a485f2c1c6dae41ea296ff456243624 100644 (file)
@@ -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 */
index 9cfd7a56c25af840eebc8f5cd66327ca6083a36d..a59225be3a1320984ffb68e40c37c30f003aec21 100644 (file)
@@ -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
index 5b90222f878fe71746f66e4dd72269ebcf946fe9..c0dbd6c3c82533938cd122088e874d5eff01c769 100644 (file)
@@ -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