hush: output bash-compat killing signal names
This significantly syncronises ash-signals and hush-signals tests. function old new delta process_wait_result 449 450 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b65d6cb00f
commit
e16f7eb596
14
shell/ash_test/ash-signals/usage.right
Normal file
14
shell/ash_test/ash-signals/usage.right
Normal file
@ -0,0 +1,14 @@
|
||||
___
|
||||
___
|
||||
___
|
||||
trap -- 'a' EXIT
|
||||
trap -- 'a' INT
|
||||
trap -- 'a' USR1
|
||||
trap -- 'a' USR2
|
||||
___
|
||||
___
|
||||
trap -- 'a' USR1
|
||||
trap -- 'a' USR2
|
||||
___
|
||||
___
|
||||
trap -- 'a' USR2
|
23
shell/ash_test/ash-signals/usage.tests
Executable file
23
shell/ash_test/ash-signals/usage.tests
Executable file
@ -0,0 +1,23 @@
|
||||
# no output -- default state
|
||||
echo ___
|
||||
trap
|
||||
|
||||
# assign some traps
|
||||
echo ___
|
||||
trap "a" EXIT INT USR1 USR2
|
||||
|
||||
# show them all
|
||||
echo ___
|
||||
trap
|
||||
|
||||
# clear one
|
||||
echo ___
|
||||
trap 0 INT
|
||||
echo ___
|
||||
trap
|
||||
|
||||
# clear another
|
||||
echo ___
|
||||
trap "-" USR1
|
||||
echo ___
|
||||
trap
|
@ -8704,8 +8704,8 @@ static int process_wait_result(struct pipe *fg_pipe, pid_t childpid, int status)
|
||||
*/
|
||||
&& i == fg_pipe->num_cmds-1
|
||||
) {
|
||||
/* TODO: use strsignal() instead for bash compat? but that's bloat... */
|
||||
puts(sig == SIGINT || sig == SIGPIPE ? "" : get_signame(sig));
|
||||
/* strsignal() is for bash compat. ~600 bloat versus bbox's get_signame() */
|
||||
puts(sig == SIGINT || sig == SIGPIPE ? "" : strsignal(sig));
|
||||
}
|
||||
/* TODO: if (WCOREDUMP(status)) + " (core dumped)"; */
|
||||
/* TODO: MIPS has 128 sigs (1..128), what if sig==128 here?
|
||||
|
@ -1,5 +1,5 @@
|
||||
KILL
|
||||
Killed
|
||||
137:137
|
||||
KILL
|
||||
Killed
|
||||
0:0
|
||||
Done
|
||||
|
@ -2,4 +2,4 @@ sending USR2
|
||||
caught
|
||||
sending USR2
|
||||
sending USR2
|
||||
USR2
|
||||
User defined signal 2
|
||||
|
20
shell/hush_test/hush-signals/signal1.right
Normal file
20
shell/hush_test/hush-signals/signal1.right
Normal file
@ -0,0 +1,20 @@
|
||||
got signal
|
||||
trap -- 'echo got signal' USR1
|
||||
sent 1 signal
|
||||
got signal
|
||||
wait interrupted
|
||||
trap -- 'echo got signal' USR1
|
||||
sent 2 signal
|
||||
got signal
|
||||
wait interrupted
|
||||
trap -- 'echo got signal' USR1
|
||||
sent 3 signal
|
||||
got signal
|
||||
wait interrupted
|
||||
trap -- 'echo got signal' USR1
|
||||
sent 4 signal
|
||||
got signal
|
||||
wait interrupted
|
||||
trap -- 'echo got signal' USR1
|
||||
sent 5 signal
|
||||
sleep completed
|
28
shell/hush_test/hush-signals/signal1.tests
Executable file
28
shell/hush_test/hush-signals/signal1.tests
Executable file
@ -0,0 +1,28 @@
|
||||
trap "echo got signal" USR1
|
||||
|
||||
for try in 1 2 3 4 5; do
|
||||
kill -USR1 $$
|
||||
sleep 0.2
|
||||
echo "sent $try signal"
|
||||
done &
|
||||
|
||||
# Ensure "wait" has something to wait for
|
||||
sleep 2 &
|
||||
|
||||
# Ensure we do not execute "trap" below before "kill -USR1" above
|
||||
# (was getting failure on loaded machine without this)
|
||||
sleep 0.1
|
||||
|
||||
sleeping=true
|
||||
while $sleeping; do
|
||||
trap
|
||||
if wait %%; then
|
||||
echo "sleep completed"
|
||||
sleeping=false
|
||||
elif [ $? = 127 ]; then
|
||||
echo "BUG: no processes to wait for?!"
|
||||
sleeping=false
|
||||
else
|
||||
echo "wait interrupted"
|
||||
fi
|
||||
done
|
@ -1,2 +1,2 @@
|
||||
HUP
|
||||
Hangup
|
||||
Done:129
|
||||
|
@ -17,5 +17,5 @@ Ok
|
||||
trap -- '' HUP
|
||||
trap -- '' QUIT
|
||||
trap -- '' SYS
|
||||
TERM
|
||||
Terminated
|
||||
Done
|
||||
|
Loading…
Reference in New Issue
Block a user