mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
57a7a2b010
2000-12-22 Sebastian Wilhelmi <wilhelmi@ira.uka.de> * configure.in: Determine the suffix of the shared librarries for this system. This is done analogous to ltconfig.sh. G_MODULE_SUFFIX in glibconfig.h is set to either "sl", "dll", or (most often) "so". * tests/Makefile.am, tests/module-test.c, tests/libmoduletestplugin_a.c, tests/libmoduletestplugin_b.c: Added new testcase for gmodule. This is mostly copied from gmodule/testgmodule.c, but unlike that is is quiet. (Why BTW are some tests that verbose, not to say loquacious...) * gmodule.c: Make g_module_open more tolerant wrt to the module name. First it tries to open the module as named, if that fails, it checks, whether it is a libtool archive and parses it, if that fails it appends the systems shared library suffix (i.e. ".so") (if not already found) and tries again and if that fails it tries to append the ".la" libtool suffix (if not already found) and parses it. * gmodule.c: Lock recursive mutex during most module functions for safety. * gmodule-dl.c: Return an error from _g_module_symbol only, if dlerror says so. All other functions return an error as well, if dlerror returns NULL. * testgmodule.c: Thanks to the above change the #ifdefs have vanished. * glib/glib-sections.txt: Added G_MODULE_SUFFIX. * glib/tmpl/modules.sgml: Updated.
69 lines
1.7 KiB
C
69 lines
1.7 KiB
C
/* libgplugin_a.c - test plugin for testgmodule
|
|
* Copyright (C) 1998 Tim Janik
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
/*
|
|
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
|
|
* file for a list of people on the GLib Team. See the ChangeLog
|
|
* files for a list of changes. These files are distributed with
|
|
* GLib at ftp://ftp.gtk.org/pub/gtk/.
|
|
*/
|
|
|
|
#include <gmodule.h>
|
|
#include <stdlib.h>
|
|
|
|
G_MODULE_EXPORT gchar* gplugin_a_state;
|
|
|
|
G_MODULE_EXPORT void
|
|
gplugin_a_func (void)
|
|
{
|
|
gplugin_a_state = "Hello world";
|
|
}
|
|
|
|
G_MODULE_EXPORT void
|
|
gplugin_clash_func (void)
|
|
{
|
|
gplugin_a_state = "plugin clash";
|
|
}
|
|
|
|
G_MODULE_EXPORT void
|
|
g_clash_func (void)
|
|
{
|
|
gplugin_a_state = "global clash";
|
|
}
|
|
|
|
G_MODULE_EXPORT void
|
|
gplugin_say_boo_func (void)
|
|
{
|
|
gplugin_a_state = "BOOH";
|
|
}
|
|
|
|
G_MODULE_EXPORT void
|
|
gplugin_a_module_func (GModule *module)
|
|
{
|
|
void (*f) (void) = NULL;
|
|
|
|
if (!g_module_symbol (module, "gplugin_say_boo_func", (gpointer) &f))
|
|
{
|
|
g_print ("error: %s\n", g_module_error ());
|
|
exit (1);
|
|
}
|
|
|
|
f ();
|
|
}
|