[PATCH] windows: Fix the default directory to look for plugins
- From: Damien Lespiau <damien lespiau gmail com>
- To: grilo-list menubar gnome org, grilo-list gnome org
- Cc: Damien Lespiau <damien lespiau intel com>
- Subject: [PATCH] windows: Fix the default directory to look for plugins
- Date: Mon, 19 Sep 2011 11:32:45 +0100
From: Damien Lespiau <damien lespiau intel com>
On windows, you need to detect at runtime where you are and build the path to
the plugins directory based on where you are being run. GLib provides a
function to do just that.
Then, you can't really use ':' to separate paths eg. C:\foo:D:\bar
---
src/grilo.c | 36 ++++++++++++++++++++++++++++++++++--
1 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/src/grilo.c b/src/grilo.c
index 4bfb3c2..cbfb653 100644
--- a/src/grilo.c
+++ b/src/grilo.c
@@ -46,6 +46,38 @@ static gboolean grl_initialized = FALSE;
static const gchar *plugin_path = NULL;
static const gchar *plugin_list = NULL;
+#ifdef G_OS_WIN32
+
+/* We can't use ':' to split a list of paths on windows (C:\...) */
+#define PATH_SPLIT_CHARS ","
+
+static const gchar *
+get_default_plugin_dir (void)
+{
+ static gchar *plugin_dir = NULL;
+ gchar *run_directory;
+
+ if (plugin_dir)
+ return plugin_dir;
+
+ run_directory = g_win32_get_package_installation_directory_of_module (NULL);
+ plugin_dir = g_build_filename (run_directory,
+ "lib", GRL_NAME,
+ NULL);
+ g_free (run_directory);
+ return plugin_dir;
+}
+#else
+
+#define PATH_SPLIT_CHARS ":"
+
+static const gchar *
+get_default_plugin_dir (void)
+{
+ return GRL_PLUGINS_DIR;
+}
+#endif
+
/**
* grl_init:
* @argc: (inout) (allow-none): number of input arguments, length of @argv
@@ -107,10 +139,10 @@ grl_init (gint *argc,
}
if (!plugin_path) {
- plugin_path = GRL_PLUGIN_PATH_DEFAULT;
+ plugin_path = get_default_plugin_dir ();
}
- split_list = g_strsplit (plugin_path, ":", 0);
+ split_list = g_strsplit (plugin_path, PATH_SPLIT_CHARS, 0);
for (split_element = split_list; *split_element; split_element++) {
grl_plugin_registry_add_directory (registry, *split_element);
}
--
1.7.6
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]