]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
Make AS_TR_SH and AS_TR_CPP similar.
authorEric Blake <eblake@redhat.com>
Fri, 2 Jul 2010 21:35:45 +0000 (15:35 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 2 Jul 2010 21:50:39 +0000 (15:50 -0600)
* lib/m4sugar/m4sh.m4 (_AS_TR_CPP_LITERAL): Avoid underquoting.
(_AS_TR_CPP_INDIR): Handle all polymorphic variables.
* tests/m4sh.at (AS@&t@_TR_SH and AS@&t@_TR_CPP): New test.
* NEWS: Document the fix.
Reported by Bruno Haible.

Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
NEWS
lib/m4sugar/m4sh.m4
tests/m4sh.at

index 4c31e0edd7fd62523ad8e5ab4bdeac0c725310a7..00c9096165b58928a4e1626a2170a14bb39047c1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2010-07-02  Eric Blake  <eblake@redhat.com>
 
+       Make AS_TR_SH and AS_TR_CPP similar.
+       * lib/m4sugar/m4sh.m4 (_AS_TR_CPP_LITERAL): Avoid underquoting.
+       (_AS_TR_CPP_INDIR): Handle all polymorphic variables.
+       * tests/m4sh.at (AS@&t@_TR_SH and AS@&t@_TR_CPP): New test.
+       * NEWS: Document the fix.
+       Reported by Bruno Haible.
+
        Reduce startup cost of autotest.
        * lib/autotest/general.m4 (_AT_FINISH) <banners>: Rather than
        doing a recursive find, limit ourselves to top ChangeLog only.
diff --git a/NEWS b/NEWS
index cb1ffbd29314872d3d4681bbee3bd3ca72b3dc1a..53f34c0f4de8c17f6465d9014b03287655ee4488 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -43,6 +43,8 @@ GNU Autoconf NEWS - User visible changes.
    Furthermore, a new macro, AS_LITERAL_WORD_IF, adds an additional
    level of checking that no whitespace occurs in literals.
 
+** The macros AS_TR_SH and AS_TR_CPP no longer expand their results.
+
 ** The following macros are now documented:
    AS_BOX
 
index 2a4faf37b0d11573ca41c1b26c1707b571ab5753..e1d03d97907ffca8f88bdb577a02444326d67333 100644 (file)
@@ -1816,12 +1816,12 @@ m4_define([_AS_TR_CPP],
 ])([], [$0_INDIR], [$0_LITERAL])([$1])])
 
 m4_define([_AS_TR_CPP_LITERAL],
-[m4_translit([$1],
+[m4_translit([[$1]],
   [*[]]]m4_dquote(m4_defn([m4_cr_letters])m4_defn([m4_cr_not_symbols2]))[,
   [P[]]]m4_dquote(m4_defn([m4_cr_LETTERS])m4_for(,1,255,,[[_]]))[)])
 
 m4_define([_AS_TR_CPP_INDIR],
-[`AS_ECHO(["$1"]) | $as_tr_cpp`])
+[`AS_ECHO(["_AS_ESCAPE([[$1]], [`], [\])"]) | $as_tr_cpp`])
 
 
 # _AS_TR_PREPARE
index f5ea7e2037c2eed702e1510c50ffc7b92e664025..96a2acb68e11f54590f2248850c10bf362c8f755 100644 (file)
@@ -1169,6 +1169,83 @@ ok 16
 AT_CLEANUP
 
 
+## --------------------- ##
+## AS_TR_SH, AS_TR_CPP.  ##
+## --------------------- ##
+
+AT_SETUP([AS@&t@_TR_SH and AS@&t@_TR_CPP])
+
+AT_DATA_M4SH([script.as], [[dnl
+AS_INIT
+m4_define([abc], [hI])m4_define([ABC], [Hi])
+m4_define([hi], [oops])m4_define([HI], [OOPS])
+echo AS_TR_SH(abc) AS_TR_SH(aBc) AS_TR_SH(ABC)
+echo AS_TR_SH([abc]) AS_TR_SH([aBc]) AS_TR_SH([ABC])
+echo AS_TR_SH([[abc]]) AS_TR_SH([[aBc]]) AS_TR_SH([[ABC]])
+echo AS_TR_CPP(abc) AS_TR_CPP(aBc) AS_TR_CPP(ABC)
+echo AS_TR_CPP([abc]) AS_TR_CPP([aBc]) AS_TR_CPP([ABC])
+echo AS_TR_CPP([[abc]]) AS_TR_CPP([[aBc]]) AS_TR_CPP([[ABC]])
+echo ===
+[var=abc vAr=aBc VAR=ABC]
+echo AS_TR_SH($var) AS_TR_SH($vAr) AS_TR_SH($VAR)
+echo AS_TR_SH([$var]) AS_TR_SH([$vAr]) AS_TR_SH([$VAR])
+echo AS_TR_SH([[$var]]) AS_TR_SH([[$vAr]]) AS_TR_SH([[$VAR]])
+echo AS_TR_CPP($var) AS_TR_CPP($vAr) AS_TR_CPP($VAR)
+echo AS_TR_CPP([$var]) AS_TR_CPP([$vAr]) AS_TR_CPP([$VAR])
+echo AS_TR_CPP([[$var]]) AS_TR_CPP([[$vAr]]) AS_TR_CPP([[$VAR]])
+echo ===
+var=abc vAr=aBc VAR=ABC
+echo AS_TR_SH(`echo abc`) AS_TR_SH(`echo aBc`) AS_TR_SH(`echo ABC`)
+echo AS_TR_SH([`echo abc`]) AS_TR_SH([`echo aBc`]) AS_TR_SH([`echo ABC`])
+echo AS_TR_SH([[`echo abc`]]) AS_TR_SH([[`echo aBc`]]) AS_TR_SH([[`echo ABC`]])
+echo AS_TR_CPP(`echo abc`) AS_TR_CPP(`echo aBc`) AS_TR_CPP(`echo ABC`)
+echo AS_TR_CPP([`echo abc`]) AS_TR_CPP([`echo aBc`]) AS_TR_CPP([`echo ABC`])
+echo AS_TR_CPP([[`echo abc`]]) AS_TR_CPP([[`echo aBc`]]) AS_TR_CPP([[`echo ABC`]])
+echo ===
+echo AS_TR_SH([a.b/c+*-])
+echo AS_TR_CPP([a.b/c+*-])
+var=a.b/c+*-
+echo AS_TR_SH([$var])
+echo AS_TR_CPP([$var])
+m4_define([macro], [a.b/c+*-])
+echo AS_TR_SH([macro])
+echo AS_TR_CPP([macro])
+]])
+
+AT_CHECK_M4SH
+AT_CHECK([$CONFIG_SHELL ./script], [],
+[[hI aBc Hi
+hI aBc Hi
+abc aBc ABC
+HI ABC HI
+HI ABC HI
+ABC ABC ABC
+===
+abc aBc ABC
+abc aBc ABC
+abc aBc ABC
+ABC ABC ABC
+ABC ABC ABC
+ABC ABC ABC
+===
+hI aBc Hi
+hI aBc Hi
+abc aBc ABC
+HI ABC HI
+HI ABC HI
+ABC ABC ABC
+===
+a_b_cpp_
+A_B_C_P_
+a_b_cpp_
+A_B_C_P_
+a_b_cpp_
+A_B_C_P_
+]])
+
+AT_CLEANUP
+
+
 ## ---------- ##
 ## AS_VAR_*.  ##
 ## ---------- ##