From c3d301efd6ffe1d908f5eb4f2b9df5380b8b2c3e Mon Sep 17 00:00:00 2001 From: "Gary V. Vaughan" Date: Tue, 29 Jan 2013 19:17:04 +0700 Subject: [PATCH] m4sugar: fix AS_VAR_GET regression. AS_VAR_GET expands AS_ECHO inside en evaled single quoted string, which causes the single quotes in "printf '%s\n'" to expose the %s\n to the shell which expands "\n" to simply "n" before passing it to printf. * lib/m4sugar/m4sh.m4 (AS_ECHO): Use double quotes around the format string. * doc/autoconf.texi (Limitations of Shell Builtins): Show double quotes to match AS_ECHO expansion. * NEWS: Likewise. --- NEWS | 2 +- doc/autoconf.texi | 2 +- lib/m4sugar/m4sh.m4 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 35e7b88b..16de9224 100644 --- a/NEWS +++ b/NEWS @@ -10,7 +10,7 @@ GNU Autoconf NEWS - User visible changes. ** Use of printf is now recommended instead of working around bugs in echo. Macros AS_ECHO and AS_ECHO_N now expand unconditionally to - "printf '%s\n'" and "printf %s". + 'printf "%s\n"' and 'printf %s'. ** Macros diff --git a/doc/autoconf.texi b/doc/autoconf.texi index c95d871c..8f58d4a3 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -17523,7 +17523,7 @@ only if you know that @var{foo}'s value cannot contain backslashes and cannot start with @samp{-}. Normally, @command{printf} is safer and easier to use than @command{echo} -and @command{echo -n}. Thus, you should use @command{printf '%s\n'} +and @command{echo -n}. Thus, you should use @command{printf "%s\n"} instead of @command{echo}, and similarly use @command{printf %s} instead of @command{echo -n}. diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4 index 479c2d91..53fdf8db 100644 --- a/lib/m4sugar/m4sh.m4 +++ b/lib/m4sugar/m4sh.m4 @@ -1026,7 +1026,7 @@ fi # (typically a quoted string). The bytes of WORD are output as-is, even # if it starts with "-" or contains "\". m4_defun([AS_ECHO], -[printf '%s\n' $1]) +[printf "%s\n" $1]) # AS_ECHO_N(WORD)