[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI Re: 12AT_CHECK_NOESCAPE.diff
From: |
Derek Robert Price |
Subject: |
FYI Re: 12AT_CHECK_NOESCAPE.diff |
Date: |
Tue, 12 Aug 2003 15:03:49 -0400 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 |
Akim Demaille wrote:
| @@ -919,6 +921,16 @@
| # ( $at_traceon; $1 ) >at-stdout 2>at-stder1
| #
| m4_define([AT_CHECK],
| +[AT_CHECK_NOESCAPE([$1],[$2],AS_ESCAPE([$3]),AS_ESCAPE([$4]),[$5],[$6])])
This patch is wrong. You should *never* pass unquoted macro calls as
macro arguments. You must always have [...], [...], [...].
| @@ -933,14 +945,14 @@
| ignore, [(echo stderr:; cat $at_stderr) >&5],
| experr, [$at_diff experr $at_stderr >&5 || at_failed=:],
| [], [$at_diff $at_devnull $at_stderr >&5 || at_failed=:],
| - [echo >>$at_stderr; echo "AS_ESCAPE([$4])" | $at_diff - $at_stderr
>&5 || at_failed=:])
| + [echo >>$at_stderr; echo "[$4]" | $at_diff - $at_stderr >&5 ||
at_failed=:])
| dnl Check stdout.
| m4_case([$3],
| stdout, [(echo stdout:; tee stdout <$at_stdout) >&5],
| ignore, [(echo stdout:; cat $at_stdout) >&5],
| expout, [$at_diff expout $at_stdout >&5 || at_failed=:],
| [], [$at_diff $at_devnull $at_stdout >&5 || at_failed=:],
| - [echo >>$at_stdout; echo "AS_ESCAPE([$3])" | $at_diff - $at_stdout
>&5 || at_failed=:])
| + [echo >>$at_stdout; echo "[$3]" | $at_diff - $at_stdout >&5 ||
at_failed=:])
This is wrong: the $3 must not be quoted here. Please, swap your
quotes.
Okay. I think I answered these concerns. I had to move the core
functionality out of AT_CHECK_NOESCAPE into an _AT_CHECK function since
once I started quoting the call to AS_ESCAPE the m4_case statement that
checked for `ignore' started failing:
Index: ChangeLog
2003-08-12 Derek Price <address@hidden>
* lib/autotest/general.m4 (AT_CHECK): Use new _AT_CHECK API.
(AT_CHECK_NOESCAPE): Move core functionality to...
(_AT_CHECK): ...this new macro.
Index: lib/autotest/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autotest/general.m4,v
retrieving revision 1.148
diff -u -r1.148 general.m4
--- lib/autotest/general.m4 7 Aug 2003 17:47:48 -0000 1.148
+++ lib/autotest/general.m4 12 Aug 2003 18:57:02 -0000
@@ -1042,15 +1042,24 @@
# This may cause spurious failures when the test suite is run with `-x'.
#
m4_define([AT_CHECK],
-[AT_CHECK_NOESCAPE([$1],[$2],AS_ESCAPE([$3]),AS_ESCAPE([$4]),[$5],[$6])])
-
-
+[_AT_CHECK([$1],[$2],[$3],[$4],[$5],[$6],1)])
# AT_CHECK_NOESCAPE(COMMANDS, [STATUS = 0], STDOUT, STDERR,
# [RUN-IF-FAIL], [RUN-IF-PASS])
# ---------------------------------------------------------
# Like AT_CHECK, but do not AS_ESCAPE shell metacharacters in the STDOUT
# and STDERR arguments before running the comparison.
+m4_define([AT_CHECK_NOESCAPE],
+[_AT_CHECK([$1],[$2],[$3],[$4],[$5],[$6])])
+
+
+
+# _AT_CHECK(COMMANDS, [STATUS = 0], STDOUT, STDERR,
+# [RUN-IF-FAIL], [RUN-IF-PASS], SHELL_ESCAPE_IO)
+# ---------------------------------------------------------
+# Worker for AT_CHECK & AT_CHECK_NOESCAPE. The final SHELL-ESCAPE-IO
+# argument determines whether the STDOUT & STDERR arguments will be escaped or
+# not.
#
#
# Implementation Details
@@ -1075,7 +1084,7 @@
#
# ( $at_traceon; $1 ) >at-stdout 2>at-stder1
#
-m4_define([AT_CHECK_NOESCAPE],
+m4_define([_AT_CHECK],
[$at_traceoff
echo "AT_LINE: AS_ESCAPE([$1])"
echo AT_LINE >$at_check_line_file
@@ -1090,14 +1099,14 @@
ignore, [echo stderr:; cat $at_stderr],
experr, [$at_diff experr $at_stderr || at_failed=:],
[], [$at_diff $at_devnull $at_stderr || at_failed=:],
- [echo >>$at_stderr; echo "$4" | $at_diff - $at_stderr || at_failed=:])
+ [echo >>$at_stderr; echo "m4_ifval([$7],[AS_ESCAPE([$4])],[$4])" |
$at_diff - $at_stderr || at_failed=:])
dnl Check stdout.
m4_case([$3],
stdout, [echo stdout:; tee stdout <$at_stdout],
ignore, [echo stdout:; cat $at_stdout],
expout, [$at_diff expout $at_stdout || at_failed=:],
[], [$at_diff $at_devnull $at_stdout || at_failed=:],
- [echo >>$at_stdout; echo "$3" | $at_diff - $at_stdout || at_failed=:])
+ [echo >>$at_stdout; echo "m4_ifval([$7],[AS_ESCAPE([$3])],[$3])" |
$at_diff - $at_stdout || at_failed=:])
dnl Check exit val. Don't `skip' if we are precisely checking $? = 77.
case $at_status in
m4_case([$2],
Derek
--
*8^)
Email: address@hidden
Get CVS support at <http://ximbiot.com>!
--
"Calm down. It's only ones and zeros."