aboutsummaryrefslogtreecommitdiff
path: root/src/glib_compat.h
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2012-06-12 23:22:03 +0200
committerMax Kellermann <max@duempel.org>2012-06-12 23:22:03 +0200
commit4eb57e1e9a1718ce93eced6bd4fb06d8abb26477 (patch)
tree2355c6d77273cf614822f5a144005ab1d353863b /src/glib_compat.h
parentd662c4c0cc089a6a493a7463e440f0f7e7959b48 (diff)
parent1d52e2cc7727d93e65d557c322b5dd7dc149651c (diff)
Merge branch 'v0.16.x'
Conflicts: src/cmdline.c src/decoder/wildmidi_decoder_plugin.c src/gcc.h src/glib_compat.h src/input_stream.c src/output_list.c src/output_thread.c valgrind.suppressions
Diffstat (limited to 'src/glib_compat.h')
-rw-r--r--src/glib_compat.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/glib_compat.h b/src/glib_compat.h
index 330c9e77..989bf3b8 100644
--- a/src/glib_compat.h
+++ b/src/glib_compat.h
@@ -109,4 +109,32 @@ g_source_get_time(GSource *source)
#endif
+#if defined(G_OS_WIN32) && defined(g_file_test)
+
+/* Modern GLib on Win32 likes to use UTF-8 for file names.
+It redefines g_file_test() to be g_file_test_utf8().
+This gives incorrect results for non-ASCII files.
+Old g_file_test() is available for *binary compatibility*,
+but symbol is hidden from linker, we copy-paste its definition here */
+
+#undef g_file_test
+
+static inline gboolean
+g_file_test(const gchar *filename, GFileTest test)
+{
+ gchar *utf8_filename = g_locale_to_utf8(filename, -1, NULL, NULL, NULL);
+ gboolean retval;
+
+ if (utf8_filename == NULL)
+ return FALSE;
+
+ retval = g_file_test_utf8(utf8_filename, test);
+
+ g_free(utf8_filename);
+
+ return retval;
+}
+
+#endif
+
#endif