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