giomodule: Allow overriding source directory gio modules are loaded from
authorStef Walter <stefw@gnome.org>
Fri, 8 Nov 2013 13:26:33 +0000 (14:26 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 23 Nov 2013 06:17:03 +0000 (01:17 -0500)
When testing (and valgrinding) we need to have a known set of modules
loaded.

https://bugzilla.gnome.org/show_bug.cgi?id=711801

docs/reference/gio/overview.xml
gio/giomodule.c

index dcb1bdb..a72bcc6 100644 (file)
@@ -363,12 +363,22 @@ Gvfs is also heavily distributed and relies on a session bus to be present.
     </formalpara>
 
     <formalpara>
+      <title><envar>GIO_MODULE_DIR</envar></title>
+
+      <para>
+        When this environment variable is set to a path, GIO will load
+       modules from this alternate directory instead of the directory
+       built into GIO. This is useful when running tests, for example.
+      </para>
+    </formalpara>
+
+    <formalpara>
       <title><envar>GIO_EXTRA_MODULES</envar></title>
 
       <para>
         When this environment variable is set to a path, or a set of
         paths separated by a colon, GIO will attempt to load
-        modules from within the path.
+        additional modules from within the path.
       </para>
     </formalpara>
 
index 17d55de..2498659 100644 (file)
@@ -1017,6 +1017,7 @@ _g_io_modules_ensure_loaded (void)
   static gboolean loaded_dirs = FALSE;
   const char *module_path;
   GIOModuleScope *scope;
+  const gchar *module_dir;
 
   _g_io_modules_ensure_extension_points_registered ();
   
@@ -1045,7 +1046,11 @@ _g_io_modules_ensure_loaded (void)
        }
 
       /* Then load the compiled in path */
-      g_io_modules_scan_all_in_directory_with_scope (GIO_MODULE_DIR, scope);
+      module_dir = g_getenv ("GIO_MODULE_DIR");
+      if (module_dir == NULL)
+        module_dir = GIO_MODULE_DIR;
+
+      g_io_modules_scan_all_in_directory_with_scope (module_dir, scope);
 
       g_io_module_scope_free (scope);