summaryrefslogtreecommitdiff
path: root/glib/gutils.h
diff options
context:
space:
mode:
authorTor Lillqvist <tml@novell.com>2005-04-07 23:46:38 +0000
committerTor Lillqvist <tml@src.gnome.org>2005-04-07 23:46:38 +0000
commit153215759cd5e8e16534ed6601ea5cb10a4e797a (patch)
tree8673324fb526c55c499d8c7fb9e45ec237e6233f /glib/gutils.h
parent4fe1315d5e46f3d5feb950f81dd49dc1b16fa7cd (diff)
downloadglib-153215759cd5e8e16534ed6601ea5cb10a4e797a.tar.gz
Use wide char API if available, and store dll name in UTF-8.
2005-04-08 Tor Lillqvist <tml@novell.com> * glib/gutils.h (G_WIN32_DLLMAIN_FOR_DLL_NAME): Use wide char API if available, and store dll name in UTF-8.
Diffstat (limited to 'glib/gutils.h')
-rw-r--r--glib/gutils.h50
1 files changed, 32 insertions, 18 deletions
diff --git a/glib/gutils.h b/glib/gutils.h
index 5ba1ad883..27de96351 100644
--- a/glib/gutils.h
+++ b/glib/gutils.h
@@ -367,24 +367,38 @@ G_END_DECLS
#ifndef G_PLATFORM_WIN32
# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)
#else
-# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) \
-static char *dll_name; \
- \
-BOOL WINAPI \
-DllMain (HINSTANCE hinstDLL, \
- DWORD fdwReason, \
- LPVOID lpvReserved) \
-{ \
- char bfr[1000]; \
- switch (fdwReason) \
- { \
- case DLL_PROCESS_ATTACH: \
- GetModuleFileName ((HMODULE) hinstDLL, bfr, sizeof (bfr)); \
- dll_name = g_path_get_basename (bfr); \
- break; \
- } \
- \
- return TRUE; \
+# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) \
+static char *dll_name; \
+ \
+BOOL WINAPI \
+DllMain (HINSTANCE hinstDLL, \
+ DWORD fdwReason, \
+ LPVOID lpvReserved) \
+{ \
+ wchar_t wcbfr[1000]; \
+ char cpbfr[1000]; \
+ char *tem; \
+ switch (fdwReason) \
+ { \
+ case DLL_PROCESS_ATTACH: \
+ if (GetVersion () < 0x80000000) \
+ { \
+ GetModuleFileNameW ((HMODULE) hinstDLL, wcbfr, G_N_ELEMENTS (wcbfr)); \
+ tem = g_utf16_to_utf8 (wcbfr, -1, NULL, NULL, NULL); \
+ dll_name = g_path_get_basename (tem); \
+ g_free (tem); \
+ } \
+ else \
+ { \
+ GetModuleFileNameA ((HMODULE) hinstDLL, cpbfr, G_N_ELEMENTS (cpbfr)); \
+ tem = g_locale_to_utf8 (cpbfr, -1, NULL, NULL, NULL); \
+ dll_name = g_path_get_basename (tem); \
+ g_free (tem); \
+ } \
+ break; \
+ } \
+ \
+ return TRUE; \
}
#endif /* G_PLATFORM_WIN32 */