autoconf-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Autoconf source repository branch, master, updated. v2.62-10-g


From: Eric Blake
Subject: [SCM] GNU Autoconf source repository branch, master, updated. v2.62-10-gc60735f
Date: Tue, 22 Apr 2008 22:58:36 +0000

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 Autoconf source repository".

http://git.sv.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=c60735fbb8448eff772caefa90ae553e7e0b7623

The branch, master has been updated
       via  c60735fbb8448eff772caefa90ae553e7e0b7623 (commit)
      from  9651f4a0e1b80c55da23a5ceaa0237121e0b95f2 (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 c60735fbb8448eff772caefa90ae553e7e0b7623
Author: Eric Blake <address@hidden>
Date:   Tue Apr 22 14:19:27 2008 -0600

    Support unbalanced () in AT_SETUP by adding two new quadrigraphs.
    
    * bin/autom4te.in (handle_output): Substitute @{:@ and @:address@hidden
    (handle_traces): Likewise.
    * lib/m4sugar/m4sugar.m4 (m4_qlen): Account for new quadrigraphs.
    * tests/autotest.at (AT_CHECK_AT_TITLE_CHAR): Add new tests.
    * doc/autoconf.texi (Quadrigraphs): Document them.
    (Evaluation Macros) <m4_expand>: Enhance documentation.
    (Text processing Macros) <m4_text_box>: Document cases where
    quadrigraphs can help for problemetic unbalanced parentheses.
    (Pretty Help Strings) <AS_HELP_STRING>: Likewise.
    (Writing Testsuites) <AT_SETUP>: Likewise.
    (Limitations of Builtins) <case>: Consolidate text on unbalanced
    parentheses, and add an example of creative comments.
    * NEWS: Document the addition.
    Reported by Joel E. Denny.
    
    Signed-off-by: Eric Blake <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog              |   18 ++++++++++++
 NEWS                   |    5 +++
 bin/autom4te.in        |    4 ++
 doc/autoconf.texi      |   72 ++++++++++++++++++++++++++++++++++-------------
 lib/m4sugar/m4sugar.m4 |    3 +-
 tests/autotest.at      |    5 +++
 6 files changed, 86 insertions(+), 21 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9d9d04e..8dd130c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2008-04-22  Eric Blake  <address@hidden>
+
+       Support unbalanced () in AT_SETUP by adding two new quadrigraphs.
+       * bin/autom4te.in (handle_output): Substitute @{:@ and @:address@hidden
+       (handle_traces): Likewise.
+       * lib/m4sugar/m4sugar.m4 (m4_qlen): Account for new quadrigraphs.
+       * tests/autotest.at (AT_CHECK_AT_TITLE_CHAR): Add new tests.
+       * doc/autoconf.texi (Quadrigraphs): Document them.
+       (Evaluation Macros) <m4_expand>: Enhance documentation.
+       (Text processing Macros) <m4_text_box>: Document cases where
+       quadrigraphs can help for problemetic unbalanced parentheses.
+       (Pretty Help Strings) <AS_HELP_STRING>: Likewise.
+       (Writing Testsuites) <AT_SETUP>: Likewise.
+       (Limitations of Builtins) <case>: Consolidate text on unbalanced
+       parentheses, and add an example of creative comments.
+       * NEWS: Document the addition.
+       Reported by Joel E. Denny.
+
 2008-04-16  Eric Blake  <address@hidden>
 
        Document pdksh exec behavior.
diff --git a/NEWS b/NEWS
index 9396ac0..a50759d 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,11 @@ GNU Autoconf NEWS - User visible changes.
 
 * Major changes in Autoconf 2.62a (2008-??-??)
 
+** Two new quadrigraphs have been introduced: @{:@ for (, and @:}@ for ),
+   allowing the output of unbalanced parantheses in contexts such as
+   AS_HELP_STRING or AT_SETUP that must determine the length of
+   expanded text.
+
 
 * Major changes in Autoconf 2.62 (2008-04-05) [stable]
   Released by Eric Blake, based on git versions 2.61a.*.
diff --git a/bin/autom4te.in b/bin/autom4te.in
index 1f9aee8..685df41 100644
--- a/bin/autom4te.in
+++ b/bin/autom4te.in
@@ -575,6 +575,8 @@ sub handle_output ($$)
       s/__oline__/$./g;
       s/\@<:\@/[/g;
       s/\@:>\@/]/g;
+      s/address@hidden:\@/(/g;
+      s/\@:\}\@/)/g;
       s/address@hidden|\@/\$/g;
       s/address@hidden:\@/#/g;
 
@@ -856,6 +858,8 @@ EOF
       # It makes no sense to try to transform __oline__.
       s/\@<:\@/[/g;
       s/\@:>\@/]/g;
+      s/address@hidden:\@/(/g;
+      s/\@:\}\@/)/g;
       s/address@hidden|\@/\$/g;
       s/address@hidden:\@/#/g;
       s/\@&t\@//g;
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 554d2ec..6f72302 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -9619,13 +9619,18 @@ the one they were implemented with.
 @c @cindex @samp{@@<:@@}
 @c @cindex @samp{@@:>@@}
 @c @cindex @samp{@@%:@@}
address@hidden @cindex @samp{@@@{:@@}
address@hidden @cindex @samp{@@:@}@@}
 
 When writing an Autoconf macro you may occasionally need to generate
 special characters that are difficult to express with the standard
 Autoconf quoting rules.  For example, you may need to output the regular
 expression @samp{[^[]}, which matches any character other than @samp{[}.
 This expression contains unbalanced brackets so it cannot be put easily
-into an M4 macro.
+into an M4 macro.  There are also a few macros, such as
address@hidden, @code{AS_HELP_STRING}, or @code{AT_SETUP}, which
+require balanced parentheses, regardless of the quoting, because the
+macro needs to compute the length of the expansion of its arguments.
 
 You can work around this problem by using one of the following
 @dfn{quadrigraphs}:
@@ -9639,6 +9644,10 @@ You can work around this problem by using one of the 
following
 @samp{$}
 @item @@%:@@
 @samp{#}
address@hidden @@@{:@@
address@hidden(}
address@hidden @@:@}@@
address@hidden)}
 @item @@&t@@
 Expands to nothing.
 @end table
@@ -10887,12 +10896,6 @@ collection rules discard the whitespace.  However, 
with @code{m4_expand},
 whitespace is preserved, even after the expansion of macros contained in
 @var{arg}.
 
-Note that @code{m4_expand} cannot parse everything.  The expansion of
address@hidden must not contain unbalanced quotes (although quadrigraphs can
-get around this), nor unbalanced parentheses (portable shell @code{case}
-statements are a major culprit here, but creative shell comments can get
-around this).
-
 @example
 m4_define([active], [ACT, IVE])dnl
 m4_define([active2], [[ACT, IVE]])dnl
@@ -10905,6 +10908,21 @@ m4_quote(active2, active2)
 m4_expand([active2, active2])
 @result{}ACT, IVE, ACT, IVE
 @end example
+
+Note that @code{m4_expand} cannot parse everything.  The expansion of
address@hidden must not contain literal unbalanced quotes or parentheses;
+however, quadrigraphs can be used to generate unbalanced output.
+
address@hidden
+m4_define([pattern], [[!@@<:@@]])dnl
+m4_define([bar], [BAR])dnl
+m4_expand([case $foo in
+  m4_defn([pattern])@@:@}@@ bar ;;
+esac])
address@hidden $foo in
address@hidden  [![]) BAR ;;
address@hidden
address@hidden example
 @end defmac
 
 @defmac m4_ignore (@dots{})
@@ -11183,6 +11201,9 @@ m4_text_box([macro])
 @result{}## abc ##
 @result{}## --- ##
 @end example
+
+The @var{message} must contain balanced quotes and parentheses, although
+quadrigraphs can be used to work around this.
 @end defmac
 
 @defmac m4_text_wrap (@var{string}, @ovar{prefix}, @
@@ -13754,13 +13775,32 @@ parentheses like this:
 
 @example
 case $file_name in
-(*.c) echo "C source code";;
+  (*.c) echo "C source code";;
 esac
 @end example
 
 @noindent
 but the @code{(} in this example is not portable to many Bourne
-shell implementations.  It can be omitted safely.
+shell implementations, which is a pity for those of us using tools that
+rely on balanced parentheses.  For instance, with Solaris
address@hidden/bin/sh}:
+
address@hidden
+$ @kbd{case foo in (foo) echo foo;; esac}
address@hidden error: `(' unexpected
address@hidden example
+
address@hidden
+The leading @samp{(} can be omitted safely.  In contexts where
+unbalanced parentheses cause other problems, such as when using a case
+statement as an argument to an Autoconf macro, you can also resort to
+creative shell comments to supply the balance:
+
address@hidden
+case $file_name in #(
+  *.c) echo "C source code";;
+esac
address@hidden example
 
 Zsh handles pattern fragments derived from parameter expansions or
 command substitutions as though quoted:
@@ -13830,15 +13870,6 @@ ash-0.3.8 $ @kbd{case foo in esac;}
 @error{}Syntax error: ";" unexpected (expecting ")")
 @end example
 
-Many shells still do not support parenthesized cases, which is a pity
-for those of us using tools that rely on balanced parentheses.  For
-instance, Solaris @command{/bin/sh}:
-
address@hidden
-$ @kbd{case foo in (foo) echo foo;; esac}
address@hidden error: `(' unexpected
address@hidden example
-
 
 @item @command{cd}
 @c ---------------
@@ -17690,7 +17721,8 @@ Since it is not expanded, it should not be double 
quoted.
 The @code{AS_HELP_STRING} macro is particularly helpful when the
 @var{left-hand-side} and/or @var{right-hand-side} are composed of macro
 arguments, as shown in the following example.  Be aware that
address@hidden may not contain unbalanced quotes or parentheses.
address@hidden may not contain unbalanced quotes or parentheses,
+although quadrigraphs can be used.
 
 @example
 AC_DEFUN([MY_ARG_WITH],
@@ -20280,7 +20312,7 @@ This macro starts a group of related tests, all to be 
executed in the
 same subshell.  It accepts a single argument, which holds a few words
 (no more than about 30 or 40 characters) quickly describing the purpose
 of the test group being started.  @var{test-group-name} must not contain
-unbalanced quotes or parentheses.
+unbalanced quotes or parentheses, although quadrigraphs can be used.
 @end defmac
 
 @defmac AT_KEYWORDS (@var{keywords})
diff --git a/lib/m4sugar/m4sugar.m4 b/lib/m4sugar/m4sugar.m4
index ae7ce4d..841ce72 100644
--- a/lib/m4sugar/m4sugar.m4
+++ b/lib/m4sugar/m4sugar.m4
@@ -2058,7 +2058,8 @@ m4_builtin([popdef], [m4_Border])dnl
 # Avoid bpatsubsts for the common case of no quadrigraphs.
 m4_define([m4_qlen],
 [m4_if(m4_index([$1], address@hidden), [-1], [m4_len([$1])],
-       [m4_len(m4_bpatsubst([[$1]], 
address@hidden(\(<:\|:>\|S|\|%:\)\(@\)\|&address@hidden)],
+       [m4_len(m4_bpatsubst([[$1]],
+                           
address@hidden(\(<:\|:>\|S|\|%:\|\{:\|:\}\)\(@\)\|&address@hidden)],
                            [\3]))])])
 
 
diff --git a/tests/autotest.at b/tests/autotest.at
index e6dc862..27948aa 100644
--- a/tests/autotest.at
+++ b/tests/autotest.at
@@ -453,9 +453,14 @@ AT_CHECK_AT_TITLE_CHAR([Double-quote],  ["])
 dnl restore font-lock: "
 AT_CHECK_AT_TITLE_CHAR([Backslash],     [\])
 AT_CHECK_AT_TITLE_CHAR([Brackets],   [[[]]], [[]])
+AT_CHECK_AT_TITLE_CHAR([Left bracket],  [@<@&t@:@], [@<:@])
+AT_CHECK_AT_TITLE_CHAR([Right bracket], [@:@&t@>@], [@:>@])
 AT_CHECK_AT_TITLE_CHAR([Pound],       [[#]], [#])
 AT_CHECK_AT_TITLE_CHAR([Quoted comma],[[,]], [,])
 AT_CHECK_AT_TITLE_CHAR([Comma],         [,], [,])
+AT_CHECK_AT_TITLE_CHAR([Parentheses],   [()])
+AT_CHECK_AT_TITLE_CHAR([Left paren],    address@hidden@&t@:@], [(])
+AT_CHECK_AT_TITLE_CHAR([Right paren],   [@:@&address@hidden@], [)])
 
 AT_CHECK_AT_TITLE_CHAR([Quoted Macro], [[macro_name]], [macro_name])
 AT_CHECK_AT_TITLE_CHAR([Macro],        [macro_name],   [macro_expanded])


hooks/post-receive
--
GNU Autoconf source repository




reply via email to

[Prev in Thread] Current Thread [Next in Thread]