Hi,
  I commited the patch, incorporating Paul's suggestions and
fixing a mistake I made (I confused <<_ACEOF with <<\_ACEOF).
The final version is attached.

Stepan
2005-05-17  Stepan Kasal  <[EMAIL PROTECTED]>

        * lib/autoconf/general.m4 (_AC_INIT_HELP): Merge two consecutive
          ``cat <<_ACEOF'' commands to one.
        (_AC_CANONICAL_SPLIT): Use expr, not ``echo|sed.''
        * lib/autoconf/status.m4: On various places, use expr instead of
          ``echo|sed.''
        (_AC_CONFIG_SPLIT, _AC_CONFIG_SPLIT_SOURCE_DEST):
        (_AC_CONFIG_SPLIT_FILE_IN): New macros, to factor out common code.
        * lib/autotest/general.m4 (AT_INIT): Use expr to get the numbers from
          a range.
        * tests/local.at (AT_CHECK_SHELL_SYNTAX): Use awk to search for
          the wrong patterns between ``case'' and ``esac.''  The previous
          code had false positives.

Index: lib/autoconf/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/general.m4,v
retrieving revision 1.855
diff -u -r1.855 general.m4
--- lib/autoconf/general.m4     14 May 2005 07:00:40 -0000      1.855
+++ lib/autoconf/general.m4     17 May 2005 09:26:59 -0000
@@ -1004,9 +1004,6 @@
   -n, --no-create         do not create output files
       --srcdir=DIR        find the sources in DIR [configure dir or \`..']
 
-_ACEOF
-
-  cat <<_ACEOF
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
                          [$ac_default_prefix]
@@ -1685,12 +1682,9 @@
 m4_define([_AC_CANONICAL_SPLIT],
 [AC_SUBST([$1],       [$ac_cv_$1])dnl
 dnl FIXME: AC_SUBST([$1_alias],  [$ac_cv_$1_alias])dnl
-AC_SUBST([$1_cpu],
-        [`echo $ac_cv_$1 | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])dnl
-AC_SUBST([$1_vendor],
-        [`echo $ac_cv_$1 | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])dnl
-AC_SUBST([$1_os],
-        [`echo $ac_cv_$1 | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])dnl
+AC_SUBST([$1_cpu],     [`expr "X$ac_cv_$1" : ['X\([^-]*\)']`])dnl
+AC_SUBST([$1_vendor],  [`expr "X$ac_cv_$1" : ['X[^-]*-\([^-]*\)']`])dnl
+AC_SUBST([$1_os],      [`expr "X$ac_cv_$1" : ['X[^-]*-[^-]*-\(.*\)']`])dnl
 ])# _AC_CANONICAL_SPLIT
 
 
Index: lib/autoconf/status.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/status.m4,v
retrieving revision 1.55
diff -u -r1.55 status.m4
--- lib/autoconf/status.m4      14 May 2005 07:00:40 -0000      1.55
+++ lib/autoconf/status.m4      17 May 2005 09:27:00 -0000
@@ -153,7 +153,7 @@
     if test -z "$ac_top_builddir"; then
        ac_top_srcdir=.
     else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+       ac_top_srcdir=`expr $ac_top_builddir : ['\(.*[^/]\)']`
     fi
     ac_abs_top_srcdir=$ac_pwd ;;
   [[\\/]]* | ?:[[\\/]]* )  # Absolute name.
@@ -243,6 +243,44 @@
 ])
 
 
+# _AC_CONFIG_SPLIT(LIST, DEST, SOURCE)
+# ------------------------------------
+#
+# Shell variable LIST must contain at least two file names, separated by
+# colon.  The first component goes to DEST, the rest to SOURCE.
+# We compute SOURCE first, so LIST and DEST can be the same variable.
+#
+m4_define([_AC_CONFIG_SPLIT],
+[      $3=`expr "X$$1" : ['X[^:]*:\(.*\)']`
+       $2=`expr "X$$1" : ['X\([^:]*\)']`[]dnl
+])
+
+# _AC_CONFIG_SPLIT_SOURCE_DEST
+# ----------------------------
+#
+# Used in CONFIG_COMMANDS and CONFIG_LINKS sections.
+#
+m4_define([_AC_CONFIG_SPLIT_SOURCE_DEST],
+[case $ac_file in
+  *:*) _AC_CONFIG_SPLIT(ac_file, ac_dest, ac_source) ;;
+  *)   ac_dest=$ac_file ac_source=$ac_file ;;
+esac[]dnl
+])
+
+# _AC_CONFIG_SPLIT_FILE_IN
+# ------------------------
+#
+# Used in CONFIG_HEADERS and CONFIG_FILES sections.
+#
+m4_define([_AC_CONFIG_SPLIT_FILE_IN],
+[case $ac_file in
+  *:*) _AC_CONFIG_SPLIT(ac_file, ac_file, ac_file_in) ;;
+  -)   ac_file_in=- ;;
+  *)   ac_file_in=$ac_file.in ;;
+esac[]dnl
+])
+
+
 
 ## ------------------------ ##
 ## Configuration commands.  ##
@@ -363,8 +401,7 @@
 # CONFIG_COMMANDS section.
 #
 for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
-  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-  ac_source=`echo "$ac_file" | sed 's,[[^:]]*:,,'`
+  _AC_CONFIG_SPLIT_SOURCE_DEST
   ac_dir=`AS_DIRNAME(["$ac_dest"])`
   AS_MKDIR_P(["$ac_dir"])
   _AC_SRCDIRS(["$ac_dir"])
@@ -483,7 +520,7 @@
 [cat >>$CONFIG_STATUS <<\_ACEOF
 
 #
-# CONFIG_HEADER section.
+# CONFIG_HEADERS section.
 #
 
 # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
@@ -505,13 +542,9 @@
   # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
   case $ac_file in
   - | *:- | *:-:* ) # input from stdin
-       cat >"$tmp/stdin"
-       ac_file_in=`echo "$ac_file" | sed 's,[[^:]]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[[^:]]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
+       cat >"$tmp/stdin" ;;
   esac
+  _AC_CONFIG_SPLIT_FILE_IN
 
   test x"$ac_file" != x- && AC_MSG_NOTICE([creating $ac_file])
 
@@ -727,7 +760,7 @@
 # interest in creating config links with literal values, no special
 # mechanism is implemented to handle them.
 #
-# _AC_LINK_CNT is used to be robust to multiple calls.
+# _AC_LINK_FILES_CNT is used to be robust to multiple calls.
 AU_DEFUN([AC_LINK_FILES],
 [m4_if($#, 2, ,
        [m4_fatal([$0: incorrect number of arguments])])dnl
@@ -766,8 +799,7 @@
 dnl with empty parameters (as in gettext.m4), then we obtain here
 dnl `:', which we want to skip.  So let's keep a single exception: `:'.
 for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue
-  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-  ac_source=`echo "$ac_file" | sed 's,[[^:]]*:,,'`
+  _AC_CONFIG_SPLIT_SOURCE_DEST
 
   AC_MSG_NOTICE([linking $srcdir/$ac_source to $ac_dest])
 
@@ -932,13 +964,9 @@
   # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
   case $ac_file in
   - | *:- | *:-:* ) # input from stdin
-       cat >"$tmp/stdin"
-       ac_file_in=`echo "$ac_file" | sed 's,[[^:]]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[[^:]]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
+       cat >"$tmp/stdin" ;;
   esac
+  _AC_CONFIG_SPLIT_FILE_IN
 
   # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
   ac_dir=`AS_DIRNAME(["$ac_file"])`
@@ -1405,8 +1433,8 @@
 do
   case $[1] in
   --*=*)
-    ac_option=`expr "x$[1]" : 'x\([[^=]]*\)='`
-    ac_optarg=`expr "x$[1]" : 'x[[^=]]*=\(.*\)'`
+    ac_option=`expr "X$[1]" : 'X\([[^=]]*\)='`
+    ac_optarg=`expr "X$[1]" : 'X[[^=]]*=\(.*\)'`
     ac_shift=:
     ;;
   -*)
Index: lib/autotest/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autotest/general.m4,v
retrieving revision 1.177
diff -u -r1.177 general.m4
--- lib/autotest/general.m4     14 May 2005 07:00:40 -0000      1.177
+++ lib/autotest/general.m4     17 May 2005 09:27:00 -0000
@@ -320,8 +320,8 @@
     [[0-9][0-9][0-9]-[0-9][0-9][0-9]] | \
     [[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]] | \
     [[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]] )
-       at_range_start=`echo $at_option |sed 's,-.*,,'`
-       at_range_end=`echo $at_option |sed 's,.*-,,'`
+       at_range_start=`expr $at_option : '\([^-]*\)'`
+       at_range_end=`expr $at_option : '[^-]*-\(.*\)'`
        # FIXME: Maybe test to make sure start <= end?
        at_range=`echo " $at_groups_all " | \
          sed -e 's,^.* '$at_range_start' ,'$at_range_start' ,' \
Index: tests/local.at
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/local.at,v
retrieving revision 1.14
diff -u -r1.14 local.at
--- tests/local.at      14 May 2005 07:00:40 -0000      1.14
+++ tests/local.at      17 May 2005 09:27:00 -0000
@@ -53,7 +53,7 @@
 m4_define([AT_CHECK_SHELL_SYNTAX],
 [AS_IF([test x"$ac_cv_sh_n_works" != xno],
   [AT_CHECK([/bin/sh -n $1], 0)], [$2])
-AT_CHECK([grep '\@<:@\^.*).*;;' $1], 1)])
+AT_CHECK([awk '/^[ \t]*case/,/^[ \t]*esac/{if(/\@<:@\^.*\)/) exit(1)}' $1])])
 
 m4_define([AT_CHECK_PERL_SYNTAX],
 [AT_CHECK([autom4te_perllibdir=$abs_top_srcdir/lib $PERL -c 
$abs_top_builddir/bin/$1],

Reply via email to