autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AC_INIT regression [was: AC_CHECK_SIZEOF([int *]) is error in autoconf-2


From: Eric Blake
Subject: AC_INIT regression [was: AC_CHECK_SIZEOF([int *]) is error in autoconf-2.66]
Date: Sat, 10 Jul 2010 10:28:50 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.10) Gecko/20100621 Fedora/3.0.5-1.fc13 Lightning/1.0b2pre Mnenhy/0.8.3 Thunderbird/3.0.5

On 07/10/2010 08:49 AM, Eric Blake wrote:
> It would still be nice to address Bruno's report about AC_INIT and valid
> version strings first.
> 
> In thinking about that, would it be worth adding a new macro
> AS_LITERAL_HEREDOC_IF, which is comparable to AS_LITERAL_IF and
> AS_LITERAL_WORD_IF, but the difference is that it permits any strings
> that pass through unchanged in both quoted and unquoted heredocs?  Then,
> instead of AS_LITERAL_IF, we make the version string validation of
> AC_INIT use AS_LITERAL_HEREDOC_IF use the new AS_LITERAL_HEREDOC_IF and
> that should resolve Bruno's report.
> 
> A rough implementation is that it only needs to filter out @S|@ (the
> quadrigraph for $) and $,`,\.  I've got a few minutes, let me see if I
> can propose a more formal patch for review...

Here's where I got before running out of time to actually test it with
AC_INIT:

diff --git i/lib/m4sugar/m4sh.m4 w/lib/m4sugar/m4sh.m4
index 6fbc9e1..3cc868c 100644
--- i/lib/m4sugar/m4sh.m4
+++ w/lib/m4sugar/m4sh.m4
@@ -1592,6 +1592,23 @@ m4_define([_AS_LITERAL_IF_NO], [$2])
 m4_define([AS_LITERAL_WORD_IF],
 [_AS_LITERAL_IF(m4_expand([$1]))([$4], [$3], [$2])])

+# AS_LITERAL_HEREDOC_IF(EXPRESSION, IF-LITERAL, IF-NOT-LITERAL)
+# -------------------------------------------------------------
+# Like AS_LITERAL_IF, except that a string is considered literal
+# if it results in the same output in both quoted and unquoted
+# here-documents.
+m4_define([AS_LITERAL_HEREDOC_IF],
+[_$0(m4_expand([$1]))([$2], [$3])])
+
+m4_define([_AS_LITERAL_HEREDOC_IF],
+[m4_if(m4_index([$1], address@hidden|@]), [-1],
+  [m4_if(m4_index(m4_translit([[$1]], [\`], [$]), [$]), [-1],
+    [$0_YES], [$0_NO])],
+  [$0_NO])])
+
+m4_define([_AS_LITERAL_HEREDOC_IF_YES], [$1])
+m4_define([_AS_LITERAL_HEREDOC_IF_NO], [$2])
+

 # AS_TMPDIR(PREFIX, [DIRECTORY = $TMPDIR [= /tmp]])
 # -------------------------------------------------
diff --git i/tests/m4sh.at w/tests/m4sh.at
index 2f79332..52ab4ee 100644
--- i/tests/m4sh.at
+++ w/tests/m4sh.at
@@ -1119,7 +1119,7 @@ AT_CLEANUP
 ## --------------- ##

 AT_SETUP([AS@&address@hidden)
-AT_KEYWORDS([m4sh AS@&address@hidden)
+AT_KEYWORDS([m4sh AS@&address@hidden AS@&address@hidden)

 AT_DATA_M4SH([script.as], [[dnl
 AS_INIT
@@ -1141,9 +1141,17 @@ m4_define([mac], [l``it])
 echo AS_LITERAL_IF([mac], [ERR], [ok]) 13
 echo AS_LITERAL_IF([mac], [ERR1], [ok], [ERR2]) 14
 echo AS_LITERAL_IF([   a ][
-b], [ok], [ok]) 15
+b], [ok], [ERR]) 15
 echo AS_LITERAL_WORD_IF([      a ][
 b], [ERR], [ok]) 16
+echo AS_LITERAL_HEREDOC_IF([   a ][
+b], [ok], [ERR]) 17
+echo AS_LITERAL_IF([(a)], [ERR], [ok]) 18
+echo AS_LITERAL_WORD_IF([(a)], [ERR], [ok]) 19
+echo AS_LITERAL_HEREDOC_IF([(a)], [ok], [ERR]) 20
+echo AS_LITERAL_IF(address@hidden|@a], [ERR], [ok]) 21
+echo AS_LITERAL_WORD_IF(address@hidden|@a], [ERR], [ok]) 22
+echo AS_LITERAL_HEREDOC_IF(address@hidden|@a], [ERR], [ok]) 23
 ]])

 AT_CHECK_M4SH
@@ -1164,6 +1172,13 @@ ok 13
 ok 14
 ok 15
 ok 16
+ok 17
+ok 18
+ok 19
+ok 20
+ok 21
+ok 22
+ok 23
 ]])

 AT_CLEANUP


-- 
Eric Blake   address@hidden    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]