[PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-14 Thread Carl Worth
On Tue, 13 Apr 2010 13:05:08 -0700, Dirk Hohndel  
wrote:
> On Tue, 13 Apr 2010 20:47:02 +0200, Tomas Carnecky  
> wrote:
> > On 4/13/10 6:47 PM, Dirk Hohndel wrote:
> > > v.3 of this patch, now with the changes to makefiles, configure script
> > > compat.h and all new files that I need
> > > Please test on platforms lacking strcasestr
...
> > Tested-by: Tomas Carnecky 
> 
> Thanks Tomas, I really appreciate it.

Thanks to both Dirk and Thomas for this portability fix.

I've pushed it now, with a few minor changes:

  * Delete trailing whitespace

  * Add include of "compat.h" from strcasestr.c

  * Use original commit message from Dirk

Dirk, the commit message you sent with version 1 of the patch was
perfect. When you send followup patches, please leave a good commit
message as the initial content of the email. Then add any explanatory
text, ("v.3 of this patch...", "Please test..."), in the email *after*
the "---" separator (just before the diffstat). That way it won't become
part of the commit message and our indelible history.

For now, I manually touched things up, but it would be nice to not have
to do that in the future.

Thanks!

-Carl
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



Re: [PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-14 Thread Carl Worth
On Tue, 13 Apr 2010 13:05:08 -0700, Dirk Hohndel hohn...@infradead.org wrote:
 On Tue, 13 Apr 2010 20:47:02 +0200, Tomas Carnecky t...@dbservice.com wrote:
  On 4/13/10 6:47 PM, Dirk Hohndel wrote:
   v.3 of this patch, now with the changes to makefiles, configure script
   compat.h and all new files that I need
   Please test on platforms lacking strcasestr
...
  Tested-by: Tomas Carnecky t...@dbservice.com
 
 Thanks Tomas, I really appreciate it.

Thanks to both Dirk and Thomas for this portability fix.

I've pushed it now, with a few minor changes:

  * Delete trailing whitespace

  * Add include of compat.h from strcasestr.c

  * Use original commit message from Dirk

Dirk, the commit message you sent with version 1 of the patch was
perfect. When you send followup patches, please leave a good commit
message as the initial content of the email. Then add any explanatory
text, (v.3 of this patch..., Please test...), in the email *after*
the --- separator (just before the diffstat). That way it won't become
part of the commit message and our indelible history.

For now, I manually touched things up, but it would be nice to not have
to do that in the future.

Thanks!

-Carl


pgpfa8cEQzk6u.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-13 Thread Tomas Carnecky
On 4/13/10 6:47 PM, Dirk Hohndel wrote:
>
> v.3 of this patch, now with the changes to makefiles, configure script
> compat.h and all new files that I need
> Please test on platforms lacking strcasestr
>
> Signed-off-by: Dirk Hohndel

Tested-by: Tomas Carnecky 

(on OpenSolaris snv_134)

tom



[PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-13 Thread Dirk Hohndel
On Tue, 13 Apr 2010 20:47:02 +0200, Tomas Carnecky  wrote:
> On 4/13/10 6:47 PM, Dirk Hohndel wrote:
> >
> > v.3 of this patch, now with the changes to makefiles, configure script
> > compat.h and all new files that I need
> > Please test on platforms lacking strcasestr
> >
> > Signed-off-by: Dirk Hohndel
> 
> Tested-by: Tomas Carnecky 
> 
> (on OpenSolaris snv_134)

Thanks Tomas, I really appreciate it.

/D

-- 
Dirk Hohndel
Intel Open Source Technology Center


[PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-13 Thread Dirk Hohndel

v.3 of this patch, now with the changes to makefiles, configure script
compat.h and all new files that I need
Please test on platforms lacking strcasestr

Signed-off-by: Dirk Hohndel 
---
 compat/Makefile.local|4 
 compat/compat.h  |4 
 compat/have_strcasestr.c |   10 ++
 compat/strcasestr.c  |   41 +
 configure|   20 ++--
 5 files changed, 77 insertions(+), 2 deletions(-)
 create mode 100644 compat/have_strcasestr.c
 create mode 100644 compat/strcasestr.c

diff --git a/compat/Makefile.local b/compat/Makefile.local
index 81e6c70..2a17309 100644
--- a/compat/Makefile.local
+++ b/compat/Makefile.local
@@ -8,3 +8,7 @@ notmuch_compat_srcs =
 ifneq ($(HAVE_GETLINE),1)
 notmuch_compat_srcs += $(dir)/getline.c $(dir)/getdelim.c
 endif
+
+ifneq ($(HAVE_STRCASESTR),1)
+notmuch_compat_srcs += $(dir)/strcasestr.c 
+endif
diff --git a/compat/compat.h b/compat/compat.h
index d639e0f..173ef68 100644
--- a/compat/compat.h
+++ b/compat/compat.h
@@ -38,4 +38,8 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp);

 #endif /* !HAVE_GETLINE */

+#if !HAVE_STRCASESTR
+char* strcasestr(const char *haystack, const char *needle);
+#endif /* !HAVE_STRCASESTR */
+
 #endif /* NOTMUCH_COMPAT_H */
diff --git a/compat/have_strcasestr.c b/compat/have_strcasestr.c
new file mode 100644
index 000..c0fb762
--- /dev/null
+++ b/compat/have_strcasestr.c
@@ -0,0 +1,10 @@
+#define _GNU_SOURCE
+#include 
+
+int main()
+{
+char *found;
+const char *haystack, *needle;
+
+found = strcasestr(haystack, needle);
+}
diff --git a/compat/strcasestr.c b/compat/strcasestr.c
new file mode 100644
index 000..50bc89d
--- /dev/null
+++ b/compat/strcasestr.c
@@ -0,0 +1,41 @@
+/*
+ * slow simplistic reimplementation of strcasestr for systems that
+ * don't include it in their library
+ *
+ * based on a GPL implementation in OpenTTD found under GPL v2
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation, version 2.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/* Imported into notmuch by Dirk Hohndel - original author unknown. */
+/* the semantic here actually puzzles me:
+   how can haystack be const char * - yet the return value is char *
+   after all, it points to a sub-string of haystack... */
+
+#include 
+
+char *strcasestr(const char *haystack, const char *needle)
+{
+   size_t hay_len = strlen(haystack);
+   size_t needle_len = strlen(needle);
+   while (hay_len >= needle_len) {
+   if (strncasecmp(haystack, needle, needle_len) == 0) 
+   return (char *) haystack;
+
+   haystack++;
+   hay_len--;
+   }
+
+   return NULL;
+}
diff --git a/configure b/configure
index 5af7852..90a399c 100755
--- a/configure
+++ b/configure
@@ -310,6 +310,17 @@ else
 fi
 rm -f compat/have_getline

+printf "Checking for strcasestr... "
+if ${CC} -o compat/have_strcasestr compat/have_strcasestr.c > /dev/null 2>&1
+then
+printf "Yes.\n"
+have_strcasestr=1
+else
+printf "No (will use our own instead).\n"
+have_strcasestr=0
+fi
+rm -f compat/have_strcasestr
+
 cat <

[PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-13 Thread Dirk Hohndel

v.3 of this patch, now with the changes to makefiles, configure script
compat.h and all new files that I need
Please test on platforms lacking strcasestr

Signed-off-by: Dirk Hohndel hohn...@infradead.org
---
 compat/Makefile.local|4 
 compat/compat.h  |4 
 compat/have_strcasestr.c |   10 ++
 compat/strcasestr.c  |   41 +
 configure|   20 ++--
 5 files changed, 77 insertions(+), 2 deletions(-)
 create mode 100644 compat/have_strcasestr.c
 create mode 100644 compat/strcasestr.c

diff --git a/compat/Makefile.local b/compat/Makefile.local
index 81e6c70..2a17309 100644
--- a/compat/Makefile.local
+++ b/compat/Makefile.local
@@ -8,3 +8,7 @@ notmuch_compat_srcs =
 ifneq ($(HAVE_GETLINE),1)
 notmuch_compat_srcs += $(dir)/getline.c $(dir)/getdelim.c
 endif
+
+ifneq ($(HAVE_STRCASESTR),1)
+notmuch_compat_srcs += $(dir)/strcasestr.c 
+endif
diff --git a/compat/compat.h b/compat/compat.h
index d639e0f..173ef68 100644
--- a/compat/compat.h
+++ b/compat/compat.h
@@ -38,4 +38,8 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp);
 
 #endif /* !HAVE_GETLINE */
 
+#if !HAVE_STRCASESTR
+char* strcasestr(const char *haystack, const char *needle);
+#endif /* !HAVE_STRCASESTR */
+
 #endif /* NOTMUCH_COMPAT_H */
diff --git a/compat/have_strcasestr.c b/compat/have_strcasestr.c
new file mode 100644
index 000..c0fb762
--- /dev/null
+++ b/compat/have_strcasestr.c
@@ -0,0 +1,10 @@
+#define _GNU_SOURCE
+#include strings.h
+
+int main()
+{
+char *found;
+const char *haystack, *needle;
+
+found = strcasestr(haystack, needle);
+}
diff --git a/compat/strcasestr.c b/compat/strcasestr.c
new file mode 100644
index 000..50bc89d
--- /dev/null
+++ b/compat/strcasestr.c
@@ -0,0 +1,41 @@
+/*
+ * slow simplistic reimplementation of strcasestr for systems that
+ * don't include it in their library
+ *
+ * based on a GPL implementation in OpenTTD found under GPL v2
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation, version 2.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/* Imported into notmuch by Dirk Hohndel - original author unknown. */
+/* the semantic here actually puzzles me:
+   how can haystack be const char * - yet the return value is char *
+   after all, it points to a sub-string of haystack... */
+
+#include string.h
+
+char *strcasestr(const char *haystack, const char *needle)
+{
+   size_t hay_len = strlen(haystack);
+   size_t needle_len = strlen(needle);
+   while (hay_len = needle_len) {
+   if (strncasecmp(haystack, needle, needle_len) == 0) 
+   return (char *) haystack;
+
+   haystack++;
+   hay_len--;
+   }
+
+   return NULL;
+}
diff --git a/configure b/configure
index 5af7852..90a399c 100755
--- a/configure
+++ b/configure
@@ -310,6 +310,17 @@ else
 fi
 rm -f compat/have_getline
 
+printf Checking for strcasestr... 
+if ${CC} -o compat/have_strcasestr compat/have_strcasestr.c  /dev/null 21
+then
+printf Yes.\n
+have_strcasestr=1
+else
+printf No (will use our own instead).\n
+have_strcasestr=0
+fi
+rm -f compat/have_strcasestr
+
 cat EOF
 
 All required packages were found. You may now run the following
@@ -384,6 +395,10 @@ zsh_completion_dir = 
\$(prefix)/share/zsh/functions/Completion/Unix
 # build its own version)
 HAVE_GETLINE = ${have_getline}
 
+# Whether the strcasestr function is available (if not, then notmuch will
+# build its own version)
+HAVE_STRCASESTR = ${have_strcasestr}
+
 # Flags needed to compile and link against Xapian
 XAPIAN_CXXFLAGS = ${xapian_cxxflags}
 XAPIAN_LDFLAGS = ${xapian_ldflags}
@@ -405,9 +420,10 @@ VALGRIND_CFLAGS = ${valgrind_cflags}
 # Combined flags for compiling and linking against all of the above
 CONFIGURE_CFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS)  \\
   \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND)   \\
-  \$(VALGRIND_CFLAGS)
+  \$(VALGRIND_CFLAGS) -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR)
 CONFIGURE_CXXFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS)\\
 \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
-\$(VALGRIND_CFLAGS) \$(XAPIAN_CXXFLAGS)
+\$(VALGRIND_CFLAGS) \$(XAPIAN_CXXFLAGS) \\
+ 

Re: [PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-13 Thread Tomas Carnecky

On 4/13/10 6:47 PM, Dirk Hohndel wrote:


v.3 of this patch, now with the changes to makefiles, configure script
compat.h and all new files that I need
Please test on platforms lacking strcasestr

Signed-off-by: Dirk Hohndelhohn...@infradead.org


Tested-by: Tomas Carnecky t...@dbservice.com

(on OpenSolaris snv_134)

tom

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] Add strcasestr v.3 - add compat implementation of strcasestr

2010-04-13 Thread Dirk Hohndel
On Tue, 13 Apr 2010 20:47:02 +0200, Tomas Carnecky t...@dbservice.com wrote:
 On 4/13/10 6:47 PM, Dirk Hohndel wrote:
 
  v.3 of this patch, now with the changes to makefiles, configure script
  compat.h and all new files that I need
  Please test on platforms lacking strcasestr
 
  Signed-off-by: Dirk Hohndelhohn...@infradead.org
 
 Tested-by: Tomas Carnecky t...@dbservice.com
 
 (on OpenSolaris snv_134)

Thanks Tomas, I really appreciate it.

/D

-- 
Dirk Hohndel
Intel Open Source Technology Center
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch