From 82b8d0f5639421c205dd33cc7c25e1bbe149e6cb Mon Sep 17 00:00:00 2001
From: David Hedbor <david@hedbor.org>
Date: Fri, 18 Aug 1995 19:31:50 +0200
Subject: [PATCH] sdf

Rev: src/opcodes.c:1.4
Rev: src/port.c:1.4
Rev: src/types.h:1.4
---
 src/opcodes.c |  2 +-
 src/port.c    | 30 +++++++++++++++++++++++++++---
 src/types.h   |  3 ++-
 3 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/src/opcodes.c b/src/opcodes.c
index 2e111d5ef4..108ff9c99f 100644
--- a/src/opcodes.c
+++ b/src/opcodes.c
@@ -432,7 +432,7 @@ static INT32 low_sscanf(INT32 num_arg)
 	  s=MEMMEM(end_str_start,
 		   end_str_end-end_str_start,
 		   input+eye,
-		   input_len-eye);
+		   (SIZE_T)(input_len-eye));
 	  if(!s) return matches;
 	  eye=s-input;
 	  new_eye=eye+end_str_end-end_str_start;
diff --git a/src/port.c b/src/port.c
index 5d4ae22ddc..8de3e0ffaf 100644
--- a/src/port.c
+++ b/src/port.c
@@ -145,7 +145,30 @@ char *MEMCHR(char *p,char c,int e)
 #endif
 
 #ifndef HAVE_MEMMEM
-
+#if 1
+char *MEMMEM(char *needle, SIZE_T needlelen, char *haystack,
+	     SIZE_T haystacklen)
+{
+  if(needlelen>haystacklen)
+    return 0;
+  switch(needlelen)
+  {
+  case 0: return haystack;
+  case 1: return MEMCHR(haystack,needle[0],haystacklen);
+  default:
+   SIZE_T i, j;
+   for(i=0; i<haystacklen-needlelen; i++)
+   {
+     for(j=0; j<needlelen; j++)
+       if(haystack[i] != needle[j])
+	 break;
+     if(j==needlelen)
+       return haystack+i;
+   }
+   return 0;
+ }
+}
+#else 
 /*
  * a quick memmem
  * Written by Fredrik Hubinette (hubbe@lysator.liu.se)
@@ -159,7 +182,8 @@ typedef struct link2_s
   INT32 key, offset;
 } link2;
 
-char *MEMMEM(char *needle, SIZE_T needlelen, char *haystack, SIZE_T haystacklen)
+char *MEMMEM(char *needle, SIZE_T needlelen, char *haystack, 
+	     SIZE_T haystacklen)
 {
   if(needlelen > haystacklen) return 0;
 
@@ -281,7 +305,7 @@ char *MEMMEM(char *needle, SIZE_T needlelen, char *haystack, SIZE_T haystacklen)
     
   }
 }
-
+#endif
 #endif
 
 #if !defined(HAVE_INDEX) && !defined(HAVE_STRCHR)
diff --git a/src/types.h b/src/types.h
index 3ebfac2b4b..7933f77663 100644
--- a/src/types.h
+++ b/src/types.h
@@ -9,7 +9,7 @@
 #if SIZEOF_SHORT >= 4
 #define INT32 short
 #else
-#if SIZEOF_INT < 4
+#if SIZEOF_INT >= 4
 #define INT32 int
 #else
 #define INT32 long
@@ -26,4 +26,5 @@
 
 #define FLOAT_TYPE float
 
+#include "memory.h"
 #endif
-- 
GitLab