> John, thanks for the patch.  Don't hesitate to send its siblings (that
> of autoupdate, autoreconf, autoscan, autoheader and ifnames :) :) :)

Here is a patch for the siblings.  I also reverted the two `|| exit'
commands in autoconf.sh to `|| { (exit 1); exit; }' because I had one
test failure under hpux (Semantics 4).  However, the debug script was
sucessfull.  I also couldn't get it to happen again run the script
manually.  Possibly, `exit' doesn't always provide a defined exit to
the exit trap or maybe the `rm' in the exit trap failed because one
of the files in tmp was still busy.

I have run `make check' man times under i686 linux with no failures.

Dave
-- 
J. David Anglin                                  [EMAIL PROTECTED]
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)

2000-08-11  J. David Anglin  <[EMAIL PROTECTED]>

        * autoheader.sh: Fix trap (EXIT) status.
        autoreconf.sh: Likewise.
        autoupdate.sh: Likewise.
        autoconf.sh: Change `exit' to `{ (exit 1); exit; }' after m4 and
        awk commands to ensure exit state is in a defined state.

--- autoheader.sh.orig  Mon Aug  7 15:03:20 2000
+++ autoheader.sh       Fri Aug 11 16:47:24 2000
@@ -88,6 +88,7 @@
 done
 debug=false
 localdir=.
+status=0
 tmp=
 verbose=:
 warning_all=false
@@ -179,7 +180,7 @@
 $debug ||
 {
   trap 'status=$?; rm -rf $tmp && exit $status' 0
-  trap 'exit $?' 1 2 13 15
+  trap '(exit $?); exit' 1 2 13 15
 }
 
 # Create a (secure) tmp directory for tmp files.
@@ -193,7 +194,7 @@
 } ||
 {
    echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-   exit 1;
+   (exit 1); exit
 }
 
 # Preach.
@@ -216,7 +217,7 @@
     More sophisticated templates can also be produced, see the
     documentation.
 EOF
-  $warning_error && exit 1
+  $warning_error && { (exit 1); exit; }
 fi
 
 acconfigs=
@@ -229,7 +230,7 @@
   *) exec >&2
      echo "$me: invalid number of arguments."
      echo "$help"
-     exit 1 ;;
+     (exit 1); exit ;;
 esac
 
 # Set up autoconf.
@@ -248,7 +249,7 @@
 $2"' \
   --trace AC_DEFINE:'syms="$$syms $1"' \
   --trace AC_DEFINE_UNQUOTED:'syms="$$syms $1"' \
-  $infile >$tmp/traces.sh || exit 1
+  $infile >$tmp/traces.sh || { (exit 1); exit; }
 
 $verbose $me: sourcing $tmp/traces.sh >&2
 . $tmp/traces.sh
@@ -270,7 +271,8 @@
 config_h=`echo "$config_h" | sed -e 's/ .*//'`
 # Support "outfile[:infile]", defaulting infile="outfile.in".
 case "$config_h" in
-"") echo "$me: error: AC_CONFIG_HEADERS not found in $infile" >&2; exit 1 ;;
+"") echo "$me: error: AC_CONFIG_HEADERS not found in $infile" >&2
+    (exit 1); exit ;;
 *:*) config_h_in=`echo "$config_h" | sed 's/.*://'`
      config_h=`echo "$config_h" | sed 's/:.*//'` ;;
 *) config_h_in="$config_h.in" ;;
@@ -304,7 +306,6 @@
 
 # Check that all the symbols have a template.
 $verbose $me: checking completeness of the template >&2
-status=0
 # Regexp for a white space.
 w='[   ]'
 if test -n "$syms"; then
@@ -335,4 +336,4 @@
   fi
 fi
 
-exit $status
+(exit $status); exit
--- autoreconf.sh.orig  Wed Aug  9 13:06:15 2000
+++ autoreconf.sh       Fri Aug 11 16:55:59 2000
@@ -100,6 +100,7 @@
 localdir=.
 # m4dir -- local Autoconf extensions.  Typically `m4'.
 m4dir=
+status=0
 # symlink -- when --install, use symlinks instead.
 symlink=false
 verbose=:
@@ -240,7 +241,7 @@
 $debug ||
 {
   trap 'status=$?; rm -rf $tmp && exit $status' 0
-  trap 'exit $?' 1 2 13 15
+  trap '(exit $?); exit' 1 2 13 15
 }
 
 # Create a (secure) tmp directory for tmp files.
@@ -254,7 +255,7 @@
 } ||
 {
    echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-   exit 1;
+   (exit 1); exit
 }
 
 # When debugging, it is convenient that all the related temporary
@@ -273,7 +274,7 @@
 EOF
 
 # update.sh --
-# Exit 0 iff the first argument is not the most recent of all or is missing.
+# Exit 0 if the first argument is not the most recent of all or is missing.
 cat >$tmp/update.sh <<\EOF
 test -f "$1" || exit 0
 test x`ls -1dt "$@" 2>/dev/null | sed 1q` != x"$1"
--- autoupdate.sh.orig  Mon Aug  7 15:03:26 2000
+++ autoupdate.sh       Fri Aug 11 16:59:18 2000
@@ -94,6 +94,7 @@
 done
 debug=false
 localdir=.
+status=0
 tmp=
 verbose=:
 
@@ -160,7 +161,7 @@
 $debug ||
 {
   trap 'status=$?; rm -rf $tmp && exit $status' 0
-  trap 'exit $?' 1 2 13 15
+  trap '(exit $?); exit' 1 2 13 15
 }
 
 # Create a (secure) tmp directory for tmp files.
@@ -174,7 +175,7 @@
 } ||
 {
    echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-   exit 1;
+   (exit 1); exit
 }
 
 # Find the input files.
@@ -260,7 +261,7 @@
     cat >$file
   elif test ! -r "$file"; then
     echo "$me: $file: No such file or directory" >&2
-    exit 1
+    (exit 1); exit
   fi
 
   # input.m4 -- m4 program to produce the updated file.
@@ -334,7 +335,7 @@
   fi
 done
 
-exit 0
+(exit $status); exit
 
 # No shell is expected to read this, nevertheless, we still use a here
 # document so that `sh -n' succeeds.
--- autoconf.sh.orig    Fri Aug 11 12:47:47 2000
+++ autoconf.sh Fri Aug 11 18:11:17 2000
@@ -297,7 +297,8 @@
   ## --------------------------------- ##
   script)
   # M4 expansion.
-  $run_m4f -D_AC_WARNINGS=$_ac_warnings $infile >$tmp/configure || exit
+  $run_m4f -D_AC_WARNINGS=$_ac_warnings $infile >$tmp/configure ||
+    { (exit 1); exit; }
 
   # You can add your own prefixes to pattern if you want to check for
   # them too.
@@ -552,7 +553,8 @@
   do
     # The request may be several lines long, hence sed has to quit.
     trace_opt="$trace_opt -t "`echo "$trace" | sed -e 's/:.*//;q'`
-    echo "$trace" | $AWK -f $tmp/translate.awk >>$tmp/trace.m4 || exit
+    echo "$trace" | $AWK -f $tmp/translate.awk >>$tmp/trace.m4 ||
+      { (exit 1); exit; }
   done
   echo "divert(0)dnl" >>$tmp/trace.m4
 

Reply via email to