aboutsummaryrefslogtreecommitdiffstats
path: root/src/path.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/path.c')
-rw-r--r--src/path.c217
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);
}
-