bug-gnulib
[Top][All Lists]
Advanced

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

Re: glibc strstr is no longer quadratic


From: Eric Blake
Subject: Re: glibc strstr is no longer quadratic
Date: Thu, 15 May 2008 19:56:38 -0600
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080421 Thunderbird/2.0.0.14 Mnenhy/0.7.5.666

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Eric Blake on 5/15/2008 3:42 PM:
| Bruno Haible <bruno <at> clisp.org> writes:
|
|> Eric Blake wrote:
|>> http://sourceware.org/bugzilla/show_bug.cgi?id=5514 was finally closed, so
|>> the next release of glibc will no longer have a quadratic strstr/memmem.
|> Congratulations! I'm updating the guesses for cross-compiles.
|
| Cygwin 1.7.0 also has a linear version.  I'll work on a patch that
updates the
| cross-compilation guesses to account for cygwin.

Like this.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkgs6dUACgkQ84KuGfSFAYBswgCgoqXf+8WPbxIUYlmdTsjfnY9x
am4An1Zkr2nvyYClAvxDuPgrf6mLH3tS
=WEhK
-----END PGP SIGNATURE-----
>From 0ce8aa7c1dfb56c1f64dcc799a4038eac1f55e95 Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Thu, 15 May 2008 19:55:56 -0600
Subject: [PATCH] Extend previous patch to cygwin 1.7.0.

* m4/memmem.m4 (gl_FUNC_MEMMEM): When cross-compiling, assume a
fast implementation in cygwin >= 1.7.0.
* m4/strstr.m4 (gl_FUNC_STRSTR): Likewise.
* m4/strcasestr.m4 (gl_FUNC_STRCASESTR): Likewise.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog        |    8 ++++++++
 m4/memmem.m4     |   16 +++++++++++-----
 m4/strcasestr.m4 |   16 +++++++++++-----
 m4/strstr.m4     |   16 +++++++++++-----
 4 files changed, 41 insertions(+), 15 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ddbc8e2..71ae836 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-15  Eric Blake  <address@hidden>
+
+       Extend previous patch to cygwin 1.7.0.
+       * m4/memmem.m4 (gl_FUNC_MEMMEM): When cross-compiling, assume a
+       fast implementation in cygwin >= 1.7.0.
+       * m4/strstr.m4 (gl_FUNC_STRSTR): Likewise.
+       * m4/strcasestr.m4 (gl_FUNC_STRCASESTR): Likewise.
+
 2008-05-15  Bruno Haible  <address@hidden>
 
        * m4/memmem.m4 (gl_FUNC_MEMMEM): When cross-compiling, assume a fast
diff --git a/m4/memmem.m4 b/m4/memmem.m4
index c7bd9d6..d8c1230 100644
--- a/m4/memmem.m4
+++ b/m4/memmem.m4
@@ -1,4 +1,4 @@
-# memmem.m4 serial 11
+# memmem.m4 serial 12
 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,
@@ -49,14 +49,20 @@ AC_DEFUN([gl_FUNC_MEMMEM],
     /* 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 Only glibc >= 2.9 is known to have a memmem that works in
-        dnl linear time.
-        AC_EGREP_CPP([Lucky GNU user],
+       [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a
+        dnl memmem that works in linear time.
+        AC_EGREP_CPP([Lucky user],
           [
 #include <features.h>
 #ifdef __GNU_LIBRARY__
  #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
-  Lucky GNU user
+  Lucky user
+ #endif
+#endif
+#ifdef __CYGWIN__
+ #include <cygwin/version.h>
+ #if CYGWIN_VERSION_DLL_MAJOR >= 1007
+  Lucky user
  #endif
 #endif
           ],
diff --git a/m4/strcasestr.m4 b/m4/strcasestr.m4
index d8925ad..0ad895a 100644
--- a/m4/strcasestr.m4
+++ b/m4/strcasestr.m4
@@ -1,4 +1,4 @@
-# strcasestr.m4 serial 10
+# strcasestr.m4 serial 11
 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,
@@ -49,14 +49,20 @@ AC_DEFUN([gl_FUNC_STRCASESTR],
       }
     return !result;]])],
        [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],
+        [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a
+         dnl strcasestr that works in linear time.
+        AC_EGREP_CPP([Lucky user],
           [
 #include <features.h>
 #ifdef __GNU_LIBRARY__
  #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
-  Lucky GNU user
+  Lucky user
+ #endif
+#endif
+#ifdef __CYGWIN__
+ #include <cygwin/version.h>
+ #if CYGWIN_VERSION_DLL_MAJOR >= 1007
+  Lucky user
  #endif
 #endif
           ],
diff --git a/m4/strstr.m4 b/m4/strstr.m4
index fe01d5f..67b93c9 100644
--- a/m4/strstr.m4
+++ b/m4/strstr.m4
@@ -1,4 +1,4 @@
-# strstr.m4 serial 3
+# strstr.m4 serial 4
 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,
@@ -34,14 +34,20 @@ AC_DEFUN([gl_FUNC_STRSTR],
       }
     return !result;]])],
       [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no],
-      [dnl Only glibc >= 2.9 is known to have an strstr that works in
-       dnl linear time.
-       AC_EGREP_CPP([Lucky GNU user],
+      [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a
+       dnl strstr that works in linear time.
+       AC_EGREP_CPP([Lucky user],
         [
 #include <features.h>
 #ifdef __GNU_LIBRARY__
  #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
-  Lucky GNU user
+  Lucky user
+ #endif
+#endif
+#ifdef __CYGWIN__
+ #include <cygwin/version.h>
+ #if CYGWIN_VERSION_DLL_MAJOR >= 1007
+  Lucky user
  #endif
 #endif
         ],
-- 
1.5.5.1


reply via email to

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