aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/fs/AllocatedPath.cxx10
-rw-r--r--src/fs/Charset.cxx17
-rw-r--r--src/fs/Config.cxx6
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
}