xref: /plan9/sys/src/libc/port/cistrstr.c (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
1*80ee5cbfSDavid du Colombier #include <u.h>
2*80ee5cbfSDavid du Colombier #include <libc.h>
3*80ee5cbfSDavid du Colombier 
4*80ee5cbfSDavid du Colombier char*
cistrstr(char * s,char * sub)5*80ee5cbfSDavid du Colombier cistrstr(char *s, char *sub)
6*80ee5cbfSDavid du Colombier {
7*80ee5cbfSDavid du Colombier 	int c, csub, n;
8*80ee5cbfSDavid du Colombier 
9*80ee5cbfSDavid du Colombier 	csub = *sub;
10*80ee5cbfSDavid du Colombier 	if(csub == '\0')
11*80ee5cbfSDavid du Colombier 		return s;
12*80ee5cbfSDavid du Colombier 	if(csub >= 'A' && csub <= 'Z')
13*80ee5cbfSDavid du Colombier 		csub -= 'A' - 'a';
14*80ee5cbfSDavid du Colombier 	sub++;
15*80ee5cbfSDavid du Colombier 	n = strlen(sub);
16*80ee5cbfSDavid du Colombier 	for(; c = *s; s++){
17*80ee5cbfSDavid du Colombier 		if(c >= 'A' && c <= 'Z')
18*80ee5cbfSDavid du Colombier 			c -= 'A' - 'a';
19*80ee5cbfSDavid du Colombier 		if(c == csub && cistrncmp(s+1, sub, n) == 0)
20*80ee5cbfSDavid du Colombier 			return s;
21*80ee5cbfSDavid du Colombier 	}
22*80ee5cbfSDavid du Colombier 	return nil;
23*80ee5cbfSDavid du Colombier }
24