diff options
Diffstat (limited to '')
-rw-r--r-- | src/path.c | 217 |
1 files changed, 115 insertions, 102 deletions
diff --git a/src/path.c b/src/path.c index 6aebe8532..3a6cce23b 100644 --- a/src/path.c +++ b/src/path.c @@ -37,23 +37,25 @@ #endif #endif -char * musicDir; -char * playlistDir; +char *musicDir; +char *playlistDir; -char * fsCharset = NULL; +char *fsCharset = NULL; -static char * pathConvCharset(char * to, char * from, char * str) { - if(setCharSetConversion(to,from)==0) { +static char *pathConvCharset(char *to, char *from, char *str) +{ + if (setCharSetConversion(to, from) == 0) { return convStrDup(str); } return NULL; } -char * fsCharsetToUtf8(char * str) { - char * ret = pathConvCharset("UTF-8",fsCharset,str); +char *fsCharsetToUtf8(char *str) +{ + char *ret = pathConvCharset("UTF-8", fsCharset, str); - if(ret && !validUtf8String(ret)) { + if (ret && !validUtf8String(ret)) { free(ret); ret = NULL; } @@ -61,54 +63,60 @@ char * fsCharsetToUtf8(char * str) { return ret; } -char * utf8ToFsCharset(char * str) { - char * ret = pathConvCharset(fsCharset,"UTF-8",str); +char *utf8ToFsCharset(char *str) +{ + char *ret = pathConvCharset(fsCharset, "UTF-8", str); - if(!ret) ret = strdup(str); + if (!ret) + ret = strdup(str); return ret; } -void setFsCharset(char * charset) { +void setFsCharset(char *charset) +{ int error = 0; - if(fsCharset) free(fsCharset); + if (fsCharset) + free(fsCharset); fsCharset = strdup(charset); - DEBUG("setFsCharset: fs charset is: %s\n",fsCharset); - - if(setCharSetConversion("UTF-8",fsCharset)!=0) { + DEBUG("setFsCharset: fs charset is: %s\n", fsCharset); + + if (setCharSetConversion("UTF-8", fsCharset) != 0) { WARNING("fs charset conversion problem: " "not able to convert from \"%s\" to \"%s\"\n", - fsCharset,"UTF-8"); + fsCharset, "UTF-8"); error = 1; } - if(setCharSetConversion(fsCharset,"UTF-8")!=0) { + if (setCharSetConversion(fsCharset, "UTF-8") != 0) { WARNING("fs charset conversion problem: " "not able to convert from \"%s\" to \"%s\"\n", - "UTF-8",fsCharset); + "UTF-8", fsCharset); error = 1; } - - if(error) { + + if (error) { free(fsCharset); WARNING("setting fs charset to ISO-8859-1!\n"); fsCharset = strdup("ISO-8859-1"); } } -char * getFsCharset(void) { +char *getFsCharset(void) +{ return fsCharset; } -static char * appendSlash(char ** path) { - char * temp = *path; +static char *appendSlash(char **path) +{ + char *temp = *path; int len = strlen(temp); - if(temp[len-1] != '/') { - temp = malloc(len+2); - memset(temp, 0, len+2); + if (temp[len - 1] != '/') { + temp = malloc(len + 2); + memset(temp, 0, len + 2); memcpy(temp, *path, len); temp[len] = '/'; free(*path); @@ -118,160 +126,165 @@ static char * appendSlash(char ** path) { return temp; } -void initPaths(void) { - ConfigParam * musicParam = parseConfigFilePath(CONF_MUSIC_DIR, 1); - ConfigParam * playlistParam = parseConfigFilePath(CONF_PLAYLIST_DIR, 1); - ConfigParam * fsCharsetParam = getConfigParam(CONF_FS_CHARSET); +void initPaths(void) +{ + ConfigParam *musicParam = parseConfigFilePath(CONF_MUSIC_DIR, 1); + ConfigParam *playlistParam = parseConfigFilePath(CONF_PLAYLIST_DIR, 1); + ConfigParam *fsCharsetParam = getConfigParam(CONF_FS_CHARSET); - char * charset = NULL; - char * originalLocale; - DIR * dir; + char *charset = NULL; + char *originalLocale; + DIR *dir; musicDir = appendSlash(&(musicParam->value)); playlistDir = appendSlash(&(playlistParam->value)); - if((dir = opendir(playlistDir)) == NULL) { - ERROR("cannot open %s \"%s\" (config line %i): %s\n", - CONF_PLAYLIST_DIR, playlistParam->value, - playlistParam->line, strerror(errno)); - exit(EXIT_FAILURE); - } + if ((dir = opendir(playlistDir)) == NULL) { + ERROR("cannot open %s \"%s\" (config line %i): %s\n", + CONF_PLAYLIST_DIR, playlistParam->value, + playlistParam->line, strerror(errno)); + exit(EXIT_FAILURE); + } closedir(dir); - if((dir = opendir(musicDir)) == NULL) { - ERROR("cannot open %s \"%s\" (config line %i): %s\n", - CONF_MUSIC_DIR, musicParam->value, - musicParam->line, strerror(errno)); - exit(EXIT_FAILURE); - } + if ((dir = opendir(musicDir)) == NULL) { + ERROR("cannot open %s \"%s\" (config line %i): %s\n", + CONF_MUSIC_DIR, musicParam->value, + musicParam->line, strerror(errno)); + exit(EXIT_FAILURE); + } closedir(dir); - if(fsCharsetParam) { + if (fsCharsetParam) { charset = strdup(fsCharsetParam->value); } #ifdef HAVE_LOCALE #ifdef HAVE_LANGINFO_CODESET - else if((originalLocale = setlocale(LC_CTYPE,NULL))) { - char * temp; - char * currentLocale; + else if ((originalLocale = setlocale(LC_CTYPE, NULL))) { + char *temp; + char *currentLocale; originalLocale = strdup(originalLocale); - if(!(currentLocale = setlocale(LC_CTYPE,""))) { + if (!(currentLocale = setlocale(LC_CTYPE, ""))) { WARNING("problems setting current locale with " - "setlocale()\n"); - } - else { - if(strcmp(currentLocale,"C")==0 || - strcmp(currentLocale,"POSIX")==0) - { + "setlocale()\n"); + } else { + if (strcmp(currentLocale, "C") == 0 || + strcmp(currentLocale, "POSIX") == 0) { WARNING("current locale is \"%s\"\n", - currentLocale); - } - else if((temp = nl_langinfo(CODESET))) { + currentLocale); + } else if ((temp = nl_langinfo(CODESET))) { charset = strdup(temp); - } - else WARNING("problems getting charset for locale\n"); - if(!setlocale(LC_CTYPE,originalLocale)) { - WARNING("problems resetting locale with setlocale()\n"); + } else + WARNING + ("problems getting charset for locale\n"); + if (!setlocale(LC_CTYPE, originalLocale)) { + WARNING + ("problems resetting locale with setlocale()\n"); } } free(originalLocale); - } - else WARNING("problems getting locale with setlocale()\n"); + } else + WARNING("problems getting locale with setlocale()\n"); #endif #endif - if(charset) { + if (charset) { setFsCharset(charset); free(charset); - } - else { + } else { WARNING("setting filesystem charset to ISO-8859-1\n"); setFsCharset("ISO-8859-1"); } } -void finishPaths(void) { +void finishPaths(void) +{ free(fsCharset); fsCharset = NULL; } -char * rmp2amp(char * relativePath) { - static char absolutePath[MAXPATHLEN+1]; +char *rmp2amp(char *relativePath) +{ + static char absolutePath[MAXPATHLEN + 1]; - memset(absolutePath,0,MAXPATHLEN+1); + memset(absolutePath, 0, MAXPATHLEN + 1); - strncpy(absolutePath,musicDir,MAXPATHLEN); - strncat(absolutePath,relativePath,MAXPATHLEN-strlen(musicDir)); + strncpy(absolutePath, musicDir, MAXPATHLEN); + strncat(absolutePath, relativePath, MAXPATHLEN - strlen(musicDir)); return absolutePath; } -char * rpp2app(char * relativePath) { - static char absolutePath[MAXPATHLEN+1]; +char *rpp2app(char *relativePath) +{ + static char absolutePath[MAXPATHLEN + 1]; - memset(absolutePath,0,MAXPATHLEN+1); + memset(absolutePath, 0, MAXPATHLEN + 1); - strncpy(absolutePath,playlistDir,MAXPATHLEN); - strncat(absolutePath,relativePath,MAXPATHLEN-strlen(musicDir)); + strncpy(absolutePath, playlistDir, MAXPATHLEN); + strncat(absolutePath, relativePath, MAXPATHLEN - strlen(musicDir)); return absolutePath; } -char * parentPath(char * path) { - static char parentPath[MAXPATHLEN+1]; - char * c; +char *parentPath(char *path) +{ + static char parentPath[MAXPATHLEN + 1]; + char *c; - memset(parentPath,0,MAXPATHLEN+1); - strncpy(parentPath,path,MAXPATHLEN); - - c = strrchr(parentPath,'/'); + memset(parentPath, 0, MAXPATHLEN + 1); + strncpy(parentPath, path, MAXPATHLEN); + + c = strrchr(parentPath, '/'); if (c == NULL) parentPath[0] = '\0'; else { - while ((parentPath <= c) && *(--c) == '/') /* nothing */; + while ((parentPath <= c) && *(--c) == '/') /* nothing */ + ; c[1] = '\0'; - } + } return parentPath; } -char * sanitizePathDup(char * path) { - int len = strlen(path)+1; - char * ret = malloc(len); - char * cp = ret; +char *sanitizePathDup(char *path) +{ + int len = strlen(path) + 1; + char *ret = malloc(len); + char *cp = ret; - memset(ret,0,len); + memset(ret, 0, len); len = 0; /* illeminate more than one '/' in a row, like "///" */ - while(*path) { - while(*path=='/') path++; - if(*path=='.') { + while (*path) { + while (*path == '/') + path++; + if (*path == '.') { /* we dont want to have hidden directoires, or '.' or ".." in our path */ free(ret); return NULL; } - while(*path && *path!='/') { + while (*path && *path != '/') { *(cp++) = *(path++); len++; } - if(*path=='/') { + if (*path == '/') { *(cp++) = *(path++); len++; } } - if(len && ret[len-1]=='/') { + if (len && ret[len - 1] == '/') { len--; ret[len] = '\0'; } DEBUG("sanitized: %s\n", ret); - return realloc(ret,len+1); + return realloc(ret, len + 1); } - |