From 1004890e253453faba81126028986f075e5fc5e7 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Tue, 13 Apr 2004 04:59:57 +0000 Subject: 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 --- src/directory.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/directory.c') diff --git a/src/directory.c b/src/directory.c index 6b1ed9441..b4634c42f 100644 --- a/src/directory.c +++ b/src/directory.c @@ -310,14 +310,18 @@ int removeDeletedFromDirectory(Directory * directory) { while((ent = readdir(dir))) { if(ent->d_name[0]=='.') continue; /* hide hidden stuff */ - utf8 = strdup(fsCharsetToUtf8(ent->d_name)); + utf8 = fsCharsetToUtf8(ent->d_name); + + if(!utf8) continue; + + utf8 = strdup(utf8); if(directory->utf8name) { s = malloc(strlen(directory->utf8name)+strlen(utf8)+2); sprintf(s,"%s/%s",directory->utf8name,utf8); } else s= strdup(utf8); - insertInList(entList,fsCharsetToUtf8(ent->d_name),s); + insertInList(entList,utf8,s); free(utf8); } @@ -377,7 +381,11 @@ int updateDirectory(Directory * directory) { while((ent = readdir(dir))) { if(ent->d_name[0]=='.') continue; /* hide hidden stuff */ - utf8 = strdup(fsCharsetToUtf8(ent->d_name)); + utf8 = fsCharsetToUtf8(ent->d_name); + + if(!utf8) continue; + + utf8 = strdup(utf8); if(directory->utf8name) { s = malloc(strlen(directory->utf8name)+strlen(utf8)+2); @@ -415,7 +423,11 @@ int exploreDirectory(Directory * directory) { while((ent = readdir(dir))) { if(ent->d_name[0]=='.') continue; /* hide hidden stuff */ - utf8 = strdup(fsCharsetToUtf8(ent->d_name)); + utf8 = fsCharsetToUtf8(ent->d_name); + + if(!utf8) continue; + + utf8 = strdup(utf8); DEBUG("explore: found: %s (%s)\n",ent->d_name,utf8); -- cgit v1.2.3