This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU M4 source repository".
http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=b4f66285d8252196e1b4c6acf55eda3c1118e580 The branch, branch-1.4 has been updated via b4f66285d8252196e1b4c6acf55eda3c1118e580 (commit) from d0489f2a57e649b22f719ed8670ca3733c4febd4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b4f66285d8252196e1b4c6acf55eda3c1118e580 Author: Eric Blake <[email protected]> Date: Wed Feb 24 16:20:45 2010 -0700 Improve parsing example. * doc/m4.texinfo (Input processing): Double-quote argument to translit, for robustness. * THANKS: Update. Reported by Chris Penev. Signed-off-by: Eric Blake <[email protected]> ----------------------------------------------------------------------- Summary of changes: ChangeLog | 8 ++++++++ THANKS | 1 + doc/m4.texinfo | 15 +++++++++------ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84799d0..9c3e8f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2010-02-24 Eric Blake <[email protected]> + + Improve parsing example. + * doc/m4.texinfo (Input processing): Double-quote argument to + translit, for robustness. + * THANKS: Update. + Reported by Chris Penev. + 2010-01-29 Eric Blake <[email protected]> Document upcoming release. diff --git a/THANKS b/THANKS index f46e904..f43e2aa 100644 --- a/THANKS +++ b/THANKS @@ -26,6 +26,7 @@ Brendan Kehoe [email protected] Bruno Haible [email protected] Cesar Strauss [email protected] Chris McGuire [email protected] +Chris Penev [email protected] Damian Menscher [email protected] Dan Jacobson [email protected] David J. MacKenzie [email protected] diff --git a/doc/m4.texinfo b/doc/m4.texinfo index aec1d6a..db7aff4 100644 --- a/doc/m4.texinfo +++ b/doc/m4.texinfo @@ -1268,13 +1268,15 @@ whitespace so that less whitespace is output (which, although harmless to shell scripts, can be visually unappealing), and fixes the quoting issues so that the capitalization occurs when the macro @samp{gl_STRING_MODULE_INDICATOR} is invoked, rather then when it is -defined. +defined. It also adds another layer of quoting to the first argument of +...@code{translit}, to ensure that the output will be rescanned as a string +rather than a potential uppercase macro name needing further expansion. @example changequote([,])dnl define([gl_STRING_MODULE_INDICATOR], [dnl comment - GNULIB_[]translit([$1], [a-z], [A-Z])=1dnl + GNULIB_[]translit([[$1]], [a-z], [A-Z])=1dnl ])dnl gl_STRING_MODULE_INDICATOR([strcase]) @result{} GNULIB_STRCASE=1 @@ -1283,7 +1285,7 @@ define([gl_STRING_MODULE_INDICATOR], The parsing of the first line is unchanged. The second line sees the name of the macro to define, then sees the discarded @sa...@key{nl}} and two spaces, as before. But this time, the next token is -...@samp{[dnl comm...@key{nl}@ @ GNULIB_[]translit([$1], [a-z], +...@samp{[dnl comm...@key{nl}@ @ GNULIB_[]translit([[$1]], [a-z], [A-Z])=1...@key{nl}]}, which includes nested quotes, followed by @samp{)} to end the macro definition and @samp{dnl} to skip the newline. No early expansion of @code{translit} occurs, so the entire @@ -1300,10 +1302,11 @@ output literally. The token @samp{[]} is an empty string, so it does not affect output. Then the token @samp{translit} is encountered. This time, the arguments to @code{translit} are parsed as @samp{(}, -...@samp{[strcase]}, @samp{,}, @samp{ }, @samp{[a-z]}, @samp{,}, @samp{ }, +...@samp{[[strcase]]}, @samp{,}, @samp{ }, @samp{[a-z]}, @samp{,}, @samp{ }, @samp{[A-Z]}, and @samp{)}. The two spaces are discarded, and the -translit results in the desired result @samp{STRCASE}. This is -rescanned, but since it is not a macro name, it is output literally. +translit results in the desired result @samp{[STRCASE]}. This is +rescanned, but since it is a string, the quotes are stripped and the +only output is a literal @samp{STRCASE}. Then the scanner sees @samp{=} and @samp{1}, which are output literally, followed by @samp{dnl} which discards the rest of the definition of @code{gl_STRING_MODULE_INDICATOR}. The newline at the hooks/post-receive -- GNU M4 source repository
