changeset 13282:20adf2052520

init.sh: ensure a more reliable exit status when exiting via trap * tests/init.sh (setup_): Don't rely on $? in signal handler. Inspired by patches from Dmitry V. Levin. Also trap on signal 3 (SIGQUIT).
author Jim Meyering <meyering@redhat.com>
date Wed, 28 Apr 2010 09:51:15 +0200
parents 2304ea739169
children 7346ad38d6ae
files ChangeLog tests/init.sh
diffstat 2 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-04-28  Jim Meyering  <meyering@redhat.com>
+
+	init.sh: ensure a more reliable exit status when exiting via trap
+	* tests/init.sh (setup_): Don't rely on $? in signal handler.
+	Inspired by patches from Dmitry V. Levin.
+	Also trap on signal 3 (SIGQUIT).
+
 2010-04-27  Bruno Haible  <bruno@clisp.org>
 
 	Update doc about utimes().
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -225,10 +225,12 @@
     || fail_ "failed to create temporary directory in $initial_cwd_"
   cd "$test_dir_"
 
-  # This pair of trap statements ensures that the temporary directory,
-  # $test_dir_, is removed upon exit as well as upon catchable signal.
+  # These trap statements ensure that the temporary directory, $test_dir_,
+  # is removed upon exit as well as upon receipt of any of the listed signals.
   trap remove_tmp_ 0
-  trap 'Exit $?' 1 2 13 15
+  for sig_ in 1 2 3 13 15; do
+    eval "trap 'Exit $(expr $sig_ + 128)' $sig_"
+  done
 }
 
 # Create a temporary directory, much like mktemp -d does.