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