diff options
Diffstat (limited to 'bstr/bstr.c')
-rw-r--r-- | bstr/bstr.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/bstr/bstr.c b/bstr/bstr.c index aacbdc7dbc..964934a100 100644 --- a/bstr/bstr.c +++ b/bstr/bstr.c @@ -296,6 +296,17 @@ int bstr_decode_utf8(struct bstr s, struct bstr *out_next) return codepoint; } +struct bstr bstr_split_utf8(struct bstr str, struct bstr *out_next) +{ + bstr rest; + int code = bstr_decode_utf8(str, &rest); + if (code < 0) + return (bstr){0}; + if (out_next) + *out_next = rest; + return bstr_splice(str, 0, str.len - rest.len); +} + int bstr_validate_utf8(struct bstr s) { while (s.len) { |