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