13e12c5d1SDavid du Colombier #include <string.h> 23e12c5d1SDavid du Colombier 33e12c5d1SDavid du Colombier /* Return pointer to first occurrence of s2 in s1, NULL if none */ 43e12c5d1SDavid du Colombier 5*781103c4SDavid du Colombier char * strstr(const char * s1,const char * s2)6*781103c4SDavid du Colombierstrstr(const char *s1, const char *s2) 73e12c5d1SDavid du Colombier { 87dd7cddfSDavid du Colombier char *p, *pa, *pb; 97dd7cddfSDavid du Colombier int c0, c; 103e12c5d1SDavid du Colombier 117dd7cddfSDavid du Colombier c0 = *s2; 127dd7cddfSDavid du Colombier if(c0 == 0) 13*781103c4SDavid du Colombier return (char *)s1; 147dd7cddfSDavid du Colombier s2++; 157dd7cddfSDavid du Colombier for(p=strchr(s1, c0); p; p=strchr(p+1, c0)) { 167dd7cddfSDavid du Colombier pa = p; 17*781103c4SDavid du Colombier for(pb=(char *)s2;; pb++) { 187dd7cddfSDavid du Colombier c = *pb; 197dd7cddfSDavid du Colombier if(c == 0) 203e12c5d1SDavid du Colombier return p; 217dd7cddfSDavid du Colombier if(c != *++pa) 227dd7cddfSDavid du Colombier break; 237dd7cddfSDavid du Colombier } 247dd7cddfSDavid du Colombier } 257dd7cddfSDavid du Colombier return 0; 263e12c5d1SDavid du Colombier } 273e12c5d1SDavid du Colombier 28