1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#include "internal.h" byte* utf8·findlastrune(byte* s, long c) { long c1; rune r; byte *l; if (c < RuneSync) return strrchr(s, c); l = nil; for(;;){ c1 = *(ubyte*)s; if (c1 < RuneSelf) { if (c1 == 0) return l; if (c1 == c) l = s; s++; continue; } c1 = utf8·bytetorune(&r, s); if (r == c) l = s; s += c1; } return nil; }