From addf308add5d112c24e91706275ba47c2a592243 Mon Sep 17 00:00:00 2001 From: Sebastian Dröge Date: Fri, 24 Sep 2010 22:43:51 +0200 Subject: frei0r: Add support for the FREI0R_PATH environment variable This was added in version 1.2 of the spec and replaces the default list of directories. --- gst/frei0r/gstfrei0r.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/gst/frei0r/gstfrei0r.c b/gst/frei0r/gstfrei0r.c index cfda1081d..d6604ec90 100644 --- a/gst/frei0r/gstfrei0r.c +++ b/gst/frei0r/gstfrei0r.c @@ -635,13 +635,14 @@ plugin_init (GstPlugin * plugin) const gchar *homedir; gchar *path; GHashTable *plugin_names; + const gchar *frei0r_path; GST_DEBUG_CATEGORY_INIT (frei0r_debug, "frei0r", 0, "frei0r"); gst_controller_init (NULL, NULL); gst_plugin_add_dependency_simple (plugin, - "HOME/.frei0r-1/lib", + "FREI0R_PATH:HOME/.frei0r-1/lib", "/usr/lib/frei0r-1:/usr/local/lib/frei0r-1:" "/usr/lib32/frei0r-1:/usr/local/lib32/frei0r-1:" "/usr/lib64/frei0r-1:/usr/local/lib64/frei0r-1", @@ -651,17 +652,28 @@ plugin_init (GstPlugin * plugin) g_hash_table_new_full ((GHashFunc) g_str_hash, (GEqualFunc) g_str_equal, (GDestroyNotify) g_free, NULL); - homedir = g_get_home_dir (); - path = g_build_filename (homedir, ".frei0r-1", NULL); - register_plugins (plugin, plugin_names, path); - g_free (path); - - register_plugins (plugin, plugin_names, "/usr/local/lib/frei0r-1"); - register_plugins (plugin, plugin_names, "/usr/lib/frei0r-1"); - register_plugins (plugin, plugin_names, "/usr/local/lib32/frei0r-1"); - register_plugins (plugin, plugin_names, "/usr/lib32/frei0r-1"); - register_plugins (plugin, plugin_names, "/usr/local/lib64/frei0r-1"); - register_plugins (plugin, plugin_names, "/usr/lib64/frei0r-1"); + frei0r_path = g_getenv ("FREI0R_PATH"); + if (frei0r_path && *frei0r_path) { + gchar **p, **paths = g_strsplit (frei0r_path, ":", -1); + + for (p = paths; *p; p++) { + register_plugins (plugin, plugin_names, *p); + } + + g_strfreev (paths); + } else { + homedir = g_get_home_dir (); + path = g_build_filename (homedir, ".frei0r-1", NULL); + register_plugins (plugin, plugin_names, path); + g_free (path); + + register_plugins (plugin, plugin_names, "/usr/local/lib/frei0r-1"); + register_plugins (plugin, plugin_names, "/usr/lib/frei0r-1"); + register_plugins (plugin, plugin_names, "/usr/local/lib32/frei0r-1"); + register_plugins (plugin, plugin_names, "/usr/lib32/frei0r-1"); + register_plugins (plugin, plugin_names, "/usr/local/lib64/frei0r-1"); + register_plugins (plugin, plugin_names, "/usr/lib64/frei0r-1"); + } g_hash_table_unref (plugin_names); -- cgit v1.2.3