Add /plugins install command

This commit is contained in:
James Booth
2016-07-12 23:50:21 +01:00
parent 5f393a6d9f
commit 0991699ae6
7 changed files with 218 additions and 106 deletions

View File

@@ -62,6 +62,8 @@
static GHashTable *plugins;
static gchar* _get_plugins_dir(void);
void
plugins_init(void)
{
@@ -128,6 +130,30 @@ plugins_init(void)
return;
}
gboolean
plugins_install(const char *const plugin_name, const char *const filename)
{
char *plugins_dir = _get_plugins_dir();
GString *target_path = g_string_new(plugins_dir);
free(plugins_dir);
g_string_append(target_path, "/");
g_string_append(target_path, plugin_name);
ProfPlugin *plugin = g_hash_table_lookup(plugins, plugin_name);
if (plugin) {
plugins_unload(plugin_name);
}
gboolean result = copy_file(filename, target_path->str);
g_string_free(target_path, TRUE);
if (result) {
result = plugins_load(plugin_name);
}
return result;
}
gboolean
plugins_load(const char *const name)
{

View File

@@ -105,6 +105,7 @@ char* plugins_autocomplete(const char *const input);
void plugins_reset_autocomplete(void);
void plugins_shutdown(void);
gboolean plugins_install(const char *const plugin_name, const char *const filename);
gboolean plugins_load(const char *const name);
gboolean plugins_unload(const char *const name);
gboolean plugins_reload(const char *const name);