bug-gnulib
[Top][All Lists]
Advanced

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

Re: strstr


From: Bruno Haible
Subject: Re: strstr
Date: Thu, 18 Jun 2009 10:16:09 +0200
User-agent: KMail/1.9.9

In strcasestr.m4, there is no need to do the linear time check if gnulib is
going to override the function anyway.

Also, I prefer not to rely on AC_REPLACE_FUNCS when it makes the code harder
to understand. AC_REPLACE_FUNCS is a nice shorthand for the simple cases, but
here its use leads to duplicated code. Instead, use the idiom found in
m4/mbsrtowcs.m4 and elsewhere.


2009-06-18  Bruno Haible  <address@hidden>

        * 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.

--- m4/strcasestr.m4.orig       2009-06-18 10:08:10.000000000 +0200
+++ m4/strcasestr.m4    2009-06-18 10:01:52.000000000 +0200
@@ -7,17 +7,21 @@
 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 @@
 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 @@
     if test "$gl_cv_func_strcasestr_linear" != yes; then
       REPLACE_STRCASESTR=1
       AC_LIBOBJ([strcasestr])
+      gl_PREREQ_STRCASESTR
     fi
   fi
 ]) # gl_FUNC_STRCASESTR




reply via email to

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