diff options
| author | Tyge Løvset <[email protected]> | 2022-06-09 16:59:52 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-06-09 16:59:52 +0200 |
| commit | d463acdbee5bb3a9509cb8414602f495408583b4 (patch) | |
| tree | d037f43f3f3a5a2466054419cb6d6101508602a0 /src/utf8code.c | |
| parent | 3ee36759b8567a72a8349c312fc7dbe975de9e02 (diff) | |
| download | STC-modified-d463acdbee5bb3a9509cb8414602f495408583b4.tar.gz STC-modified-d463acdbee5bb3a9509cb8414602f495408583b4.zip | |
Added utf8_peek()
Diffstat (limited to 'src/utf8code.c')
| -rw-r--r-- | src/utf8code.c | 10 |
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) |
