Commit bcb493cf authored by J. Alexander Treuman's avatar J. Alexander Treuman

Moving localization stuff from path.c to localization.c so we can reuse it

for log messages when outputting to console. git-svn-id: https://svn.musicpd.org/mpd/trunk@5225 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent 4730666b
...@@ -72,7 +72,8 @@ mpd_headers = \ ...@@ -72,7 +72,8 @@ mpd_headers = \
tree.h \ tree.h \
utf8.h \ utf8.h \
utils.h \ utils.h \
volume.h volume.h \
localization.h
mpd_SOURCES = \ mpd_SOURCES = \
...@@ -121,7 +122,8 @@ mpd_SOURCES = \ ...@@ -121,7 +122,8 @@ mpd_SOURCES = \
tree.c \ tree.c \
utils.c \ utils.c \
volume.c \ volume.c \
utf8.c utf8.c \
localization.c
mpd_CFLAGS = $(MPD_CFLAGS) mpd_CFLAGS = $(MPD_CFLAGS)
......
/* the Music Player Daemon (MPD)
* (c)2003-2006 by Warren Dukes (warren.dukes@gmail.com)
* This project's homepage is: http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "localization.h"
#include "utils.h"
#include <stdlib.h>
#ifdef HAVE_LOCALE
#ifdef HAVE_LANGINFO_CODESET
#include <locale.h>
#include <langinfo.h>
#endif
#endif
static char *localeCharset = NULL;
void setLocaleCharset(char *charset)
{
if (localeCharset)
free(localeCharset);
localeCharset = charset;
}
char *getLocaleCharset(void)
{
return localeCharset;
}
void initLocalization(void)
{
#ifdef HAVE_LOCALE
#ifdef HAVE_LANGINFO_CODESET
char *temp;
char *originalLocale;
char *currentLocale;
if (!(originalLocale = setlocale(LC_CTYPE, NULL))) {
WARNING("problems getting locale with setlocale()\n");
} else {
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);
setLocaleCharset(xstrdup(""));
} else if ((temp = nl_langinfo(CODESET))) {
setLocaleCharset(xstrdup(temp));
} else {
WARNING("problems getting charset for "
"locale\n");
}
if (!setlocale(LC_CTYPE, originalLocale)) {
WARNING("problems resetting locale with "
"setlocale()\n");
}
}
free(originalLocale);
}
#endif
#endif
}
void finishLocalization(void)
{
setLocaleCharset(NULL);
}
/* the Music Player Daemon (MPD)
* (c)2003-2006 by Warren Dukes (warren.dukes@gmail.com)
* This project's homepage is: http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
void setLocaleCharset(char *charset);
char *getLocaleCharset(void);
void initLocalization(void);
void finishLocalization(void);
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include "../config.h" #include "../config.h"
#include "utils.h" #include "utils.h"
#include "normalize.h" #include "normalize.h"
#include "localization.h"
#include <stdio.h> #include <stdio.h>
#include <sys/select.h> #include <sys/select.h>
...@@ -437,6 +438,7 @@ int main(int argc, char *argv[]) ...@@ -437,6 +438,7 @@ int main(int argc, char *argv[])
open_log_files(options.stdOutput); open_log_files(options.stdOutput);
initLocalization();
initPaths(); initPaths();
initPermissions(); initPermissions();
initPlaylist(); initPlaylist();
...@@ -489,6 +491,7 @@ int main(int argc, char *argv[]) ...@@ -489,6 +491,7 @@ int main(int argc, char *argv[])
finishAudioConfig(); finishAudioConfig();
finishVolume(); finishVolume();
finishPaths(); finishPaths();
finishLocalization();
finishPermissions(); finishPermissions();
finishCommands(); finishCommands();
finishInputPlugins(); finishInputPlugins();
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "conf.h" #include "conf.h"
#include "utf8.h" #include "utf8.h"
#include "utils.h" #include "utils.h"
#include "localization.h"
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
...@@ -31,13 +32,6 @@ ...@@ -31,13 +32,6 @@
#include <errno.h> #include <errno.h>
#include <dirent.h> #include <dirent.h>
#ifdef HAVE_LOCALE
#ifdef HAVE_LANGINFO_CODESET
#include <locale.h>
#include <langinfo.h>
#endif
#endif
const char *musicDir; const char *musicDir;
static const char *playlistDir; static const char *playlistDir;
static char *fsCharset = NULL; static char *fsCharset = NULL;
...@@ -135,7 +129,6 @@ void initPaths(void) ...@@ -135,7 +129,6 @@ void initPaths(void)
ConfigParam *fsCharsetParam = getConfigParam(CONF_FS_CHARSET); ConfigParam *fsCharsetParam = getConfigParam(CONF_FS_CHARSET);
char *charset = NULL; char *charset = NULL;
char *originalLocale;
DIR *dir; DIR *dir;
musicDir = appendSlash(&(musicParam->value)); musicDir = appendSlash(&(musicParam->value));
...@@ -159,38 +152,12 @@ void initPaths(void) ...@@ -159,38 +152,12 @@ void initPaths(void)
if (fsCharsetParam) { if (fsCharsetParam) {
charset = xstrdup(fsCharsetParam->value); 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) { if (charset) {
setFsCharset(charset); setFsCharset(charset);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment