utfrrune.c 388 B

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