bug-gnulib
[Top][All Lists]
Advanced

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

Re: m4_quote(m4_defn())


From: Bruno Haible
Subject: Re: m4_quote(m4_defn())
Date: Thu, 21 May 2009 19:18:38 +0200
User-agent: KMail/1.9.9

Eric Blake wrote:
> m4_defn is GUARANTEED to be quoted, to 
> begin with.  All m4_quote does is add quoting to unquoted arguments

It also combines arguments. But here only one argument is passed.

> $ cd autoconf
> $ echo 'm4_divert[]m4_define([a],[A])m4_define([foo], [a[a[a]]])dnl         
> > foo
> > m4_defn([foo])
> > m4_quote(m4_defn([foo]))' | m4 -Ilib m4sugar/m4sugar.m4 -
> Aa[a]
> a[a[a]]
> a[a[a]]

I'm convinced now. Thanks for showing these effects. Probably I got
confused by the name and it should better be called m4_concat_args.
For a single argument, even unquoted, m4_quote appears to be a nop:

$ m4 -Ilib m4sugar/m4sugar.m4 -
m4_divert

m4_define([a],[b])

m4_define([b],[c])

a
c
[a]
a
m4_quote(a)
c
m4_quote([a])
a

Maybe I'm overlooking something again...


Applied this:

2009-05-21  Eric Blake  <address@hidden>
            Bruno Haible  <address@hidden>

        * m4/include_next.m4 (gl_CHECK_NEXT_HEADERS): Remove redundant m4_quote
        invocations.
        * m4/absolute-header.m4 (gl_ABSOLUTE_HEADER): Likewise.

--- m4/absolute-header.m4.orig  2009-05-21 19:03:32.000000000 +0200
+++ m4/absolute-header.m4       2009-05-21 19:02:13.000000000 +0200
@@ -1,5 +1,5 @@
-# absolute-header.m4 serial 10
-dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
+# absolute-header.m4 serial 11
+dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -24,12 +24,12 @@
 AC_LANG_PREPROC_REQUIRE()dnl
 m4_foreach_w([gl_HEADER_NAME], [$1],
   [AS_VAR_PUSHDEF([gl_absolute_header],
-                  [gl_cv_absolute_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
-  AC_CACHE_CHECK([absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>],
-    m4_quote(m4_defn([gl_absolute_header])),
+                  [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl
+  AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+    m4_defn([gl_absolute_header]),
     [AS_VAR_PUSHDEF([ac_header_exists],
-                    [ac_cv_header_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
-    AC_CHECK_HEADERS_ONCE(m4_quote(m4_defn([gl_HEADER_NAME])))dnl
+                    [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl
+    AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl
     if test AS_VAR_GET(ac_header_exists) = yes; then
       AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include 
<]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]])])
       dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
@@ -48,8 +48,8 @@
       dnl so use subshell.
       AS_VAR_SET(gl_absolute_header,
 [`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
-sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{
-       s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#
+sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
+       s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
        s#^/[^/]#//&#
        p
        q
@@ -57,9 +57,9 @@
     fi
     AS_VAR_POPDEF([ac_header_exists])dnl
     ])dnl
-  AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_quote(m4_defn([gl_HEADER_NAME]))),
+  AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])),
                      ["AS_VAR_GET(gl_absolute_header)"],
-                     [Define this to an absolute name of 
<]m4_quote(m4_defn([gl_HEADER_NAME]))[>.])
+                     [Define this to an absolute name of 
<]m4_defn([gl_HEADER_NAME])[>.])
   AS_VAR_POPDEF([gl_absolute_header])dnl
 ])dnl
 ])# gl_ABSOLUTE_HEADER
--- m4/include_next.m4.orig     2009-05-21 19:03:32.000000000 +0200
+++ m4/include_next.m4  2009-05-21 19:01:10.000000000 +0200
@@ -1,4 +1,4 @@
-# include_next.m4 serial 13
+# include_next.m4 serial 14
 dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -129,15 +129,15 @@
 
   m4_foreach_w([gl_HEADER_NAME], [$1],
     [AS_VAR_PUSHDEF([gl_next_header],
-                   [gl_cv_next_]m4_quote(m4_defn([gl_HEADER_NAME])))
+                   [gl_cv_next_]m4_defn([gl_HEADER_NAME]))
      if test $gl_cv_have_include_next = yes; then
        AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
      else
        AC_CACHE_CHECK(
-        [absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>],
-        m4_quote(m4_defn([gl_next_header])),
+        [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+        m4_defn([gl_next_header]),
         [AS_VAR_PUSHDEF([gl_header_exists],
-                        [ac_cv_header_]m4_quote(m4_defn([gl_HEADER_NAME])))
+                        [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
          if test AS_VAR_GET(gl_header_exists) = yes; then
            AC_LANG_CONFTEST(
              [AC_LANG_SOURCE(
@@ -159,8 +159,8 @@
            dnl so use subshell.
            AS_VAR_SET([gl_next_header],
              ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 
2>&AS_MESSAGE_LOG_FD |
-              sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{
-                s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#
+              sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
+                s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
                 s#^/[^/]#//&#
                 p
                 q
@@ -171,7 +171,7 @@
          AS_VAR_POPDEF([gl_header_exists])])
      fi
      AC_SUBST(
-       AS_TR_CPP([NEXT_]m4_quote(m4_defn([gl_HEADER_NAME]))),
+       AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
        [AS_VAR_GET([gl_next_header])])
      if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = 
buggy; then
        # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
@@ -181,7 +181,7 @@
        gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
      fi
      AC_SUBST(
-       
AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_quote(m4_defn([gl_HEADER_NAME]))),
+       AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
        [$gl_next_as_first_directive])
      AS_VAR_POPDEF([gl_next_header])])
 ])




reply via email to

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