1 /* CC0 (Public domain) - see LICENSE file for details */
6 #include <ccan/mem/mem.h>
9 void *memmem(const void *haystack, size_t haystacklen,
10 const void *needle, size_t needlelen)
14 if (needlelen > haystacklen)
20 (p + needlelen) <= ((const char *)haystack + haystacklen);
22 if (memcmp(p, needle, needlelen) == 0)
30 void *memrchr(const void *s, int c, size_t n)
32 unsigned char *p = (unsigned char *)s;
44 void *mempbrkm(const void *data_, size_t len, const void *accept_, size_t accept_len)
46 const char *data = data_, *accept = accept_;
49 for (i = 0; i < len; i++)
50 for (j = 0; j < accept_len; j++)
51 if (accept[j] == data[i])
52 return (void *)&data[i];
56 void *memcchr(void const *data, int c, size_t data_len)
61 for (i = 0; i < data_len; i++)