From a9f55f411d42fc5f60c099d7d9bc432f0be3852d Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 17 May 2012 00:43:06 -0400 Subject: rpmoffset: provide a local memmem for non-glibc systems URL: https://bugs.gentoo.org/397835 Reported-by: Christoph Junghans Signed-off-by: Mike Frysinger --- rpmoffset.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'rpmoffset.c') diff --git a/rpmoffset.c b/rpmoffset.c index 0a3c488..628af93 100644 --- a/rpmoffset.c +++ b/rpmoffset.c @@ -19,6 +19,26 @@ # define BUFSIZ 8192 #endif +#if !defined(__GLIBC__) +static void *rp_memmem(const void *buf, size_t buflen, const void *pattern, size_t len) +{ + char *bf = (char *)buf, *pt = (char *)pattern, *p = bf; + + while (len <= (buflen - (p - bf))) { + if (NULL != (p = memchr(p, (int)(*pt), buflen - (p - bf)))) { + if (0 == memcmp(p, pattern, len)) + return p; + else + ++p; + } + else + break; + } + return NULL; +} +#define memmem(a,b,c,d) rp_memmem(a,b,c,d) +#endif + typedef struct { const char *type; const unsigned char *magic; -- cgit v1.2.3