1*8ccd4a63SDavid du Colombier #include <u.h> 2*8ccd4a63SDavid du Colombier #include <libc.h> 3*8ccd4a63SDavid du Colombier 4*8ccd4a63SDavid du Colombier /* 5*8ccd4a63SDavid du Colombier * Return pointer to first occurrence of s2 in s1, 6*8ccd4a63SDavid du Colombier * 0 if none 7*8ccd4a63SDavid du Colombier */ 8*8ccd4a63SDavid du Colombier Rune* runestrstr(Rune * s1,Rune * s2)9*8ccd4a63SDavid du Colombierrunestrstr(Rune *s1, Rune *s2) 10*8ccd4a63SDavid du Colombier { 11*8ccd4a63SDavid du Colombier Rune *p, *pa, *pb; 12*8ccd4a63SDavid du Colombier int c0, c; 13*8ccd4a63SDavid du Colombier 14*8ccd4a63SDavid du Colombier c0 = *s2; 15*8ccd4a63SDavid du Colombier if(c0 == 0) 16*8ccd4a63SDavid du Colombier return s1; 17*8ccd4a63SDavid du Colombier s2++; 18*8ccd4a63SDavid du Colombier for(p=runestrchr(s1, c0); p; p=runestrchr(p+1, c0)) { 19*8ccd4a63SDavid du Colombier pa = p; 20*8ccd4a63SDavid du Colombier for(pb=s2;; pb++) { 21*8ccd4a63SDavid du Colombier c = *pb; 22*8ccd4a63SDavid du Colombier if(c == 0) 23*8ccd4a63SDavid du Colombier return p; 24*8ccd4a63SDavid du Colombier if(c != *++pa) 25*8ccd4a63SDavid du Colombier break; 26*8ccd4a63SDavid du Colombier } 27*8ccd4a63SDavid du Colombier } 28*8ccd4a63SDavid du Colombier return 0; 29*8ccd4a63SDavid du Colombier } 30