fs/Charset: hard-code Windows to ACP

Don't define HAVE_FS_CHARSET, and make GetFSCharset() return "ACP"
instead of "UTF-8".  Ignore the configuration setting, which had no
effect anyway.
This commit is contained in:
Max Kellermann 2015-06-22 22:20:10 +02:00
parent 2aa54c5365
commit 73bd6af0f9
3 changed files with 5 additions and 15 deletions

View File

@ -71,6 +71,8 @@ GetFSCharset()
{
#ifdef HAVE_FS_CHARSET
return fs_charset.empty() ? "UTF-8" : fs_charset.c_str();
#elif defined(WIN32)
return "ACP";
#else
return "UTF-8";
#endif

View File

@ -24,7 +24,7 @@
#include "Compiler.h"
#include "Traits.hxx"
#if defined(HAVE_ICU) || defined(HAVE_GLIB)
#if (defined(HAVE_ICU) || defined(HAVE_GLIB)) && !defined(WIN32)
#define HAVE_FS_CHARSET
#endif

View File

@ -22,10 +22,7 @@
#include "Charset.hxx"
#include "config/ConfigGlobal.hxx"
#ifdef WIN32
#include <windows.h> // for GetACP()
#include <stdio.h> // for sprintf()
#elif defined(HAVE_GLIB)
#ifdef HAVE_GLIB
#include <glib.h>
#endif
@ -37,16 +34,7 @@ ConfigureFS(Error &error)
charset = config_get_string(ConfigOption::FS_CHARSET, nullptr);
if (charset == nullptr) {
#ifdef WIN32
/* Glib claims that file system encoding is always utf-8
* on native Win32 (i.e. not Cygwin).
* However this is true only if <gstdio.h> helpers are used.
* MPD uses regular <stdio.h> functions.
* Those functions use encoding determined by GetACP(). */
static char win_charset[13];
sprintf(win_charset, "cp%u", GetACP());
charset = win_charset;
#elif defined(HAVE_GLIB)
#ifdef HAVE_GLIB
const gchar **encodings;
g_get_filename_charsets(&encodings);