diff options
author | Ignacio Casal Quinteiro <icq@gnome.org> | 2015-09-24 15:13:56 +0200 |
---|---|---|
committer | Ignacio Casal Quinteiro <icq@gnome.org> | 2015-09-24 17:56:49 +0200 |
commit | c5891e156a0f8047490bfe71bcb44a53a2545fbe (patch) | |
tree | 4bab836ba8f7db30f876464bb2a8071ed303f0ac /libsoup/soup-init.c | |
parent | 2277d71edc8840ca017ce6bc87cd81c37ad2f541 (diff) | |
download | libsoup-wip/constructor.tar.gz |
Use a constructor to init the librarywip/constructor
Diffstat (limited to 'libsoup/soup-init.c')
-rw-r--r-- | libsoup/soup-init.c | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/libsoup/soup-init.c b/libsoup/soup-init.c new file mode 100644 index 00000000..92eb8379 --- /dev/null +++ b/libsoup/soup-init.c @@ -0,0 +1,78 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * soup-session.c + * + * Copyright (C) 2000-2003, Ximian, Inc. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <glib/gi18n-lib.h> +#include "gconstructor.h" + +#ifdef G_OS_WIN32 +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +HMODULE soup_dll; +#endif + +static void +soup_init (void) +{ +#ifdef G_OS_WIN32 + char *basedir = g_win32_get_package_installation_directory_of_module (soup_dll); + char *localedir = g_build_filename (basedir, "share", "locale", NULL); + bindtextdomain (GETTEXT_PACKAGE, localedir); + g_free (localedir); + g_free (basedir); +#else + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); +#endif +#ifdef HAVE_BIND_TEXTDOMAIN_CODESET + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); +#endif +} + +#if defined (G_OS_WIN32) + +BOOL WINAPI +DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved) +{ + switch (fdwReason) { + case DLL_PROCESS_ATTACH: + soup_dll = hinstDLL; + + soup_init (); + break; + + case DLL_THREAD_DETACH: + + default: + /* do nothing */ + ; + } + + return TRUE; +} + +#elif defined (G_HAS_CONSTRUCTORS) + +#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(soup_init_ctor) +#endif +G_DEFINE_CONSTRUCTOR(soup_init_ctor) + +static void +soup_init_ctor (void) +{ + soup_init (); +} + +#else +# error Your platform/compiler is missing constructor support +#endif |