about summary refs log tree commit diff stats
path: root/src/plugins
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2017-02-05 19:16:14 +0000
committerJames Booth <boothj5@gmail.com>2017-02-05 19:16:14 +0000
commitdd42c3de6af29f1a59aa890ee0dae92f71efa23b (patch)
treed0f0a5fd32fe81569382344f5d4d14b3b50ff28e /src/plugins
parenta9fab9ed2dc75671e61a6d44ba0ea5c861eeb5dc (diff)
downloadprofani-tty-dd42c3de6af29f1a59aa890ee0dae92f71efa23b.tar.gz
Allow loading all plugins
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);