← Commit list

e16f7eb59

Denys Vlasenko
Denys Vlasenko
2020-10-24
SUCCESS Duration: 150s

Subject

hush: output bash-compat killing signal names

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

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