summaryrefslogtreecommitdiffstats
path: root/bstr/bstr.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-01-15 16:13:07 +0100
committerwm4 <wm4@nowhere>2014-01-15 16:13:07 +0100
commitca8937d7d269c0ef8881d2ac7a227fdb990a5753 (patch)
tree7f659346908f3a8e5b705a553720dceb09000c65 /bstr/bstr.c
parent904060ad7b3d4d4e7e790bcf94d4f5230c854c43 (diff)
downloadmpv-ca8937d7d269c0ef8881d2ac7a227fdb990a5753.tar.bz2
mpv-ca8937d7d269c0ef8881d2ac7a227fdb990a5753.tar.xz
bstr: add function for splitting UTF-8
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) {