From 02f3a0f7d969534872799b45a95d3c5a6fef14c3 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Sat, 14 Nov 2015 03:32:09 +0300 Subject: [PATCH] Library constructor template added. --- templates/library_constructor.c.in | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 templates/library_constructor.c.in diff --git a/templates/library_constructor.c.in b/templates/library_constructor.c.in new file mode 100644 index 0000000..be99a02 --- /dev/null +++ b/templates/library_constructor.c.in @@ -0,0 +1,47 @@ +#if defined(_WIN32) || defined(_WIN64) + #include + @LC_WIN32_INCLUDES@ +#elif defined(linux) || defined(UNIX) || defined(__unix__) + #define _GNU_SOURCE + #include + #include + @LC_UNIX_INCLUDES@ +#endif + +@LC_COMMON_INCLUDES@ + +#include "gettext-config.h" + +char SO_PATH[FILENAME_MAX]; + +@LC_GLOB_VARS@ + +#if defined(_WIN32) || defined(_WIN64) +BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) +#elif defined(linux) || defined(UNIX) || defined(__unix__) +void __attribute__ ((constructor)) load_library (void) +#endif +{ + gchar *soDir, *localePath; + @LC_VARS@ + +#if defined(_WIN32) || defined(_WIN64) + GetModuleFileName (hInstance, SO_PATH, FILENAME_MAX); + + @LC_WIN32_CODE@ +#elif defined(linux) || defined(UNIX) || defined(__unix__) + Dl_info dl_info; + dladdr(load_library, &dl_info); + strcpy (SO_PATH, dl_info.dli_fname); + + @LC_UNIX_CODE@ +#endif + + soDir = g_path_get_dirname (SO_PATH); + localePath = g_build_filename (soDir, "@LC_RELATIVE_PREFIX@/share/locale", NULL); + g_free (soDir); + bindtextdomain (GETTEXT_PACKAGE, localePath); + g_free (localePath); + + @LC_COMMON_CODE@ +}