diff --git a/gio/gsettingsschema.c b/gio/gsettingsschema.c index 1cb013638..559231d7c 100644 --- a/gio/gsettingsschema.c +++ b/gio/gsettingsschema.c @@ -45,7 +45,7 @@ * path #IMPLIED * gettext-domain #IMPLIED > * - * + * * * @@ -54,13 +54,17 @@ * * * - * - * - * - * * + * * * + * + * + * + * + * + * + * * ]]> * ]| */ @@ -83,11 +87,12 @@ initialise_schema_sources (void) if G_UNLIKELY (g_once_init_enter (&initialised)) { const gchar * const *dir; + gchar *path; for (dir = g_get_system_data_dirs (); *dir; dir++) { - GvdbTable *table; gchar *filename; + GvdbTable *table; filename = g_strdup_printf ("%s/glib-2.0/schemas/compiled", *dir); table = gvdb_table_new (filename, TRUE, NULL); @@ -98,6 +103,20 @@ initialise_schema_sources (void) g_free (filename); } + if ((path = g_getenv ("GSETTINGS_SCHEMA_DIR")) != NULL) + { + gchar *filename; + GvdbTable *table; + + filename = g_build_filename (path, "compiled", NULL); + table = gvdb_table_new (filename, TRUE, NULL); + + if (table != NULL) + schema_sources = g_slist_prepend (schema_sources, table); + + g_free (filename); + } + schema_sources = g_slist_reverse (schema_sources); g_once_init_leave (&initialised, TRUE);