From 9582cf6d6b163ca4cd22004a194a52f785209775 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Tue, 5 May 2015 10:38:43 +0200 Subject: [PATCH] Better relocation under win32. --- src/audit.c | 32 +++++++++++++++++++++++++++++++- tests/test1.c | 2 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/audit.c b/src/audit.c index b18bf49..c4f2fae 100644 --- a/src/audit.c +++ b/src/audit.c @@ -26,6 +26,12 @@ #include +#include + +#ifdef G_OS_WIN32 + #include +#endif + #include #include "libzakaudit.h" @@ -133,6 +139,30 @@ struct _ZakAuditPrivate /* PRIVATE */ G_DEFINE_TYPE (ZakAudit, zak_audit, G_TYPE_OBJECT) +#ifdef G_OS_WIN32 +static HMODULE backend_dll = NULL; + +BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved); + +BOOL WINAPI +DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpReserved) +{ + switch (fdwReason) + { + case DLL_PROCESS_ATTACH: + backend_dll = (HMODULE) hinstDLL; + break; + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} +#endif + static void zak_audit_class_init (ZakAuditClass *klass) { @@ -170,7 +200,7 @@ static ZakAudit gchar *moddir; gchar *p; - moddir = g_win32_get_package_installation_directory_of_module (NULL); + moddir = g_win32_get_package_installation_directory_of_module (backend_dll); p = g_strrstr (moddir, g_strdup_printf ("%c", G_DIR_SEPARATOR)); if (p != NULL diff --git a/tests/test1.c b/tests/test1.c index 207092b..0a89dd9 100644 --- a/tests/test1.c +++ b/tests/test1.c @@ -1,7 +1,7 @@ /* * test1.c * - * Copyright (C) 2005-2014 Andrea Zagli + * Copyright (C) 2005-2015 Andrea Zagli * * This file is part of libaudit. * -- 2.49.0