xref: /plan9/sys/src/libc/port/strcspn.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier 
43e12c5d1SDavid du Colombier #define	N	256
53e12c5d1SDavid du Colombier 
6*7dd7cddfSDavid du Colombier long
strcspn(char * s,char * b)73e12c5d1SDavid du Colombier strcspn(char *s, char *b)
83e12c5d1SDavid du Colombier {
93e12c5d1SDavid du Colombier 	char map[N], *os;
103e12c5d1SDavid du Colombier 
113e12c5d1SDavid du Colombier 	memset(map, 0, N);
123e12c5d1SDavid du Colombier 	for(;;) {
133e12c5d1SDavid du Colombier 		map[*(uchar*)b] = 1;
143e12c5d1SDavid du Colombier 		if(*b++ == 0)
153e12c5d1SDavid du Colombier 			break;
163e12c5d1SDavid du Colombier 	}
173e12c5d1SDavid du Colombier 	os = s;
183e12c5d1SDavid du Colombier 	while(map[*(uchar*)s++] == 0)
193e12c5d1SDavid du Colombier 		;
203e12c5d1SDavid du Colombier 	return s - os - 1;
213e12c5d1SDavid du Colombier }
22