xref: /inferno-os/libkern/cistrstr.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1*37da2899SCharles.Forsyth #include "lib9.h"
2*37da2899SCharles.Forsyth 
3*37da2899SCharles.Forsyth char*
cistrstr(char * s,char * sub)4*37da2899SCharles.Forsyth cistrstr(char *s, char *sub)
5*37da2899SCharles.Forsyth {
6*37da2899SCharles.Forsyth 	int c, csub, n;
7*37da2899SCharles.Forsyth 
8*37da2899SCharles.Forsyth 	csub = *sub;
9*37da2899SCharles.Forsyth 	if(csub == '\0')
10*37da2899SCharles.Forsyth 		return s;
11*37da2899SCharles.Forsyth 	if(csub >= 'A' && csub <= 'Z')
12*37da2899SCharles.Forsyth 		csub -= 'A' - 'a';
13*37da2899SCharles.Forsyth 	sub++;
14*37da2899SCharles.Forsyth 	n = strlen(sub);
15*37da2899SCharles.Forsyth 	for(; c = *s; s++){
16*37da2899SCharles.Forsyth 		if(c >= 'A' && c <= 'Z')
17*37da2899SCharles.Forsyth 			c -= 'A' - 'a';
18*37da2899SCharles.Forsyth 		if(c == csub && cistrncmp(s+1, sub, n) == 0)
19*37da2899SCharles.Forsyth 			return s;
20*37da2899SCharles.Forsyth 	}
21*37da2899SCharles.Forsyth 	return nil;
22*37da2899SCharles.Forsyth }
23