changed the return type for the GModuleCheckInit function to be a string,
authorTim Janik <timj@gtk.org>
Mon, 17 Aug 1998 02:40:30 +0000 (02:40 +0000)
committerTim Janik <timj@src.gnome.org>
Mon, 17 Aug 1998 02:40:30 +0000 (02:40 +0000)
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.

gmodule/ChangeLog
gmodule/gmodule.c
gmodule/gmodule.h
gmodule/libgplugin_b.c

index 102ee35..6bea38c 100644 (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>
 
        * Makefile.am: feature the G_LOG_DOMAIN macro to set the log domain
index 6d5ab01..7bf28c1 100644 (file)
@@ -165,7 +165,7 @@ g_module_open (const gchar    *file_name,
     {
       gchar *saved_error;
       GModuleCheckInit check_init;
-      gboolean check_failed = FALSE;
+      const gchar *check_failed = NULL;
       
       /* search the module list by handle, since file names are not unique */
       module = g_module_find_by_handle (handle);
@@ -200,9 +200,13 @@ g_module_open (const gchar    *file_name,
       
       if (check_failed)
        {
+         gchar *error;
+
+         error = g_strconcat ("GModule initialization check failed: ", check_failed, NULL);
          g_module_close (module);
          module = NULL;
-         g_module_set_error ("GModule initialization check failed");
+         g_module_set_error (error);
+         g_free (error);
        }
       else
        g_module_set_error (saved_error);
@@ -285,6 +289,11 @@ g_module_symbol (GModule   *module,
   
   if (module_error)
     {
+      gchar *error;
+
+      error = g_strconcat ("`", symbol_name, "': ", module_error, NULL);
+      g_module_set_error (error);
+      g_free (error);
       *symbol = NULL;
       return FALSE;
     }
index afcdeaf..581aaf9 100644 (file)
@@ -39,12 +39,12 @@ extern const char      *g_log_domain_gmodule;
 typedef enum
 {
   G_MODULE_BIND_LAZY   = 1 << 0,
-  G_MODULE_BIND_MASK   = 0x01
+    G_MODULE_BIND_MASK = 0x01
 } GModuleFlags;
 
-typedef        struct  _GModule                GModule;
-typedef gboolean (*GModuleCheckInit)   (GModule        *module);
-typedef void    (*GModuleDeInit)       (GModule        *module);
+typedef        struct _GModule                  GModule;
+typedef const gchar* (*GModuleCheckInit) (GModule      *module);
+typedef void        (*GModuleDeInit)    (GModule       *module);
 
 /* return TRUE if dynamic module loading is supported */
 gboolean       g_module_supported         (void);
index d968975..2d2de96 100644 (file)
  */
 #include        <gmodule.h>
 
-G_MODULE_EXPORT gboolean
+G_MODULE_EXPORT const gchar*
 g_module_check_init (GModule *module)
 {
   g_print ("GPluginB: check-init\n");
 
-  return 0;
+  return NULL;
 }
 
 G_MODULE_EXPORT void