+2008-05-15 Bruno Haible <bruno@clisp.org>
+
+ * m4/memmem.m4 (gl_FUNC_MEMMEM): When cross-compiling, assume a fast
+ implementation in glibc >= 2.9.
+ * m4/strstr.m4 (gl_FUNC_STRSTR): Likewise.
+ * m4/strcasestr.m4 (gl_FUNC_STRCASESTR): Likewise.
+
2008-05-15 Bruno Haible <bruno@clisp.org>
* MODULES.html.sh (Internationalization functions): Remove linebreak.
-# memmem.m4 serial 10
+# memmem.m4 serial 11
dnl Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
/* Check for empty needle behavior. */
return !result || !memmem ("a", 1, 0, 0);]])],
[gl_cv_func_memmem_works=yes], [gl_cv_func_memmem_works=no],
- [dnl pessimistically assume the worst, since even glibc 2.6.1
- dnl has quadratic complexity in its memmem
- gl_cv_func_memmem_works="guessing no"])])
+ [dnl Only glibc >= 2.9 is known to have a memmem that works in
+ dnl linear time.
+ AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ [gl_cv_func_memmem_works=yes],
+ [gl_cv_func_memmem_works="guessing no"])
+ ])
+ ])
if test "$gl_cv_func_memmem_works" != yes; then
REPLACE_MEMMEM=1
AC_LIBOBJ([memmem])
-# strcasestr.m4 serial 9
+# strcasestr.m4 serial 10
dnl Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
result = strcasestr (haystack, needle);
}
return !result;]])],
- [gl_cv_func_strcasestr_linear=yes], [gl_cv_func_strcasestr_linear=no],
- [dnl pessimistically assume the worst, since even glibc 2.6.1
- dnl has quadratic complexity in its strcasestr
- gl_cv_func_strcasestr_linear="guessing no"])])
+ [gl_cv_func_strcasestr_linear=yes], [gl_cv_func_strcasestr_linear=no],
+ [dnl Only glibc >= 2.9 is known to have an strcasestr that works in
+ dnl linear time.
+ AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ [gl_cv_func_strcasestr_linear=yes],
+ [gl_cv_func_strcasestr_linear="guessing no"])
+ ])
+ ])
if test "$gl_cv_func_strcasestr_linear" != yes; then
REPLACE_STRCASESTR=1
AC_LIBOBJ([strcasestr])
-# strstr.m4 serial 2
+# strstr.m4 serial 3
dnl Copyright (C) 2008 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
}
return !result;]])],
[gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no],
- [dnl pessimistically assume the worst, since even glibc 2.6.1
- dnl has quadratic complexity in its strstr
- gl_cv_func_strstr_linear="guessing no"])])
+ [dnl Only glibc >= 2.9 is known to have an strstr that works in
+ dnl linear time.
+ AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ [gl_cv_func_strstr_linear=yes],
+ [gl_cv_func_strstr_linear="guessing no"])
+ ])
+ ])
if test "$gl_cv_func_strstr_linear" != yes; then
REPLACE_STRSTR=1
AC_LIBOBJ([strstr])