shell/ash_test/ash-signals/usage.right+14 -0
| @@ -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 |
shell/ash_test/ash-signals/usage.tests+23 -0
| @@ -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 |
shell/hush.c+2 -2
| @@ -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? |
shell/hush_test/hush-misc/sig_exitcode.right+2 -2
| @@ -1,5 +1,5 @@ |
| - | KILL |
| + | Killed |
| 137:137 |
| - | KILL |
| + | Killed |
| 0:0 |
| Done |
shell/hush_test/hush-signals/catch.right+1 -1
| @@ -2,4 +2,4 @@ sending USR2 |
| caught |
| sending USR2 |
| sending USR2 |
| - | USR2 |
| + | User defined signal 2 |
shell/hush_test/hush-signals/signal1.right+20 -0
| @@ -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 |
shell/hush_test/hush-signals/signal1.tests+28 -0
| @@ -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 |
shell/hush_test/hush-signals/signal_read2.right+1 -1
| @@ -1,2 +1,2 @@ |
| - | HUP |
| + | Hangup |
| Done:129 |
shell/hush_test/hush-signals/subshell.right+1 -1
| @@ -17,5 +17,5 @@ Ok |
| trap -- '' HUP |
| trap -- '' QUIT |
| trap -- '' SYS |
| - | TERM |
| + | Terminated |
| Done |