/* | |
* 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; | |
} |