From 7553fc1f909054a1606fb852e26d4631079ddec4 Mon Sep 17 00:00:00 2001 From: Johan Bilien Date: Thu, 23 Oct 2008 09:10:04 +0000 Subject: =?UTF-8?q?Bug=20557468=20=E2=80=93=20Support=20for=20GI=5FTYPELIB?= =?UTF-8?q?=5FPATH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2008-10-23 Johan Bilien Bug 557468 – Support for GI_TYPELIB_PATH * girepository/girepository.c: if the GI_TYPELIB_PATH is set, add the provided paths to the global search path. svn path=/trunk/; revision=786 --- girepository/girepository.c | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'girepository') diff --git a/girepository/girepository.c b/girepository/girepository.c index b43a451b..3e909532 100644 --- a/girepository/girepository.c +++ b/girepository/girepository.c @@ -84,8 +84,8 @@ init_globals () { g_static_mutex_lock (&globals_lock); - if (default_repository == NULL) - { + if (default_repository == NULL) + { default_repository = g_object_new (G_TYPE_IREPOSITORY, NULL); } @@ -93,14 +93,37 @@ init_globals () { const gchar *const *datadirs; const gchar *const *dir; - - datadirs = g_get_system_data_dirs (); - + const gchar *type_lib_path_env; + + type_lib_path_env = g_getenv ("GI_TYPELIB_PATH"); + search_path = NULL; - for (dir = datadirs; *dir; dir++) { - char *path = g_build_filename (*dir, "girepository", NULL); - search_path = g_slist_prepend (search_path, path); - } + if (type_lib_path_env) + { + gchar **custom_dirs; + gchar **d; + + custom_dirs = g_strsplit (type_lib_path_env, G_SEARCHPATH_SEPARATOR_S, 0); + + d = custom_dirs; + while (*d) + { + search_path = g_slist_prepend (search_path, *d); + d++; + } + + /* ownership of the array content was passed to the list */ + g_free (custom_dirs); + } + + datadirs = g_get_system_data_dirs (); + + for (dir = datadirs; *dir; dir++) + { + char *path = g_build_filename (*dir, "girepository", NULL); + search_path = g_slist_prepend (search_path, path); + } + search_path = g_slist_reverse (search_path); } -- cgit v1.2.1