giomodule: Allow overriding source directory gio modules are loaded from

When testing (and valgrinding) we need to have a known set of modules
loaded.

https://bugzilla.gnome.org/show_bug.cgi?id=711801
This commit is contained in:
Stef Walter 2013-11-08 14:26:33 +01:00 committed by Matthias Clasen
parent be231c6be0
commit e3babb3687
2 changed files with 17 additions and 2 deletions

View File

@ -362,13 +362,23 @@ Gvfs is also heavily distributed and relies on a session bus to be present.
</para>
</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>

View 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);