7 size_t _strxspn(const char *s1, const char *s2)
9 unsigned char char_map[1 << CHAR_BIT * sizeof(char)];
10 register unsigned char * us2 = (unsigned char *)s2;
11 register unsigned char * str = (unsigned char *)s1;
13 memset(char_map, 0, sizeof(char_map));
16 char_map[*us2 / CHAR_BIT] |= (1 << (*us2 % CHAR_BIT));
19 if(_x(char_map[*str / CHAR_BIT] & (1 << (*str % CHAR_BIT)))) break;
21 return str - (unsigned char*)s1;