diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-09-27 02:05:45 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-09-27 02:05:45 +0200 |
commit | e74aaf93854b9453b9949954aec77710b257d8b6 (patch) | |
tree | 0be4c4457b9567427706871bfb62fafa296eca19 /shell | |
parent | 6c750f15180ba51ef37c6cfa381b52e6b05d55aa (diff) | |
download | busybox-w32-e74aaf93854b9453b9949954aec77710b257d8b6.tar.gz busybox-w32-e74aaf93854b9453b9949954aec77710b257d8b6.tar.bz2 busybox-w32-e74aaf93854b9453b9949954aec77710b257d8b6.zip |
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>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 9 | ||||
-rw-r--r-- | shell/ash_test/ash-signals/savetrap.right | 6 | ||||
-rw-r--r-- | shell/ash_test/ash-signals/signal1.right | 10 | ||||
-rw-r--r-- | shell/hush.c | 7 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/savetrap.right | 6 | ||||
-rw-r--r-- | 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) | |||
12267 | for (signo = 0; signo < NSIG; signo++) { | 12267 | for (signo = 0; signo < NSIG; signo++) { |
12268 | char *tr = trap_ptr[signo]; | 12268 | char *tr = trap_ptr[signo]; |
12269 | if (tr) { | 12269 | if (tr) { |
12270 | out1fmt("trap -- %s %s%s\n", | 12270 | /* note: bash adds "SIG", but only if invoked |
12271 | * as "bash". If called as "sh", or if set -o posix, | ||
12272 | * then it prints short signal names. | ||
12273 | * We are printing short names: */ | ||
12274 | out1fmt("trap -- %s %s\n", | ||
12271 | single_quote(tr), | 12275 | single_quote(tr), |
12272 | (signo == 0 ? "" : "SIG"), | ||
12273 | get_signame(signo)); | 12276 | get_signame(signo)); |
12274 | /* trap_ptr != trap only if we are in special-cased `trap` code. | 12277 | /* trap_ptr != trap only if we are in special-cased `trap` code. |
12275 | * In this case, we will exit very soon, no need to free(). */ | 12278 | * In this case, we will exit very soon, no need to free(). */ |
12276 | /* if (trap_ptr != trap) */ | 12279 | /* if (trap_ptr != trap && tp[0]) */ |
12277 | /* free(tr); */ | 12280 | /* free(tr); */ |
12278 | } | 12281 | } |
12279 | } | 12282 | } |
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 @@ | |||
1 | trap -- 'echo Exiting' EXIT | 1 | trap -- 'echo Exiting' EXIT |
2 | trap -- 'echo WINCH!' SIGWINCH | 2 | trap -- 'echo WINCH!' WINCH |
3 | trap -- 'echo Exiting' EXIT | 3 | trap -- 'echo Exiting' EXIT |
4 | trap -- 'echo WINCH!' SIGWINCH | 4 | trap -- 'echo WINCH!' WINCH |
5 | trap -- 'echo Exiting' EXIT | 5 | trap -- 'echo Exiting' EXIT |
6 | trap -- 'echo WINCH!' SIGWINCH | 6 | trap -- 'echo WINCH!' WINCH |
7 | Done | 7 | Done |
8 | Exiting | 8 | 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 @@ | |||
1 | got signal | 1 | got signal |
2 | trap -- 'echo got signal' SIGUSR1 | 2 | trap -- 'echo got signal' USR1 |
3 | sent 1 signal | 3 | sent 1 signal |
4 | got signal | 4 | got signal |
5 | wait interrupted | 5 | wait interrupted |
6 | trap -- 'echo got signal' SIGUSR1 | 6 | trap -- 'echo got signal' USR1 |
7 | sent 2 signal | 7 | sent 2 signal |
8 | got signal | 8 | got signal |
9 | wait interrupted | 9 | wait interrupted |
10 | trap -- 'echo got signal' SIGUSR1 | 10 | trap -- 'echo got signal' USR1 |
11 | sent 3 signal | 11 | sent 3 signal |
12 | got signal | 12 | got signal |
13 | wait interrupted | 13 | wait interrupted |
14 | trap -- 'echo got signal' SIGUSR1 | 14 | trap -- 'echo got signal' USR1 |
15 | sent 4 signal | 15 | sent 4 signal |
16 | got signal | 16 | got signal |
17 | wait interrupted | 17 | wait interrupted |
18 | trap -- 'echo got signal' SIGUSR1 | 18 | trap -- 'echo got signal' USR1 |
19 | sent 5 signal | 19 | sent 5 signal |
20 | sleep completed | 20 | 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) | |||
7111 | if (G.traps[i]) { | 7111 | if (G.traps[i]) { |
7112 | printf("trap -- "); | 7112 | printf("trap -- "); |
7113 | print_escaped(G.traps[i]); | 7113 | print_escaped(G.traps[i]); |
7114 | /* bash compat: it says SIGxxx, not just xxx */ | 7114 | /* note: bash adds "SIG", but only if invoked |
7115 | printf(" %s%s\n", i == 0 ? "" : "SIG", get_signame(i)); | 7115 | * as "bash". If called as "sh", or if set -o posix, |
7116 | * then it prints short signal names. | ||
7117 | * We are printing short names: */ | ||
7118 | printf(" %s\n", get_signame(i)); | ||
7116 | } | 7119 | } |
7117 | } | 7120 | } |
7118 | /*fflush(stdout); - done after each builtin anyway */ | 7121 | /*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 @@ | |||
1 | trap -- 'echo Exiting' EXIT | 1 | trap -- 'echo Exiting' EXIT |
2 | trap -- 'echo WINCH!' SIGWINCH | 2 | trap -- 'echo WINCH!' WINCH |
3 | trap -- 'echo Exiting' EXIT | 3 | trap -- 'echo Exiting' EXIT |
4 | trap -- 'echo WINCH!' SIGWINCH | 4 | trap -- 'echo WINCH!' WINCH |
5 | trap -- 'echo Exiting' EXIT | 5 | trap -- 'echo Exiting' EXIT |
6 | trap -- 'echo WINCH!' SIGWINCH | 6 | trap -- 'echo WINCH!' WINCH |
7 | Done | 7 | Done |
8 | Exiting | 8 | 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 @@ ___ | |||
2 | ___ | 2 | ___ |
3 | ___ | 3 | ___ |
4 | trap -- 'a' EXIT | 4 | trap -- 'a' EXIT |
5 | trap -- 'a' SIGINT | 5 | trap -- 'a' INT |
6 | trap -- 'a' SIGUSR1 | 6 | trap -- 'a' USR1 |
7 | trap -- 'a' SIGUSR2 | 7 | trap -- 'a' USR2 |
8 | ___ | 8 | ___ |
9 | ___ | 9 | ___ |
10 | trap -- 'a' SIGUSR1 | 10 | trap -- 'a' USR1 |
11 | trap -- 'a' SIGUSR2 | 11 | trap -- 'a' USR2 |
12 | ___ | 12 | ___ |
13 | ___ | 13 | ___ |
14 | trap -- 'a' SIGUSR2 | 14 | trap -- 'a' USR2 |