aboutsummaryrefslogtreecommitdiffstats
path: root/src/utf8.c
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-04-13 04:59:57 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-04-13 04:59:57 +0000
commit1004890e253453faba81126028986f075e5fc5e7 (patch)
tree053e319b9c64d0b4a47bd61311007f01150109a7 /src/utf8.c
parent0927c61533d410ffce6c34f279e1280edab0fbd6 (diff)
downloadmpd-1004890e253453faba81126028986f075e5fc5e7.tar.gz
mpd-1004890e253453faba81126028986f075e5fc5e7.tar.xz
mpd-1004890e253453faba81126028986f075e5fc5e7.zip
lots of fsCharset, utf8/ascii converting clean-up and robustness stuff
Also, if fsCharsetToUtf8 can't convert to valid UTF-8, then don't add it to the db, this way clients don't have to worry about weirdness and it will force ppl to convert it. git-svn-id: https://svn.musicpd.org/mpd/trunk@711 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/utf8.c')
-rw-r--r--src/utf8.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/utf8.c b/src/utf8.c
index 140316150..4b8814a80 100644
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -85,3 +85,28 @@ int validUtf8String(unsigned char * string) {
return 1;
}
+
+unsigned char * utf8StrToAsciiDup(unsigned char * utf8) {
+ /* utf8 should have at most two char's per ascii char */
+ int len = strlen(utf8)+1;
+ unsigned char * ret = malloc(len);
+ unsigned char * cp = ret;
+ int count;
+
+ memset(ret,0,len);
+
+ len = 0;
+
+ while(*utf8) {
+ count = validateUtf8Char(utf8);
+ if(!count) {
+ free(ret);
+ return NULL;
+ }
+ *(cp++) = utf8ToAscii(utf8);
+ utf8+= count;
+ len++;
+ }
+
+ return realloc(ret,len+1);
+}