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