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