diff options
author | James Booth <boothj5@gmail.com> | 2016-07-10 01:28:30 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2016-07-10 01:28:30 +0100 |
commit | 9a0111c10a3bd461c036d6d5ffb0e3390bed47c5 (patch) | |
tree | 6c1f75eba19a27e0a8cc3b1228893135785ea4f8 /src/plugins | |
parent | 448bef247b076683862e45aee78f06e29938ffc6 (diff) | |
download | profani-tty-9a0111c10a3bd461c036d6d5ffb0e3390bed47c5.tar.gz |
Allow reloading all plugins with /plugin reload
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/plugins.c | 21 | ||||
-rw-r--r-- | src/plugins/plugins.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/plugins/plugins.c b/src/plugins/plugins.c index 46fa482f..ef3fc5c2 100644 --- a/src/plugins/plugins.c +++ b/src/plugins/plugins.c @@ -187,6 +187,27 @@ plugins_unload(const char *const name) return TRUE; } +void +plugins_reload_all(void) +{ + GList *plugin_names = g_hash_table_get_keys(plugins); + GList *plugin_names_dup = NULL; + GList *curr = plugin_names; + while (curr) { + plugin_names_dup = g_list_append(plugin_names_dup, strdup(curr->data)); + curr = g_list_next(curr); + } + g_list_free(plugin_names); + + curr = plugin_names_dup; + while (curr) { + plugins_reload(curr->data); + curr = g_list_next(curr); + } + + g_list_free_full(plugin_names_dup, free); +} + gboolean plugins_reload(const char *const name) { diff --git a/src/plugins/plugins.h b/src/plugins/plugins.h index 45be1fc6..78bae9e6 100644 --- a/src/plugins/plugins.h +++ b/src/plugins/plugins.h @@ -108,6 +108,7 @@ void plugins_shutdown(void); gboolean plugins_load(const char *const name); gboolean plugins_unload(const char *const name); gboolean plugins_reload(const char *const name); +void plugins_reload_all(void); void plugins_on_start(void); void plugins_on_shutdown(void); |