summaryrefslogtreecommitdiffstats
path: root/bstr/bstr.c
diff options
context:
space:
mode:
Diffstat (limited to 'bstr/bstr.c')
-rw-r--r--bstr/bstr.c11
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) {