From eea5092d161a8a58a1165a466581b9524a99b7c0 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 18 Feb 2022 15:03:00 -0800 Subject: [PATCH] Fix unwanted globbing of sed script Problem reported by mirabilos via Eric Blake in: https://www.austingroupbugs.net/view.php?id=1558 https://lists.gnu.org/r/bug-autoconf/2022-02/msg00003.html * lib/m4sugar/m4sh.m4 (_AS_TR_SH_PREPARE): Define as_sed_sh as the sed script. All uses of as_tr_sh changed. Define as_tr_sh as before, but only for compatibility with scripts that mistakenly use as_tr_sh directly. (AS_TR_CPP_PREPARE): Likewise for as_sed_cpp and as_tr_cpp. --- lib/m4sugar/m4sh.m4 | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4 index 6909012e..b2075315 100644 --- a/lib/m4sugar/m4sh.m4 +++ b/lib/m4sugar/m4sh.m4 @@ -1863,7 +1863,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits m4_defun([_AS_TR_SH_PREPARE], [AS_REQUIRE([_AS_CR_PREPARE])]dnl [# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[[^_$as_cr_alnum]]%_%g'" +as_sed_sh="y%*+%pp%;s%[[^_$as_cr_alnum]]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated ]) @@ -1871,7 +1872,7 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[[^_$as_cr_alnum]]%_%g'" # -------------------- # Transform EXPRESSION into a valid shell variable name. # sh/m4 polymorphic. -# Be sure to update the definition of '$as_tr_sh' if you change this. +# Be sure to update the definition of '$as_sed_sh' if you change this. # # AS_LITERAL_IF guarantees that a literal does not have any nested quotes, # once $1 is expanded. m4_translit silently uses only the first occurrence @@ -1895,7 +1896,7 @@ m4_define([_AS_TR_SH_LITERAL], [pp[]]]m4_dquote(m4_for(,1,255,,[[_]]))[)]) m4_define([_AS_TR_SH_INDIR], -[`AS_ECHO(["_AS_ESCAPE([[$1]], [`], [\])"]) | $as_tr_sh`]) +[`AS_ECHO(["_AS_ESCAPE([[$1]], [`], [\])"]) | sed "$as_sed_sh"`]) # _AS_TR_CPP_PREPARE @@ -1903,7 +1904,8 @@ m4_define([_AS_TR_SH_INDIR], m4_defun([_AS_TR_CPP_PREPARE], [AS_REQUIRE([_AS_CR_PREPARE])]dnl [# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[[^_$as_cr_alnum]]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[[^_$as_cr_alnum]]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated ]) @@ -1911,7 +1913,7 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[[^_$as_cr_alnum]]%_%g # --------------------- # Map EXPRESSION to an upper case string which is valid as rhs for a # '#define'. sh/m4 polymorphic. Be sure to update the definition -# of '$as_tr_cpp' if you change this. +# of '$as_sed_cpp' if you change this. # # See implementation comments in AS_TR_SH. m4_defun_init([AS_TR_CPP], @@ -1928,7 +1930,7 @@ m4_define([_AS_TR_CPP_LITERAL], [P[]]]m4_dquote(m4_defn([m4_cr_LETTERS])m4_for(,1,255,,[[_]]))[)]) m4_define([_AS_TR_CPP_INDIR], -[`AS_ECHO(["_AS_ESCAPE([[$1]], [`], [\])"]) | $as_tr_cpp`]) +[`AS_ECHO(["_AS_ESCAPE([[$1]], [`], [\])"]) | sed "$as_sed_cpp"`]) # _AS_TR_PREPARE