mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Allow loading all plugins
This commit is contained in:
parent
a9fab9ed2d
commit
dd42c3de6a
@ -6264,9 +6264,21 @@ gboolean
|
||||
cmd_plugins_load(ProfWin *window, const char *const command, gchar **args)
|
||||
{
|
||||
if (args[1] == NULL) {
|
||||
cons_bad_cmd_usage(command);
|
||||
GSList *loaded = plugins_load_all();
|
||||
if (loaded) {
|
||||
cons_show("Loaded plugins:");
|
||||
GSList *curr = loaded;
|
||||
while (curr) {
|
||||
cons_show(" %s", curr->data);
|
||||
curr = g_slist_next(curr);
|
||||
}
|
||||
g_slist_free_full(loaded, g_free);
|
||||
} else {
|
||||
cons_show("No plugins loaded.");
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean res = plugins_load(args[1]);
|
||||
if (res) {
|
||||
cons_show("Loaded plugin: %s", args[1]);
|
||||
@ -6281,8 +6293,12 @@ gboolean
|
||||
cmd_plugins_unload(ProfWin *window, const char *const command, gchar **args)
|
||||
{
|
||||
if (args[1] == NULL) {
|
||||
plugins_unload_all();
|
||||
cons_show("Unloaded all plugins");
|
||||
gboolean res = plugins_unload_all();
|
||||
if (res) {
|
||||
cons_show("Unloaded all plugins.");
|
||||
} else {
|
||||
cons_show("No plugins unloaded.");
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user