changed the return type for the GModuleCheckInit function to be a string,

Mon Aug 17 03:41:52 1998  Tim Janik  <timj@gtk.org>

        * gmodule.h:
        * gmodule.c (g_module_open): changed the return type for the
        GModuleCheckInit function to be a string, describing the error
        condition.
        (g_module_symbol): show the failing symbol on error messages.
This commit is contained in:
Tim Janik 1998-08-17 02:40:30 +00:00 committed by Tim Janik
parent e93e494518
commit e746ca4f15
4 changed files with 25 additions and 8 deletions

View File

@ -1,3 +1,11 @@
Mon Aug 17 03:41:52 1998 Tim Janik <timj@gtk.org>
* gmodule.h:
* gmodule.c (g_module_open): changed the return type for the
GModuleCheckInit function to be a string, describing the error
condition.
(g_module_symbol): show the failing symbol on error messages.
Fri Aug 14 02:24:39 1998 Tim Janik <timj@gtk.org> Fri Aug 14 02:24:39 1998 Tim Janik <timj@gtk.org>
* Makefile.am: feature the G_LOG_DOMAIN macro to set the log domain * Makefile.am: feature the G_LOG_DOMAIN macro to set the log domain

View File

@ -165,7 +165,7 @@ g_module_open (const gchar *file_name,
{ {
gchar *saved_error; gchar *saved_error;
GModuleCheckInit check_init; GModuleCheckInit check_init;
gboolean check_failed = FALSE; const gchar *check_failed = NULL;
/* search the module list by handle, since file names are not unique */ /* search the module list by handle, since file names are not unique */
module = g_module_find_by_handle (handle); module = g_module_find_by_handle (handle);
@ -200,9 +200,13 @@ g_module_open (const gchar *file_name,
if (check_failed) if (check_failed)
{ {
gchar *error;
error = g_strconcat ("GModule initialization check failed: ", check_failed, NULL);
g_module_close (module); g_module_close (module);
module = NULL; module = NULL;
g_module_set_error ("GModule initialization check failed"); g_module_set_error (error);
g_free (error);
} }
else else
g_module_set_error (saved_error); g_module_set_error (saved_error);
@ -285,6 +289,11 @@ g_module_symbol (GModule *module,
if (module_error) if (module_error)
{ {
gchar *error;
error = g_strconcat ("`", symbol_name, "': ", module_error, NULL);
g_module_set_error (error);
g_free (error);
*symbol = NULL; *symbol = NULL;
return FALSE; return FALSE;
} }

View File

@ -43,7 +43,7 @@ typedef enum
} GModuleFlags; } GModuleFlags;
typedef struct _GModule GModule; typedef struct _GModule GModule;
typedef gboolean (*GModuleCheckInit) (GModule *module); typedef const gchar* (*GModuleCheckInit) (GModule *module);
typedef void (*GModuleDeInit) (GModule *module); typedef void (*GModuleDeInit) (GModule *module);
/* return TRUE if dynamic module loading is supported */ /* return TRUE if dynamic module loading is supported */

View File

@ -18,12 +18,12 @@
*/ */
#include <gmodule.h> #include <gmodule.h>
G_MODULE_EXPORT gboolean G_MODULE_EXPORT const gchar*
g_module_check_init (GModule *module) g_module_check_init (GModule *module)
{ {
g_print ("GPluginB: check-init\n"); g_print ("GPluginB: check-init\n");
return 0; return NULL;
} }
G_MODULE_EXPORT void G_MODULE_EXPORT void