From aa6c52d78a33835cf987274792d6e3f0cf2c6a95 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 12 Nov 2008 21:10:35 -0700 Subject: [PATCH] Remove _m4_index. * lib/m4sugar/m4sugar.m4 (_m4_index): Delete; it is more efficient to make callers guarantee a match. (m4_init): Adjust caller. * lib/autoconf/status.m4 (_AC_CONFIG_COMPUTE_DEST): Likewise. * lib/autoconf/general.m4 (_AC_DEFINE_Q): Likewise. Signed-off-by: Eric Blake --- ChangeLog | 7 +++++++ lib/autoconf/general.m4 | 5 +++-- lib/autoconf/status.m4 | 5 +++-- lib/m4sugar/m4sugar.m4 | 20 +------------------- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1d5fbf5f2..08bb49022 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-11-20 Eric Blake + Remove _m4_index. + * lib/m4sugar/m4sugar.m4 (_m4_index): Delete; it is more efficient + to make callers guarantee a match. + (m4_init): Adjust caller. + * lib/autoconf/status.m4 (_AC_CONFIG_COMPUTE_DEST): Likewise. + * lib/autoconf/general.m4 (_AC_DEFINE_Q): Likewise. + Describe different hacks for balancing ')' in case statements. * doc/autoconf.texi (Limitations of Builtins) : Add an exposition on various quoting styles. diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4 index 2f40f82f7..3603cb7fa 100644 --- a/lib/autoconf/general.m4 +++ b/lib/autoconf/general.m4 @@ -2078,9 +2078,10 @@ m4_define([AC_DEFINE_UNQUOTED], [_AC_DEFINE_Q([], $@)]) # is defined with over-quotation, so that we can avoid m4_defn; this # is only safe because the name should not contain $. # -# Use _m4_index to avoid a bug in m4_format in older m4. +# Guarantee a match in m4_index, so as to avoid a bug with precision +# -1 in m4_format in older m4. m4_define([_AC_DEFINE_Q], -[m4_pushdef([AC_name], m4_format([[[%.*s]]], _m4_index([$2], [(]), [$2]))]dnl +[m4_pushdef([AC_name], m4_format([[[%.*s]]], m4_index([$2(], [(]), [$2]))]dnl [AC_DEFINE_TRACE(AC_name)]dnl [m4_cond([m4_index([$3], [ ])], [-1], [], diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4 index fe7835832..bfd7a7966 100644 --- a/lib/autoconf/status.m4 +++ b/lib/autoconf/status.m4 @@ -247,9 +247,10 @@ m4_define([_AC_CONFIG_FOOS], # _AC_CONFIG_COMPUTE_DEST(STRING) # ------------------------------- # Compute the DEST from STRING by stripping any : and following -# characters. Use _m4_index to avoid a bug in m4_format in older m4. +# characters. Guarantee a match in m4_index, so as to avoid a bug +# with precision -1 in m4_format in older m4. m4_define([_AC_CONFIG_COMPUTE_DEST], -[m4_format([[%.*s]], _m4_index([$1], [:]), [$1])]) +[m4_format([[%.*s]], m4_index([$1:], [:]), [$1])]) # _AC_CONFIG_REGISTER(MODE, TAG, [COMMANDS]) # ------------------------------------------ diff --git a/lib/m4sugar/m4sugar.m4 b/lib/m4sugar/m4sugar.m4 index 88847147b..7671f0f5d 100644 --- a/lib/m4sugar/m4sugar.m4 +++ b/lib/m4sugar/m4sugar.m4 @@ -625,22 +625,6 @@ m4_define([m4_dumpdefs], [m4_map_args([$0], $@)])]) -# _m4_index(HAYSTACK, NEEDLE) -# --------------------------- -# Like the original, except return -2 instead of -1 if NEEDLE is not -# present in HAYSTACK. That way, it can be used to work around a bug -# in m4 1.4.9 and earlier where m4_format did not accept a precision -# of -1; this macro can be safely used in the idiom: -# m4_format([[%.*s]], _m4_index([$1],[$2]), [$1]) -# to grab the prefix of $1 up to but excluding $2, if it was present, -# otherwise the entire $1. -m4_define([_m4_index], -[$0_(m4_index($@))]) - -m4_define([_m4_index_], -[m4_if([$1], [-1], [-2], [$1])]) - - # m4_popdef(NAME) # --------------- # Like the original, except guarantee a warning when using something which is @@ -2991,8 +2975,7 @@ m4_pattern_forbid([^dnl$]) # If __m4_version__ is defined, we assume that we are being run by M4 # 1.6 or newer, and thus that $@ recursion is linear and debugmode(d) -# is available for faster checks of dereferencing undefined macros, -# and we don't need to worry about _m4_format bugs with _m4_index. +# is available for faster checks of dereferencing undefined macros. # But if it is missing, we assume we are being run by M4 1.4.x, that # $@ recursion is quadratic, and that we need foreach-based # replacement macros. Use the raw builtin to avoid tripping up @@ -3001,7 +2984,6 @@ m4_pattern_forbid([^dnl$]) m4_ifdef([__m4_version__], [m4_debugmode([+d]) m4_define([m4_defn], _m4_defn([_m4_defn])) -m4_define([_m4_index], _m4_defn([m4_index])) m4_define([m4_popdef], _m4_defn([_m4_popdef])) m4_define([m4_undefine], _m4_defn([_m4_undefine]))], [m4_builtin([include], [m4sugar/foreach.m4])]) -- 2.47.3