fs/Charset: disable if GLib is disabled

This commit is contained in:
Max Kellermann 2014-02-17 22:48:26 +01:00
parent 4ad14f6a2c
commit ce925ba56f
3 changed files with 31 additions and 2 deletions

View File

@ -24,22 +24,32 @@
#include "util/Error.hxx" #include "util/Error.hxx"
#include "Compiler.h" #include "Compiler.h"
#ifdef HAVE_GLIB
#include <glib.h> #include <glib.h>
#endif
#include <string.h> #include <string.h>
#ifdef HAVE_GLIB
inline AllocatedPath::AllocatedPath(Donate, pointer _value) inline AllocatedPath::AllocatedPath(Donate, pointer _value)
:value(_value) { :value(_value) {
g_free(_value); g_free(_value);
} }
#endif
/* no inlining, please */ /* no inlining, please */
AllocatedPath::~AllocatedPath() {} AllocatedPath::~AllocatedPath() {}
AllocatedPath AllocatedPath
AllocatedPath::FromUTF8(const char *path_utf8) AllocatedPath::FromUTF8(const char *path_utf8)
{ {
#ifdef HAVE_GLIB
return AllocatedPath(Donate(), ::PathFromUTF8(path_utf8)); return AllocatedPath(Donate(), ::PathFromUTF8(path_utf8));
#else
return FromFS(path_utf8);
#endif
} }
AllocatedPath AllocatedPath

View File

@ -25,7 +25,9 @@
#include "Log.hxx" #include "Log.hxx"
#include "Traits.hxx" #include "Traits.hxx"
#ifdef HAVE_GLIB
#include <glib.h> #include <glib.h>
#endif
#include <algorithm> #include <algorithm>
@ -42,6 +44,7 @@
*/ */
static constexpr size_t MPD_PATH_MAX_UTF8 = (MPD_PATH_MAX - 1) * 4 + 1; static constexpr size_t MPD_PATH_MAX_UTF8 = (MPD_PATH_MAX - 1) * 4 + 1;
#ifdef HAVE_GLIB
static std::string fs_charset; static std::string fs_charset;
gcc_pure gcc_pure
@ -71,10 +74,16 @@ SetFSCharset(const char *charset)
"SetFSCharset: fs charset is: %s", fs_charset.c_str()); "SetFSCharset: fs charset is: %s", fs_charset.c_str());
} }
#endif
const char * const char *
GetFSCharset() GetFSCharset()
{ {
#ifdef HAVE_GLIB
return fs_charset.empty() ? "utf-8" : fs_charset.c_str(); return fs_charset.empty() ? "utf-8" : fs_charset.c_str();
#else
return "utf-8";
#endif
} }
static inline void FixSeparators(std::string &s) static inline void FixSeparators(std::string &s)
@ -95,10 +104,13 @@ PathToUTF8(const char *path_fs)
{ {
assert(path_fs != nullptr); assert(path_fs != nullptr);
#ifdef HAVE_GLIB
if (fs_charset.empty()) { if (fs_charset.empty()) {
#endif
auto result = std::string(path_fs); auto result = std::string(path_fs);
FixSeparators(result); FixSeparators(result);
return result; return result;
#ifdef HAVE_GLIB
} }
GIConv conv = g_iconv_open("utf-8", fs_charset.c_str()); GIConv conv = g_iconv_open("utf-8", fs_charset.c_str());
@ -123,8 +135,11 @@ PathToUTF8(const char *path_fs)
auto result_path = std::string(path_utf8, sizeof(path_utf8) - out_left); auto result_path = std::string(path_utf8, sizeof(path_utf8) - out_left);
FixSeparators(result_path); FixSeparators(result_path);
return result_path; return result_path;
#endif
} }
#ifdef HAVE_GLIB
char * char *
PathFromUTF8(const char *path_utf8) PathFromUTF8(const char *path_utf8)
{ {
@ -137,3 +152,5 @@ PathFromUTF8(const char *path_utf8)
fs_charset.c_str(), "utf-8", fs_charset.c_str(), "utf-8",
nullptr, nullptr, nullptr); nullptr, nullptr, nullptr);
} }
#endif

View File

@ -22,16 +22,17 @@
#include "Charset.hxx" #include "Charset.hxx"
#include "config/ConfigGlobal.hxx" #include "config/ConfigGlobal.hxx"
#include <glib.h>
#ifdef WIN32 #ifdef WIN32
#include <windows.h> // for GetACP() #include <windows.h> // for GetACP()
#include <stdio.h> // for sprintf() #include <stdio.h> // for sprintf()
#elif defined(HAVE_GLIB)
#include <glib.h>
#endif #endif
void void
ConfigureFS() ConfigureFS()
{ {
#if defined(HAVE_GLIB) || defined(WIN32)
const char *charset = nullptr; const char *charset = nullptr;
charset = config_get_string(CONF_FS_CHARSET, nullptr); charset = config_get_string(CONF_FS_CHARSET, nullptr);
@ -56,4 +57,5 @@ ConfigureFS()
if (charset != nullptr) if (charset != nullptr)
SetFSCharset(charset); SetFSCharset(charset);
#endif
} }