Re: [FYI] m4sugar: fix AS_VAR_GET regression.

Peter Rosin <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.patches
Message-ID <[email protected]>
On 2013-01-29 13:27, Gary V. Vaughan wrote:
> 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 35e7b88..16de922 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 c95d871..8f58d4a 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"}

Shouldn't it be

  printf "%s\\n"

when you write it outside single quotes?

>  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 479c2d9..53fdf8d 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])

Dito.

Cheers,
Peter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.