diff options
Diffstat (limited to 'src/path.c')
-rw-r--r-- | src/path.c | 45 |
1 files changed, 6 insertions, 39 deletions
diff --git a/src/path.c b/src/path.c index 5877d795e..721cb345b 100644 --- a/src/path.c +++ b/src/path.c @@ -22,6 +22,7 @@ #include "conf.h" #include "utf8.h" #include "utils.h" +#include "localization.h" #include <stdlib.h> #include <string.h> @@ -31,13 +32,6 @@ #include <errno.h> #include <dirent.h> -#ifdef HAVE_LOCALE -#ifdef HAVE_LANGINFO_CODESET -#include <locale.h> -#include <langinfo.h> -#endif -#endif - const char *musicDir; static const char *playlistDir; static char *fsCharset = NULL; @@ -135,7 +129,6 @@ void initPaths(void) ConfigParam *fsCharsetParam = getConfigParam(CONF_FS_CHARSET); char *charset = NULL; - char *originalLocale; DIR *dir; musicDir = appendSlash(&(musicParam->value)); @@ -159,38 +152,12 @@ void initPaths(void) if (fsCharsetParam) { charset = xstrdup(fsCharsetParam->value); + } else if ((charset = getLocaleCharset())) { + if (*charset == '\0') + charset = NULL; + else + charset = xstrdup(charset); } -#ifdef HAVE_LOCALE -#ifdef HAVE_LANGINFO_CODESET - else if ((originalLocale = setlocale(LC_CTYPE, NULL))) { - char *temp; - char *currentLocale; - originalLocale = xstrdup(originalLocale); - - if (!(currentLocale = setlocale(LC_CTYPE, ""))) { - WARNING("problems setting current locale with " - "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))) { - charset = xstrdup(temp); - } 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"); -#endif -#endif if (charset) { setFsCharset(charset); |