diff options
author | James Booth <boothj5@gmail.com> | 2016-06-29 23:35:57 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2016-06-29 23:35:57 +0100 |
commit | a01eb5d08e1b39d60a6f8fc26e5a87ceb92ec18f (patch) | |
tree | be77126865e0cb26963859ad384a225e9c993c9e /src/plugins/plugins.c | |
parent | 61a09476c511c33abd9b6be3d5786fee1fa93b94 (diff) | |
download | profani-tty-a01eb5d08e1b39d60a6f8fc26e5a87ceb92ec18f.tar.gz |
WIP - Unload plugin commands
Diffstat (limited to 'src/plugins/plugins.c')
-rw-r--r-- | src/plugins/plugins.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/plugins/plugins.c b/src/plugins/plugins.c index 5757a174..3395c77f 100644 --- a/src/plugins/plugins.c +++ b/src/plugins/plugins.c @@ -172,6 +172,33 @@ plugins_load(const char *const name) } } +gboolean +plugins_unload(const char *const name) +{ + GSList *found = g_slist_find_custom(plugins, name, (GCompareFunc)_find_by_name); + if (!found) { + log_info("Failed to unload plugin: %s, plugin not currently loaded", name); + return FALSE; + } + + plugins = g_slist_remove_link(plugins, found); + +#ifdef HAVE_PYTHON + if (g_str_has_suffix(name, ".py")) { + python_plugin_destroy(found->data); + } +#endif +#ifdef HAVE_C + if (g_str_has_suffix(name, ".so")) { + c_plugin_destroy(found->data); + } +#endif + + g_slist_free(found); + + return TRUE; +} + GSList * plugins_get_list(void) { |