static void initialise_schema_sources (void) { static gsize initialised; /* need a separate variable because 'schema_sources' may legitimately * be null if we have zero valid schema sources */ if G_UNLIKELY (g_once_init_enter (&initialised)) { const gchar * const *dirs; const gchar *path; gint i; /* iterate in reverse: count up, then count down */ dirs = g_get_system_data_dirs (); for (i = 0; dirs[i]; i++); while (i--) { gchar *dirname; dirname = g_build_filename (dirs[i], "glib-2.0", "schemas", NULL); try_prepend_dir (dirname); g_free (dirname); } if ((path = g_getenv ("GSETTINGS_SCHEMA_DIR")) != NULL) try_prepend_dir (path); g_once_init_leave (&initialised, TRUE); } }
static void try_prepend_data_dir (const gchar *directory) { gchar *dirname = g_build_filename (directory, "glib-2.0", "schemas", NULL); try_prepend_dir (dirname); g_free (dirname); }