WIP - Unload plugin commands

This commit is contained in:
James Booth
2016-06-29 23:35:57 +01:00
parent 61a09476c5
commit a01eb5d08e
21 changed files with 162 additions and 21 deletions

View File

@@ -77,6 +77,40 @@ callbacks_add_command(PluginCommand *command)
cmd_ac_add_help(&command->command_name[1]);
}
void
_command_destroy(PluginCommand *command)
{
free(command->command_name);
free(command->plugin_name);
command_help_free(command->help);
// TODO free callback
}
void
callbacks_remove_commands(const char *const plugin_name)
{
GSList *items_to_remove = NULL;
GSList *curr = p_commands;
while (curr) {
PluginCommand *command = curr->data;
if (g_strcmp0(command->plugin_name, plugin_name) == 0) {
cmd_ac_remove(command->command_name);
cmd_ac_remove_help(&command->command_name[1]);
items_to_remove = g_slist_append(items_to_remove, curr);
}
curr = g_slist_next(curr);
}
curr = items_to_remove;
while (curr) {
GSList *item = curr->data;
PluginCommand *command = item->data;
_command_destroy(command);
p_commands = g_slist_remove_link(p_commands, item);
curr = g_slist_next(curr);
}
}
void
callbacks_add_timed(PluginTimedFunction *timed_function)
{