/* | |
* strpbrk | |
*/ | |
#include <string.h> | |
#include <stddef.h> | |
#include <inttypes.h> | |
#include <limits.h> | |
#include "strxspn.h" | |
size_t __strxspn(const char *s, const char *map, int parity) | |
{ | |
char matchmap[UCHAR_MAX + 1]; | |
size_t n = 0; | |
/* Create bitmap */ | |
memset(matchmap, 0, sizeof matchmap); | |
while (*map) | |
matchmap[(unsigned char)*map++] = 1; | |
/* Make sure the null character never matches */ | |
matchmap[0] = parity; | |
/* Calculate span length */ | |
while (matchmap[(unsigned char)*s++] ^ parity) | |
n++; | |
return n; | |
} |