MINOR: tools: function my_memmem() to lookup binary contents
This function simply looks for a memory block inside another one.
Signed-off-by: Baptiste Assmann <bedis9@gmail.com>
diff --git a/src/standard.c b/src/standard.c
index c319139..1b7fdb0 100644
--- a/src/standard.c
+++ b/src/standard.c
@@ -1415,6 +1415,31 @@
return ret;
}
+/*
+ * search needle in haystack
+ * returns the pointer if found, returns NULL otherwise
+ */
+const void *my_memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen)
+{
+ const void *c = NULL;
+ unsigned char f;
+
+ if ((haystack == NULL) || (needle == NULL) || (haystacklen < needlelen))
+ return NULL;
+
+ f = *(char *)needle;
+ c = haystack;
+ while ((c = memchr(c, f, haystacklen - (c - haystack))) != NULL) {
+ if ((haystacklen - (c - haystack)) < needlelen)
+ return NULL;
+
+ if (memcmp(c, needle, needlelen) == 0)
+ return c;
+ ++c;
+ }
+ return NULL;
+}
+
/* This function returns the first unused key greater than or equal to <key> in
* ID tree <root>. Zero is returned if no place is found.
*/