From 98c030960b7120f582e32835686e624d300702cd Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Wed, 3 Sep 2014 23:04:38 +0200
Subject: [PATCH] memchr is C89 and 4.3BSD

---
 src/configure.in  |  1 -
 src/pike_memory.h |  2 +-
 src/port.c        | 10 ----------
 src/port.h        |  7 ++-----
 src/stralloc.c    |  2 +-
 5 files changed, 4 insertions(+), 18 deletions(-)

diff --git a/src/configure.in b/src/configure.in
index 808440090b..1bfdc77c0f 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -4542,7 +4542,6 @@ AC_CHECK_FUNCS( \
  strptime \
  mallinfo \
  mallopt \
- memchr \
  mktime \
  perror \
  ptrace \
diff --git a/src/pike_memory.h b/src/pike_memory.h
index 49f81d5993..98adb2c07e 100644
--- a/src/pike_memory.h
+++ b/src/pike_memory.h
@@ -197,7 +197,7 @@ extern int page_size;
 PMOD_EXPORT ptrdiff_t pcharp_memcmp(PCHARP a, PCHARP b, int sz) ATTRIBUTE((pure));
 PMOD_EXPORT long pcharp_strlen(PCHARP a)  ATTRIBUTE((pure));
 
-#define MEMCHR0 MEMCHR
+#define MEMCHR0 memchr
 p_wchar1 *MEMCHR1(p_wchar1 *p, p_wchar2 c, ptrdiff_t e)  ATTRIBUTE((pure));
 p_wchar2 *MEMCHR2(p_wchar2 *p, p_wchar2 c, ptrdiff_t e)  ATTRIBUTE((pure));
 
diff --git a/src/port.c b/src/port.c
index a0274529d8..1c562db1d5 100644
--- a/src/port.c
+++ b/src/port.c
@@ -262,16 +262,6 @@ PMOD_EXPORT int STRCASECMP(const char *a,const char *b)
 }
 #endif
 
-#ifndef HAVE_MEMCHR
-PMOD_EXPORT void *MEMCHR(const void *p,char c,size_t e)
-{
-  const char *t = p;
-  while(e--) if(*(t++)==c) return t-1;
-  return (char *)NULL;
-}
-#endif
-
-
 #if !defined(HAVE_INDEX) && !defined(HAVE_STRCHR)
 PMOD_EXPORT char *STRCHR(char *s,int c)
 {
diff --git a/src/port.h b/src/port.h
index 2333dfa926..4c7fffea17 100644
--- a/src/port.h
+++ b/src/port.h
@@ -182,11 +182,8 @@ PMOD_EXPORT int STRCASECMP(const char *a,const char *b);
 #define HAVE_MEMCMP 1
 #define MEMCMP(X,Y,Z) memcmp((X),(Y),(Z))
 
-#ifndef HAVE_MEMCHR
-PMOD_EXPORT void *MEMCHR(const void *p,char c,size_t e);
-#else
-#  define MEMCHR(X,Y,Z) ((void *)memchr(X,Y,Z))
-#endif
+#define HAVE_MEMCHR 1
+#define MEMCHR(X,Y,Z) memchr(X,Y,Z)
 
 #ifndef HAVE_STRCHR
 PMOD_EXPORT char *STRCHR(char *s,int c);
diff --git a/src/stralloc.c b/src/stralloc.c
index 99de0b4194..d3d98b76e9 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -3223,7 +3223,7 @@ PMOD_EXPORT PCHARP MEMCHR_PCHARP(PCHARP ptr, int chr, ptrdiff_t len)
 {
   switch(ptr.shift)
   {
-    case 0: return MKPCHARP(MEMCHR(ptr.ptr,chr,len),0);
+    case 0: return MKPCHARP(memchr(ptr.ptr,chr,len),0);
     case 1: return MKPCHARP(MEMCHR1((p_wchar1 *)ptr.ptr,chr,len),1);
     case 2: return MKPCHARP(MEMCHR2((p_wchar2 *)ptr.ptr,chr,len),2);
   }
-- 
GitLab