Skip to content

Commit c8f2886

Browse files
committed
unicode: add a UTF-8 string validation function
Signed-off-by: Josef 'Jeff' Sipek <[email protected]>
1 parent 89ceb62 commit c8f2886

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

include/jeffpc/unicode.h

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
extern size_t utf8_to_utf32(const char *in, size_t inlen, uint32_t *out);
3131
extern ssize_t utf32_to_utf8(uint32_t cp, char *buf, size_t buflen);
3232

33+
extern int utf8_is_valid_str(const char *src, size_t slen);
34+
3335
static inline bool utf32_is_valid(uint32_t cp)
3436
{
3537
/* UTF-16 surrogates */

unicode.c

+18
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,21 @@ ssize_t utf32_to_utf8(uint32_t cp, char *buf, size_t buflen)
136136

137137
return len;
138138
}
139+
140+
int utf8_is_valid_str(const char *src, size_t slen)
141+
{
142+
size_t i = 0;
143+
144+
while (i < slen) {
145+
uint32_t cp;
146+
size_t cplen;
147+
148+
cplen = utf8_to_utf32(src + i, slen - i, &cp);
149+
if (!cplen)
150+
return -EILSEQ;
151+
152+
i += cplen;
153+
}
154+
155+
return 0;
156+
}

0 commit comments

Comments
 (0)