diff options
Diffstat (limited to 'src/plugins/c_plugins.c')
-rw-r--r-- | src/plugins/c_plugins.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/c_plugins.c b/src/plugins/c_plugins.c index 5c0047c8..1a4b8754 100644 --- a/src/plugins/c_plugins.c +++ b/src/plugins/c_plugins.c @@ -81,6 +81,7 @@ c_plugin_create(const char *const filename) plugin->init_func = c_init_hook; plugin->on_start_func = c_on_start_hook; plugin->on_shutdown_func = c_on_shutdown_hook; + plugin->on_unload_func = c_on_unload_hook; plugin->on_connect_func = c_on_connect_hook; plugin->on_disconnect_func = c_on_disconnect_hook; plugin->pre_chat_message_display = c_pre_chat_message_display_hook; @@ -162,6 +163,20 @@ c_on_shutdown_hook(ProfPlugin *plugin) } void +c_on_unload_hook(ProfPlugin *plugin) +{ + void *f = NULL; + void (*func)(void); + assert(plugin && plugin->module); + + if (NULL == (f = dlsym(plugin->module, "prof_on_unload"))) + return; + + func = (void (*)(void))f; + func(); +} + +void c_on_connect_hook(ProfPlugin *plugin, const char *const account_name, const char *const fulljid) { void *f = NULL; |