13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier /* 53e12c5d1SDavid du Colombier * Return pointer to first occurrence of s2 in s1, 63e12c5d1SDavid du Colombier * 0 if none 73e12c5d1SDavid du Colombier */ 83e12c5d1SDavid du Colombier char* strstr(char * s1,char * s2)93e12c5d1SDavid du Colombierstrstr(char *s1, char *s2) 103e12c5d1SDavid du Colombier { 11*7dd7cddfSDavid du Colombier char *p, *pa, *pb; 12*7dd7cddfSDavid du Colombier int c0, c; 133e12c5d1SDavid du Colombier 14*7dd7cddfSDavid du Colombier c0 = *s2; 15*7dd7cddfSDavid du Colombier if(c0 == 0) 163e12c5d1SDavid du Colombier return s1; 17*7dd7cddfSDavid du Colombier s2++; 18*7dd7cddfSDavid du Colombier for(p=strchr(s1, c0); p; p=strchr(p+1, c0)) { 19*7dd7cddfSDavid du Colombier pa = p; 20*7dd7cddfSDavid du Colombier for(pb=s2;; pb++) { 21*7dd7cddfSDavid du Colombier c = *pb; 22*7dd7cddfSDavid du Colombier if(c == 0) 233e12c5d1SDavid du Colombier return p; 24*7dd7cddfSDavid du Colombier if(c != *++pa) 25*7dd7cddfSDavid du Colombier break; 26*7dd7cddfSDavid du Colombier } 27*7dd7cddfSDavid du Colombier } 283e12c5d1SDavid du Colombier return 0; 293e12c5d1SDavid du Colombier } 30