]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
Factor more common code out of AT_CHECK into shell function.
authorEric Blake <ebb9@byu.net>
Fri, 21 Nov 2008 04:59:23 +0000 (21:59 -0700)
committerEric Blake <ebb9@byu.net>
Fri, 21 Nov 2008 04:59:23 +0000 (21:59 -0700)
* lib/autotest/general.m4 (_AT_CHECK): Avoid echo bug if AT_LINE
starts with -.  Move preparations...
(AT_INIT) <at_fn_check_prepare_trace>
<at_fn_check_prepare_notrace, at_fn_check_prepare_dynamic>:
...into these new shell functions.
<at_fn_check_newline>: Inline into only caller.
(_AT_DECIDE_TRACEABLE): Use them to condense testsuite size.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
lib/autotest/general.m4

index 24b8091a09022f7e6a17de9dea4c2f01527a2a6f..83816884cee14206ffb7bab8f13d050f74c0ed3d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-11-20  Eric Blake  <ebb9@byu.net>
+
+       Factor more common code out of AT_CHECK into shell function.
+       * lib/autotest/general.m4 (_AT_CHECK): Avoid echo bug if AT_LINE
+       starts with -.  Move preparations...
+       (AT_INIT) <at_fn_check_prepare_trace>
+       <at_fn_check_prepare_notrace, at_fn_check_prepare_dynamic>:
+       ...into these new shell functions.
+       <at_fn_check_newline>: Inline into only caller.
+       (_AT_DECIDE_TRACEABLE): Use them to condense testsuite size.
+
 2008-11-20  Eric Blake  <ebb9@byu.net>
 
        Handle version numbers as decimal, even if they start with 0.
index c485f69a15f6eaa76f3821f2d1260e1e0064ef89..4800701de41ee13377f276fdd1ff414284f65a4d 100644 (file)
@@ -261,16 +261,43 @@ at_fn_banner ()
   AS_ECHO(["$as_nl$at_banner_text$as_nl"])
 } # at_fn_banner
 
-AS_FUNCTION_DESCRIBE([at_fn_check_newline], [COMMAND],
-[Test if COMMAND includes a newline and, if so, print a message and return
-exit code 1.])
-at_fn_check_newline ()
+AS_FUNCTION_DESCRIBE([at_fn_check_prepare_notrace], [LINE],
+[Perform AT_CHECK preparations for the command at LINE for an
+untraceable command, or when tracing is disabled.])
+at_fn_check_prepare_notrace ()
 {
-  case "$[1]" in
- *'
-'*) echo 'Not enabling shell tracing (command contains an embedded newline)'
-    return 1 ;;
- *) return 0 ;;
+  AS_ECHO(["$[1]"]) >"$at_check_line_file"
+  at_check_trace=: at_check_filter=:
+  : >"$at_stdout"; : >"$at_stderr"
+}
+
+AS_FUNCTION_DESCRIBE([at_fn_check_prepare_trace], [LINE],
+[Perform AT_CHECK preparations for the command at LINE for a traceable
+command.])
+at_fn_check_prepare_trace ()
+{
+  if test -n "$at_traceon"; then
+    AS_ECHO(["$[1]"]) >"$at_check_line_file"
+    at_check_trace=$at_traceon at_check_filter=at_fn_filter_trace
+    : >"$at_stdout"; : >"$at_stderr"
+  else
+    at_fn_check_prepare_notrace "$[1]"
+  fi
+}
+
+AS_FUNCTION_DESCRIBE([at_fn_check_prepare_dynamic], [COMMAND LINE],
+[Decide if COMMAND at LINE is traceable at runtime, and call the
+appropriate prepation function.])
+at_fn_check_prepare_dynamic ()
+{
+  case "$at_traceon:$[1]" in
+    :*$as_nl*)
+      at_fn_check_prepare_notrace "$[2]" ;;
+    *$as_nl*)
+      echo 'Not enabling shell tracing (command contains an embedded newline)'
+      at_fn_check_prepare_notrace "$[2]" ;;
+    *)
+      at_fn_check_prepare_trace "$[2]" ;;
   esac
 }
 
@@ -1841,19 +1868,17 @@ m4_cond([m4_eval(m4_index([$1], [`]) >= 0)], [1],
                [[a ${...} parameter expansion]],
        [m4_eval(m4_index([$1], m4_newline) >= 0)], [1],
                [[an embedded newline]],
-       []dnl No reason.
-))dnl
-dnl
-m4_ifval(m4_defn([at_reason]),
-[{ echo 'Not enabling shell tracing (command contains ]m4_defn([at_reason])[)'
-   false; }],
-[m4_if(m4_index([$1], [$]), [-1],
+       []))]dnl No reason.
+[m4_if(m4_index(_m4_defn([at_reason]), [a]), [0],]dnl
+dnl We know at build time that tracing COMMANDS is never safe.
+[[echo 'Not enabling shell tracing (command contains ]m4_defn([at_reason])[)'
+at_fn_check_prepare_notrace],
+       m4_index([$1], [$]), [-1],]dnl
 dnl We know at build time that tracing COMMANDS is always safe.
-[test -n "$at_traceon"],
+[[at_fn_check_prepare_trace],]dnl
 dnl COMMANDS may contain parameter expansions; expand them at runtime.
-[test -n "$at_traceon" \
-  && at_fn_check_newline "AS_ESCAPE([$1], [`\"])"])])[]dnl
-m4_popdef([at_reason])])
+[[at_fn_check_prepare_dynamic "AS_ESCAPE([$1], [`\"])"])])]dnl
+[_m4_popdef([at_reason])])
 
 
 # AT_DIFF_STDERR/AT_DIFF_STDOUT
@@ -1915,14 +1940,7 @@ m4_define([AT_DIFF_STDOUT()],
 m4_define([_AT_CHECK],
 [{ $at_traceoff
 AS_ECHO(["$at_srcdir/AT_LINE: AS_ESCAPE([[$1]])"])
-echo AT_LINE >"$at_check_line_file"
-
-if _AT_DECIDE_TRACEABLE([$1]); then
-  at_check_trace=$at_traceon at_check_filter=at_fn_filter_trace
-else
-  at_check_trace=: at_check_filter=:
-fi
-: >"$at_stdout"; : >"$at_stderr"
+_AT_DECIDE_TRACEABLE([$1]) "AS_ESCAPE(m4_dquote(AT_LINE))"
 ( $at_check_trace; [$1]
 ) >>"$at_stdout" 2>>"$at_stderr"
 at_status=$? at_failed=false