summaryrefslogtreecommitdiffhomepage
path: root/src/utf8code.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utf8code.c')
-rw-r--r--src/utf8code.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/utf8code.c b/src/utf8code.c
index 9613ba95..1c1e4336 100644
--- a/src/utf8code.c
+++ b/src/utf8code.c
@@ -45,6 +45,16 @@ unsigned utf8_encode(char *out, uint32_t c)
return 0;
}
+uint32_t utf8_peek(const char* s, int pos) {
+ int inc = 1;
+ if (pos < 0) pos = -pos, inc = -1;
+ while (pos)
+ pos -= (*(s += inc) & 0xC0) != 0x80;
+ utf8_decode_t d = {.state=0};
+ do { utf8_decode(&d, (uint8_t)*s++); } while (d.state);
+ return d.codep;
+}
+
bool utf8_valid(const char* s) {
utf8_decode_t d = {.state=0};
while (*s)