Hello,
  returning to the patch from May.

I committed a variation of the patch, please find it attached to this mail.

I did the following:
1- declared AC_FOREACH obsolete
2- tried to eliminate some occurences
3- replaced the remaining by m4_foreach_w, which is the same as AC_FOREACH,
   but defines in m4sugar.m4

ad 2:  I hadn't much success with eliminating.  Some occurences are tied to
user interface, as in AC_CHECK_FUNCS.  Then there are occurences working with
AC_LIST_* macros; converting these would require too much work.

ad 3:  We can rename the macro or expand all its occurences later.
In any case, I think the patch is going in a good direction.

Have a nice day,
        Stepan
2005-07-01  Stepan Kasal  <[EMAIL PROTECTED]>

        * lib/autoconf/general.m4 (AC_FOREACH): Make obsolete; it's
          replaced ...
        * lib/m4sugar/m4sugar.m4 (m4_foreach_w): ... by this new macro.
        * lib/autoconf/status.m4 (_AC_CONFIG_DEPENDENCIES, _AC_CONFIG_UNIQUE):
          Remove m4_foreach_w.
        (AC_CONFIG_SUBDIRS): Call _AC_CONFIG_UNIQUE in a m4_foreach_w loop.

Index: lib/autoconf/functions.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/functions.m4,v
retrieving revision 1.93
diff -u -r1.93 functions.m4
--- lib/autoconf/functions.m4   14 May 2005 18:33:30 -0000      1.93
+++ lib/autoconf/functions.m4   1 Jul 2005 08:28:21 -0000
@@ -78,7 +78,7 @@
 # AC_CHECK_FUNCS(FUNCTION..., [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
 # ---------------------------------------------------------------------
 AC_DEFUN([AC_CHECK_FUNCS],
-[AC_FOREACH([AC_Func], [$1],
+[m4_foreach_w([AC_Func], [$1],
   [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
               [Define to 1 if you have the `]AC_Func[' function.])])dnl
 for ac_func in $1
@@ -93,7 +93,7 @@
 # AC_REPLACE_FUNCS(FUNCTION...)
 # -----------------------------
 AC_DEFUN([AC_REPLACE_FUNCS],
-[AC_FOREACH([AC_Func], [$1], [AC_LIBSOURCE(AC_Func.c)])dnl
+[m4_foreach_w([AC_Func], [$1], [AC_LIBSOURCE(AC_Func.c)])dnl
 AC_CHECK_FUNCS([$1], , [_AC_LIBOBJ($ac_func)])
 ])
 
Index: lib/autoconf/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/general.m4,v
retrieving revision 1.870
diff -u -r1.870 general.m4
--- lib/autoconf/general.m4     29 Jun 2005 09:33:21 -0000      1.870
+++ lib/autoconf/general.m4     1 Jul 2005 08:28:21 -0000
@@ -190,22 +190,9 @@
 ## ----------------------------- ##
 
 
-# AC_FOREACH(VARIABLE, LIST, EXPRESSION)
-# --------------------------------------
-#
-# Compute EXPRESSION assigning to VARIABLE each value of the LIST.
-# LIST is a /bin/sh list, i.e., it has the form ` item_1 item_2
-# ... item_n ': white spaces are separators, and leading and trailing
-# spaces are meaningless.
-#
-# This macro is robust to active symbols:
-#    AC_FOREACH([Var], [ active
-#    b act\
-#    ive  ], [-Var-])end
-#    => -active--b--active-end
-m4_define([AC_FOREACH],
-[m4_foreach([$1], m4_split(m4_normalize([$2])), [$3])])
-
+# AU::AC_FOREACH(VARIABLE, LIST, EXPRESSION)
+# ------------------------------------------
+AU_ALIAS([AC_FOREACH], [m4_foreach_w])
 
 
 
@@ -2427,7 +2414,7 @@
 # AC_CHECK_FILES(FILE..., [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
 # -----------------------------------------------------------------
 AC_DEFUN([AC_CHECK_FILES],
-[AC_FOREACH([AC_FILE_NAME], [$1],
+[m4_foreach_w([AC_FILE_NAME], [$1],
   [AC_CHECK_FILE(AC_FILE_NAME,
                 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_[]AC_FILE_NAME), 1,
                                    [Define to 1 if you have the
Index: lib/autoconf/headers.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/headers.m4,v
retrieving revision 1.43
diff -u -r1.43 headers.m4
--- lib/autoconf/headers.m4     14 May 2005 07:00:40 -0000      1.43
+++ lib/autoconf/headers.m4     1 Jul 2005 08:28:21 -0000
@@ -185,7 +185,7 @@
 # AH_CHECK_HEADERS(HEADER-FILE...)
 # --------------------------------
 m4_define([AH_CHECK_HEADERS],
-[AC_FOREACH([AC_Header], [$1],
+[m4_foreach_w([AC_Header], [$1],
   [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Header),
               [Define to 1 if you have the <]AC_Header[> header file.])])])
 
@@ -380,7 +380,7 @@
 # AH_CHECK_HEADERS_DIRENT(HEADERS...)
 # -----------------------------------
 m4_define([AH_CHECK_HEADERS_DIRENT],
-[AC_FOREACH([AC_Header], [$1],
+[m4_foreach_w([AC_Header], [$1],
   [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Header),
               [Define to 1 if you have the <]AC_Header[> header file, and
                it defines `DIR'.])])])
Index: lib/autoconf/status.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/status.m4,v
retrieving revision 1.66
diff -u -r1.66 status.m4
--- lib/autoconf/status.m4      30 Jun 2005 18:42:09 -0000      1.66
+++ lib/autoconf/status.m4      1 Jul 2005 08:28:21 -0000
@@ -211,17 +211,16 @@
          [AC_FILE_DEPENDENCY_TRACE([$1], [$1.in])])])
 
 
-# _AC_CONFIG_DEPENDENCIES(DEST[:SOURCE1[:SOURCE2...]]...)
-# -------------------------------------------------------
+# _AC_CONFIG_DEPENDENCIES(DEST[:SOURCE1[:SOURCE2...]])
+# ----------------------------------------------------
 # Declare the DESTs depend upon their SOURCE1 etc.
 m4_define([_AC_CONFIG_DEPENDENCIES],
-[AC_FOREACH([AC_File], [$1],
-  [_AC_CONFIG_DEPENDENCY(m4_bpatsubst(AC_File, [:], [,]))])dnl
+[_AC_CONFIG_DEPENDENCY(m4_bpatsubst([$1], [:], [,]))dnl
 ])
 
 
-# _AC_CONFIG_UNIQUE(DEST[:SOURCE]...)
-# -----------------------------------
+# _AC_CONFIG_UNIQUE(DEST[:SOURCE])
+# --------------------------------
 #
 # Verify that there is no double definition of an output file
 # (precisely, guarantees there is no common elements between
@@ -230,19 +229,18 @@
 # Note that this macro does not check if the list $[1] itself
 # contains doubles.
 m4_define([_AC_CONFIG_UNIQUE],
-[AC_FOREACH([AC_File], [$1],
 [m4_pushdef([AC_Dest], m4_bpatsubst(AC_File, [:.*]))dnl
+  AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_FILES],
+     [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_FILES.])])dnl
   AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_HEADERS],
      [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_HEADERS.])])dnl
   AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_LINKS],
      [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_LINKS.])])dnl
-  AC_CONFIG_IF_MEMBER(AC_Dest, [_AC_LIST_SUBDIRS],
-     [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_SUBDIRS.])])dnl
   AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_COMMANDS],
      [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_COMMANDS.])])dnl
-  AC_CONFIG_IF_MEMBER(AC_Dest, [AC_LIST_FILES],
-     [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_FILES.])])dnl
-m4_popdef([AC_Dest])])dnl
+  AC_CONFIG_IF_MEMBER(AC_Dest, [_AC_LIST_SUBDIRS],
+     [AC_FATAL(`AC_Dest' [is already registered with AC_CONFIG_SUBDIRS.])])dnl
+m4_popdef([AC_Dest])dnl
 ])
 
 
@@ -317,7 +315,7 @@
 #        AC_LIST_FILES_COMMANDS
 #      esac
 AC_DEFUN([AC_CONFIG_FILES],
-[AC_FOREACH([AC_File], [$1], [_AC_CONFIG_FILE(m4_defn([AC_File]), [$2])])dnl
+[m4_foreach_w([AC_File], [$1], [_AC_CONFIG_FILE(m4_defn([AC_File]), [$2])])dnl
 _AC_CONFIG_COMMANDS_INIT([$3])dnl
 ac_config_files="$ac_config_files m4_normalize([$1])"
 ])
@@ -365,7 +363,7 @@
 m4_ifdef([_AC_SUBST_FILES],
 [# Create sed commands to just substitute file output variables.
 
-AC_FOREACH([_AC_Var], m4_defn([_AC_SUBST_FILES]),
+m4_foreach_w([_AC_Var], m4_defn([_AC_SUBST_FILES]),
 [dnl End fragments at beginning of loop so that last fragment is not ended.
 m4_if(1,m4_eval(_AC_SED_CMD_NUM+4>_AC_SED_CMD_LIMIT),
 [dnl Fragment is full and not the last one, so no need for the final un-escape.
@@ -397,7 +395,7 @@
 dnl
 m4_define([_AC_SED_FRAG],[
 ]m4_defn([_AC_SED_FRAG]))dnl
-AC_FOREACH([_AC_Var],
+m4_foreach_w([_AC_Var],
 m4_ifdef([_AC_SUBST_VARS],[m4_defn([_AC_SUBST_VARS]) ])[EMAIL PROTECTED]@],
 [m4_if(_AC_SED_DELIM_NUM,0,
 [m4_if(_AC_Var,[EMAIL PROTECTED]@],
@@ -620,7 +618,7 @@
 #        AC_LIST_HEADERS_COMMANDS
 #      esac
 AC_DEFUN([AC_CONFIG_HEADERS],
-[AC_FOREACH([AC_File], [$1], [_AC_CONFIG_HEADER(m4_defn([AC_File]), [$2])])dnl
+[m4_foreach_w([AC_File], [$1], [_AC_CONFIG_HEADER(m4_defn([AC_File]), 
[$2])])dnl
 _AC_CONFIG_COMMANDS_INIT([$3])dnl
 ac_config_headers="$ac_config_headers m4_normalize([$1])"
 ])
@@ -846,7 +844,7 @@
 # Reject DEST=., because it is makes it hard for ./config.status
 # to guess the links to establish (`./config.status .').
 AC_DEFUN([AC_CONFIG_LINKS],
-[AC_FOREACH([AC_File], [$1], [_AC_CONFIG_LINK(m4_defn([AC_File]), [$2])])dnl
+[m4_foreach_w([AC_File], [$1], [_AC_CONFIG_LINK(m4_defn([AC_File]), [$2])])dnl
 _AC_CONFIG_COMMANDS_INIT([$3])dnl
 ac_config_links="$ac_config_links m4_normalize([$1])"
 ])
@@ -986,7 +984,7 @@
 # commands must be associated with a NAME, which should be thought
 # as the name of a file the COMMANDS create.
 AC_DEFUN([AC_CONFIG_COMMANDS],
-[AC_FOREACH([AC_Name], [$1], [_AC_CONFIG_COMMAND(m4_defn([AC_Name]), [$2])])dnl
+[m4_foreach_w([AC_Name], [$1], [_AC_CONFIG_COMMAND(m4_defn([AC_Name]), 
[$2])])dnl
 _AC_CONFIG_COMMANDS_INIT([$3])dnl
 ac_config_commands="$ac_config_commands $1"
 ])
@@ -1100,11 +1098,11 @@
 #   This is used in _AC_OUTPUT_SUBDIRS.
 # _AC_LIST_SUBDIRS is used only for _AC_CONFIG_UNIQUE.
 AC_DEFUN([AC_CONFIG_SUBDIRS],
-[_AC_CONFIG_UNIQUE([$1])dnl
+[m4_foreach_w([_AC_Sub], [$1], [_AC_CONFIG_UNIQUE([_AC_Sub])])dnl
 AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
 m4_append([_AC_LIST_SUBDIRS], [ $1])dnl
 AS_LITERAL_IF([$1], [],
-             [AC_DIAGNOSE(syntax, [$0: you should use literals])])
+             [AC_DIAGNOSE(syntax, [$0: you should use literals])])dnl
 m4_divert_text([DEFAULTS],
               [ac_subdirs_all="$ac_subdirs_all m4_normalize([$1])"])
 AC_SUBST(subdirs, "$subdirs $1")dnl
@@ -1530,30 +1528,30 @@
 
 
 dnl Issue this section only if there were actually config files.
-dnl This checks if one of AC_LIST_HEADERS, AC_LIST_FILES, AC_LIST_COMMANDS,
-dnl or AC_LIST_LINKS is set.
-m4_ifval(AC_LIST_HEADERS()AC_LIST_LINKS()AC_LIST_FILES()AC_LIST_COMMANDS(),
+dnl This checks if one of AC_LIST_FILES, AC_LIST_HEADERS, AC_LIST_LINKS,
+dnl or AC_LIST_COMMANDS is set.
+m4_ifval(AC_LIST_FILES()AC_LIST_HEADERS()AC_LIST_LINKS()AC_LIST_COMMANDS(),
 [
 cat >>$CONFIG_STATUS <<\_ACEOF
 for ac_config_target in $ac_config_targets
 do
   case "$ac_config_target" in
   # Handling of arguments.
-AC_FOREACH([AC_File], AC_LIST_FILES,
+m4_foreach_w([AC_File], AC_LIST_FILES,
 [  "m4_bpatsubst(AC_File, [:.*])" )dnl
  CONFIG_FILES="$CONFIG_FILES AC_File" ;;
 ])dnl
-AC_FOREACH([AC_File], AC_LIST_LINKS,
+m4_foreach_w([AC_File], AC_LIST_HEADERS,
 [  "m4_bpatsubst(AC_File, [:.*])" )dnl
- CONFIG_LINKS="$CONFIG_LINKS AC_File" ;;
+ CONFIG_HEADERS="$CONFIG_HEADERS AC_File" ;;
 ])dnl
-AC_FOREACH([AC_File], AC_LIST_COMMANDS,
+m4_foreach_w([AC_File], AC_LIST_LINKS,
 [  "m4_bpatsubst(AC_File, [:.*])" )dnl
- CONFIG_COMMANDS="$CONFIG_COMMANDS AC_File" ;;
+ CONFIG_LINKS="$CONFIG_LINKS AC_File" ;;
 ])dnl
-AC_FOREACH([AC_File], AC_LIST_HEADERS,
+m4_foreach_w([AC_File], AC_LIST_COMMANDS,
 [  "m4_bpatsubst(AC_File, [:.*])" )dnl
- CONFIG_HEADERS="$CONFIG_HEADERS AC_File" ;;
+ CONFIG_COMMANDS="$CONFIG_COMMANDS AC_File" ;;
 ])dnl
   *) AC_MSG_ERROR([invalid argument: $ac_config_target]);;
   esac
Index: lib/m4sugar/m4sugar.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/m4sugar/m4sugar.m4,v
retrieving revision 2.92
diff -u -r2.92 m4sugar.m4
--- lib/m4sugar/m4sugar.m4      21 Jun 2005 15:38:24 -0000      2.92
+++ lib/m4sugar/m4sugar.m4      1 Jul 2005 08:28:21 -0000
@@ -692,6 +692,21 @@
 _m4_foreach([$1], m4_cdr($2), [$3])])])
 
 
+# m4_foreach_w(VARIABLE, LIST, EXPRESSION)
+# ----------------------------------------
+#
+# Like m4_foreach, but the list is whitespace separated.
+#
+# This macro is robust to active symbols:
+#    m4_foreach_w([Var], [ active
+#    b act\
+#    ive  ], [-Var-])end
+#    => -active--b--active-end
+#
+m4_define([m4_foreach_w],
+[m4_foreach([$1], m4_split(m4_normalize([$2])), [$3])])
+
+
 
 ## --------------------------- ##
 ## 8. More diversion support.  ##
@@ -1558,7 +1573,7 @@
 m4_if(m4_eval(m4_Cursor > m4_len(m4_Prefix)),
       1, [m4_define([m4_Cursor], m4_len(m4_Prefix))
 m4_Prefix])[]dnl
-m4_foreach([m4_Word], m4_split(m4_normalize([$1])),
+m4_foreach_w([m4_Word], [$1],
 [m4_define([m4_Cursor], m4_eval(m4_Cursor + m4_len(m4_defn([m4_Word])) + 1))dnl
 dnl New line if too long, else insert a space unless it is the first
 dnl of the words.

Reply via email to