chiark / gitweb /
[PATCH] klibc: update to version 0.196
[elogind.git] / klibc / klibc / strxspn.c
1 /*
2  * strpbrk
3  */
4
5 #include <string.h>
6 #include <stddef.h>
7 #include <inttypes.h>
8 #include <limits.h>
9 #include "strxspn.h"
10
11 size_t
12 __strxspn(const char *s, const char *map, int parity)
13 {
14   char matchmap[UCHAR_MAX+1];
15   size_t n = 0;
16
17   /* Create bitmap */
18   memset(matchmap, 0, sizeof matchmap);
19   while ( *map )
20     matchmap[(unsigned char) *map++] = 1;
21   
22   /* Make sure the null character never matches */
23   matchmap[0] = parity;
24
25   /* Calculate span length */
26   while ( matchmap[(unsigned char) *s++] ^ parity )
27     n++;
28
29   return n;
30 }