about summary refs log tree commit diff
path: root/src/base/system.c
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2010-10-01 00:55:16 +0200
committeroy <Tom_Adams@web.de>2010-10-01 00:55:16 +0200
commit67e9f03f23a454f273aeb6f83e338c057c3efb93 (patch)
treef6ec82e186ea23861b2eb2c3576e7b38c19dec52 /src/base/system.c
parent2f388139c1e46d8cde32bd446b880e4225b06b35 (diff)
downloadzcatch-67e9f03f23a454f273aeb6f83e338c057c3efb93.tar.gz
zcatch-67e9f03f23a454f273aeb6f83e338c057c3efb93.zip
when setting a config string variable check if it's a utf8 string and encode it if the check fails. Closes #10
Diffstat (limited to 'src/base/system.c')
-rw-r--r--src/base/system.c18
1 files changed, 18 insertions, 0 deletions
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)
 {