diff options
author | James Booth <boothj5@gmail.com> | 2016-04-12 23:25:31 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2016-04-12 23:25:31 +0100 |
commit | 46687aecedc73bab2d4954ef7969616c0477298b (patch) | |
tree | 1be6672381a30878c8375a6dafb04da2e1d355fc /src/plugins/plugins.c | |
parent | 1a73aa39cbd7462ed098952d7d78d5f63c9e92d2 (diff) | |
download | profani-tty-46687aecedc73bab2d4954ef7969616c0477298b.tar.gz |
Only complete unloaded plugins on /plugins load
Diffstat (limited to 'src/plugins/plugins.c')
-rw-r--r-- | src/plugins/plugins.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/plugins/plugins.c b/src/plugins/plugins.c index e2d0bdf3..dfe19eb8 100644 --- a/src/plugins/plugins.c +++ b/src/plugins/plugins.c @@ -181,29 +181,30 @@ _get_plugins_dir(void) } void -_plugins_list_dir(const gchar *const dir, GSList **result) +_plugins_unloaded_list_dir(const gchar *const dir, GSList **result) { - GDir *plugins = g_dir_open(dir, 0, NULL); - if (plugins == NULL) { + GDir *plugins_dir = g_dir_open(dir, 0, NULL); + if (plugins_dir == NULL) { return; } - const gchar *plugin = g_dir_read_name(plugins); + const gchar *plugin = g_dir_read_name(plugins_dir); while (plugin) { - if (g_str_has_suffix(plugin, ".so") || g_str_has_suffix(plugin, ".py")) { + GSList *found = g_slist_find_custom(plugins, plugin, (GCompareFunc)_find_by_name); + if ((g_str_has_suffix(plugin, ".so") || g_str_has_suffix(plugin, ".py")) && !found) { *result = g_slist_append(*result, strdup(plugin)); } - plugin = g_dir_read_name(plugins); + plugin = g_dir_read_name(plugins_dir); } - g_dir_close(plugins); + g_dir_close(plugins_dir); } GSList* -plugins_file_list(void) +plugins_unloaded_list(void) { GSList *result = NULL; char *plugins_dir = _get_plugins_dir(); - _plugins_list_dir(plugins_dir, &result); + _plugins_unloaded_list_dir(plugins_dir, &result); free(plugins_dir); return result; |