1*c6df1444SDavid du Colombier #include "rc.h" 2*c6df1444SDavid du Colombier 3*c6df1444SDavid du Colombier char* utfrune(char * s,long c)4*c6df1444SDavid du Colombierutfrune(char *s, long c) 5*c6df1444SDavid du Colombier { 6*c6df1444SDavid du Colombier long c1; 7*c6df1444SDavid du Colombier Rune r; 8*c6df1444SDavid du Colombier int n; 9*c6df1444SDavid du Colombier 10*c6df1444SDavid du Colombier if(c < Runesync) /* not part of utf sequence */ 11*c6df1444SDavid du Colombier return strchr(s, c); 12*c6df1444SDavid du Colombier 13*c6df1444SDavid du Colombier for(;;) { 14*c6df1444SDavid du Colombier c1 = *(uchar*)s; 15*c6df1444SDavid du Colombier if(c1 < Runeself) { /* one byte rune */ 16*c6df1444SDavid du Colombier if(c1 == 0) 17*c6df1444SDavid du Colombier return 0; 18*c6df1444SDavid du Colombier if(c1 == c) 19*c6df1444SDavid du Colombier return s; 20*c6df1444SDavid du Colombier s++; 21*c6df1444SDavid du Colombier continue; 22*c6df1444SDavid du Colombier } 23*c6df1444SDavid du Colombier n = chartorune(&r, s); 24*c6df1444SDavid du Colombier if(r == c) 25*c6df1444SDavid du Colombier return s; 26*c6df1444SDavid du Colombier s += n; 27*c6df1444SDavid du Colombier } 28*c6df1444SDavid du Colombier } 29