Skip linear-time test if it is redundant.
authorBruno Haible <bruno@clisp.org>
Thu, 18 Jun 2009 08:16:21 +0000 (10:16 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 18 Jun 2009 08:16:21 +0000 (10:16 +0200)
ChangeLog
m4/strcasestr.m4

index f001677..9ef6472 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-06-18  Bruno Haible  <bruno@clisp.org>
+
+       * m4/strcasestr.m4 (gl_FUNC_STRCASESTR_SIMPLE): Invoke AC_LIBOBJ only
+       in one place.
+       (gl_FUNC_STRCASESTR): Skip linear time test if strcasestr is going to
+       be replaced anyway.
+
 2009-06-18  Eric Blake  <ebb9@byu.net>
 
        hash: check for resize before insertion
index d641958..62991b1 100644 (file)
@@ -7,17 +7,21 @@ dnl with or without modifications, as long as this notice is preserved.
 dnl Check that strcasestr is present and works.
 AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE],
 [
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+
   dnl Persuade glibc <string.h> to declare strcasestr().
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
   AC_REQUIRE([gl_FUNC_MEMCHR])
-  AC_REPLACE_FUNCS([strcasestr])
+  AC_CHECK_FUNCS([strcasestr])
   if test $ac_cv_func_strcasestr = no; then
     HAVE_STRCASESTR=0
-    gl_PREREQ_STRCASESTR
-  elif test "$gl_cv_func_memchr_works" != yes; then
-    REPLACE_STRCASESTR=1
+  else
+    if test "$gl_cv_func_memchr_works" != yes; then
+      REPLACE_STRCASESTR=1
+    fi
+  fi
+  if test $HAVE_STRCASESTR = 0 || test $REPLACE_STRCASESTR = 1; then
     AC_LIBOBJ([strcasestr])
     gl_PREREQ_STRCASESTR
   fi
@@ -27,7 +31,7 @@ dnl Additionally, check that strcasestr is efficient.
 AC_DEFUN([gl_FUNC_STRCASESTR],
 [
   AC_REQUIRE([gl_FUNC_STRCASESTR_SIMPLE])
-  if test $ac_cv_func_strcasestr = yes; then
+  if test $HAVE_STRCASESTR = 1 && test $REPLACE_STRCASESTR = 0; then
     AC_CACHE_CHECK([whether strcasestr works in linear time],
       [gl_cv_func_strcasestr_linear],
       [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
@@ -80,6 +84,7 @@ AC_DEFUN([gl_FUNC_STRCASESTR],
     if test "$gl_cv_func_strcasestr_linear" != yes; then
       REPLACE_STRCASESTR=1
       AC_LIBOBJ([strcasestr])
+      gl_PREREQ_STRCASESTR
     fi
   fi
 ]) # gl_FUNC_STRCASESTR