diff options
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/AllocatedPath.cxx | 10 | ||||
-rw-r--r-- | src/fs/Charset.cxx | 17 | ||||
-rw-r--r-- | src/fs/Config.cxx | 6 |
3 files changed, 31 insertions, 2 deletions
diff --git a/src/fs/AllocatedPath.cxx b/src/fs/AllocatedPath.cxx index 6770fa1b0..30ce7e3a9 100644 --- a/src/fs/AllocatedPath.cxx +++ b/src/fs/AllocatedPath.cxx @@ -24,22 +24,32 @@ #include "util/Error.hxx" #include "Compiler.h" +#ifdef HAVE_GLIB #include <glib.h> +#endif #include <string.h> +#ifdef HAVE_GLIB + inline AllocatedPath::AllocatedPath(Donate, pointer _value) :value(_value) { g_free(_value); } +#endif + /* no inlining, please */ AllocatedPath::~AllocatedPath() {} AllocatedPath AllocatedPath::FromUTF8(const char *path_utf8) { +#ifdef HAVE_GLIB return AllocatedPath(Donate(), ::PathFromUTF8(path_utf8)); +#else + return FromFS(path_utf8); +#endif } AllocatedPath diff --git a/src/fs/Charset.cxx b/src/fs/Charset.cxx index 05d644b89..232a9a23c 100644 --- a/src/fs/Charset.cxx +++ b/src/fs/Charset.cxx @@ -25,7 +25,9 @@ #include "Log.hxx" #include "Traits.hxx" +#ifdef HAVE_GLIB #include <glib.h> +#endif #include <algorithm> @@ -42,6 +44,7 @@ */ static constexpr size_t MPD_PATH_MAX_UTF8 = (MPD_PATH_MAX - 1) * 4 + 1; +#ifdef HAVE_GLIB static std::string fs_charset; gcc_pure @@ -71,10 +74,16 @@ SetFSCharset(const char *charset) "SetFSCharset: fs charset is: %s", fs_charset.c_str()); } +#endif + const char * GetFSCharset() { +#ifdef HAVE_GLIB return fs_charset.empty() ? "utf-8" : fs_charset.c_str(); +#else + return "utf-8"; +#endif } static inline void FixSeparators(std::string &s) @@ -95,10 +104,13 @@ PathToUTF8(const char *path_fs) { assert(path_fs != nullptr); +#ifdef HAVE_GLIB if (fs_charset.empty()) { +#endif auto result = std::string(path_fs); FixSeparators(result); return result; +#ifdef HAVE_GLIB } 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); FixSeparators(result_path); return result_path; +#endif } +#ifdef HAVE_GLIB + char * PathFromUTF8(const char *path_utf8) { @@ -137,3 +152,5 @@ PathFromUTF8(const char *path_utf8) fs_charset.c_str(), "utf-8", nullptr, nullptr, nullptr); } + +#endif diff --git a/src/fs/Config.cxx b/src/fs/Config.cxx index c9555bcc2..6aa23005c 100644 --- a/src/fs/Config.cxx +++ b/src/fs/Config.cxx @@ -22,16 +22,17 @@ #include "Charset.hxx" #include "config/ConfigGlobal.hxx" -#include <glib.h> - #ifdef WIN32 #include <windows.h> // for GetACP() #include <stdio.h> // for sprintf() +#elif defined(HAVE_GLIB) +#include <glib.h> #endif void ConfigureFS() { +#if defined(HAVE_GLIB) || defined(WIN32) const char *charset = nullptr; charset = config_get_string(CONF_FS_CHARSET, nullptr); @@ -56,4 +57,5 @@ ConfigureFS() if (charset != nullptr) SetFSCharset(charset); +#endif } |