]> granicus.if.org Git - postgresql/commitdiff
Fix problems with certain shells (e.g., FreeBSD, Cygwin) clearing the
authorPeter Eisentraut <peter_e@gmx.net>
Sun, 12 Dec 2004 15:34:15 +0000 (15:34 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Sun, 12 Dec 2004 15:34:15 +0000 (15:34 +0000)
exit status in multiline traps.

src/test/regress/pg_regress.sh

index cf45f73ae4fc2e2fbba1123d56eaeefec6053a05..15d475a033da95a50edf759988b41cd89d675031 100644 (file)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# $PostgreSQL: pgsql/src/test/regress/pg_regress.sh,v 1.50 2004/11/17 18:06:04 tgl Exp $
+# $PostgreSQL: pgsql/src/test/regress/pg_regress.sh,v 1.51 2004/12/12 15:34:15 petere Exp $
 
 me=`basename $0`
 : ${TMPDIR=/tmp}
@@ -238,18 +238,20 @@ PGDATESTYLE='ISO, MDY'; export PGDATESTYLE
 # with the result of the last shell command before the `exit'.  Hence
 # we have to write `(exit x); exit' below this point.
 
-trap '
-    savestatus=$?
+exit_trap(){ 
+    savestatus=$1
     if [ -n "$postmaster_pid" ]; then
         kill -2 "$postmaster_pid"
         wait "$postmaster_pid"
         unset postmaster_pid
     fi
     rm -f "$TMPFILE" && exit $savestatus
-' 0
+}
+
+trap 'exit_trap $?' 0
 
-trap '
-    savestatus=$?
+sig_trap() {
+    savestatus=$1
     echo; echo "caught signal"
     if [ -n "$postmaster_pid" ]; then
         echo "signalling fast shutdown to postmaster with pid $postmaster_pid"
@@ -258,7 +260,9 @@ trap '
         unset postmaster_pid
     fi
     (exit $savestatus); exit
-' 1 2 13 15
+}
+
+trap 'sig_trap $?' 1 2 13 15