1*3cd4f1d1SCharles Forsyth #include "lib9.h" 237da2899SCharles.Forsyth 337da2899SCharles.Forsyth char* utfrrune(char * s,long c)437da2899SCharles.Forsythutfrrune(char *s, long c) 537da2899SCharles.Forsyth { 637da2899SCharles.Forsyth long c1; 737da2899SCharles.Forsyth Rune r; 837da2899SCharles.Forsyth char *s1; 937da2899SCharles.Forsyth 1037da2899SCharles.Forsyth if(c < Runesync) /* not part of utf sequence */ 1137da2899SCharles.Forsyth return strrchr(s, c); 1237da2899SCharles.Forsyth 1337da2899SCharles.Forsyth s1 = 0; 1437da2899SCharles.Forsyth for(;;) { 1537da2899SCharles.Forsyth c1 = *(uchar*)s; 1637da2899SCharles.Forsyth if(c1 < Runeself) { /* one byte rune */ 1737da2899SCharles.Forsyth if(c1 == 0) 1837da2899SCharles.Forsyth return s1; 1937da2899SCharles.Forsyth if(c1 == c) 2037da2899SCharles.Forsyth s1 = s; 2137da2899SCharles.Forsyth s++; 2237da2899SCharles.Forsyth continue; 2337da2899SCharles.Forsyth } 2437da2899SCharles.Forsyth c1 = chartorune(&r, s); 2537da2899SCharles.Forsyth if(r == c) 2637da2899SCharles.Forsyth s1 = s; 2737da2899SCharles.Forsyth s += c1; 2837da2899SCharles.Forsyth } 2937da2899SCharles.Forsyth } 30