From 67e9f03f23a454f273aeb6f83e338c057c3efb93 Mon Sep 17 00:00:00 2001 From: oy Date: Fri, 1 Oct 2010 00:55:16 +0200 Subject: when setting a config string variable check if it's a utf8 string and encode it if the check fails. Closes #10 --- src/base/system.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/base/system.c') diff --git a/src/base/system.c b/src/base/system.c index bf473650..25e89896 100644 --- a/src/base/system.c +++ b/src/base/system.c @@ -1454,6 +1454,24 @@ int str_utf8_decode(const char **ptr) } +int str_utf8_check(const char *str) +{ + while(*str) + { + if((*str&0x80) == 0x0) + str++; + else if((*str&0xE0) == 0xC0 && (*(str+1)&0xC0) == 0x80) + str += 2; + else if((*str&0xF0) == 0xE0 && (*(str+1)&0xC0) == 0x80 && (*(str+2)&0xC0) == 0x80) + str += 3; + else if((*str&0xF8) == 0xF0 && (*(str+1)&0xC0) == 0x80 && (*(str+2)&0xC0) == 0x80 && (*(str+3)&0xC0) == 0x80) + str += 4; + else + return 0; + } + return 1; +} + unsigned str_quickhash(const char *str) { -- cgit 1.4.1