about summary refs log tree commit diff stats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/plugins.c26
-rw-r--r--src/plugins/plugins.h3
2 files changed, 26 insertions, 3 deletions
diff --git a/src/plugins/plugins.c b/src/plugins/plugins.c
index c9e37c15..4896fedb 100644
--- a/src/plugins/plugins.c
+++ b/src/plugins/plugins.c
@@ -153,6 +153,23 @@ plugins_install(const char *const plugin_name, const char *const filename)
     return result;
 }
 
+GSList*
+plugins_load_all(void)
+{
+    GSList *plugins = plugins_unloaded_list();
+    GSList *loaded = NULL;
+    GSList *curr = plugins;
+    while (curr) {
+        if (plugins_load(curr->data)) {
+            loaded = g_slist_append(loaded, strdup(curr->data));
+        }
+        curr = g_slist_next(curr);
+    }
+    g_slist_free_full(plugins, g_free);
+
+    return loaded;
+}
+
 gboolean
 plugins_load(const char *const name)
 {
@@ -190,9 +207,10 @@ plugins_load(const char *const name)
     }
 }
 
-void
+gboolean
 plugins_unload_all(void)
 {
+    gboolean result = FALSE;
     GList *plugin_names = g_hash_table_get_keys(plugins);
     GList *plugin_names_dup = NULL;
     GList *curr = plugin_names;
@@ -204,11 +222,15 @@ plugins_unload_all(void)
 
     curr = plugin_names_dup;
     while (curr) {
-        plugins_unload(curr->data);
+        if (plugins_unload(curr->data)) {
+            result = TRUE;
+        }
         curr = g_list_next(curr);
     }
 
     g_list_free_full(plugin_names_dup, free);
+
+    return result;
 }
 
 gboolean
diff --git a/src/plugins/plugins.h b/src/plugins/plugins.h
index 8762556e..502af806 100644
--- a/src/plugins/plugins.h
+++ b/src/plugins/plugins.h
@@ -109,8 +109,9 @@ void plugins_shutdown(void);
 
 gboolean plugins_install(const char *const plugin_name, const char *const filename);
 gboolean plugins_load(const char *const name);
+GSList* plugins_load_all(void);
 gboolean plugins_unload(const char *const name);
-void plugins_unload_all(void);
+gboolean plugins_unload_all(void);
 gboolean plugins_reload(const char *const name);
 void plugins_reload_all(void);