[glib] Construct the gio module directory pathname at run-time on Windows



commit 443674faaa0c6c79492732fd56360faeca06e9ab
Author: Tor Lillqvist <tml iki fi>
Date:   Mon Oct 12 00:18:48 2009 +0300

    Construct the gio module directory pathname at run-time on Windows

 gio/giomodule.c |   33 +++++++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/gio/giomodule.c b/gio/giomodule.c
index ec5b650..93405e5 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -297,6 +297,39 @@ extern GType _g_win32_volume_monitor_get_type (void);
 extern GType g_win32_directory_monitor_get_type (void);
 extern GType _g_winhttp_vfs_get_type (void);
 
+#ifdef G_PLATFORM_WIN32
+
+#include <windows.h>
+
+static HMODULE gio_dll = NULL;
+
+#ifdef DLL_EXPORT
+
+BOOL WINAPI
+DllMain (HINSTANCE hinstDLL,
+	 DWORD     fdwReason,
+	 LPVOID    lpvReserved)
+{
+  if (fdwReason == DLL_PROCESS_ATTACH)
+      gio_dll = hinstDLL;
+
+  return TRUE;
+}
+
+#endif
+
+#undef GIO_MODULE_DIR
+
+/* GIO_MODULE_DIR is used only in code called just once,
+ * so no problem leaking this
+ */
+#define GIO_MODULE_DIR \
+  g_build_filename (g_win32_get_package_installation_directory_of_module (gio_dll), \
+		    "lib/gio/modules", \
+		    NULL)
+
+#endif
+
 void
 _g_io_modules_ensure_extension_points_registered (void)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]