X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fmodules.c;h=ba3562abe1209129b54a08e8edcf7042ac04580b;hb=78e040af3fcc36ab684611c0f98b4381ff420878;hp=ba3a43a6b8fb32937ad4665bc464d74bb3de053b;hpb=ff689d90ad836cbbb3f1b773618ce249377bc631;p=NeonServV5.git diff --git a/src/modules.c b/src/modules.c index ba3a43a..ba3562a 100644 --- a/src/modules.c +++ b/src/modules.c @@ -1,4 +1,4 @@ -/* modules.c - NeonServ v5.4 +/* modules.c - NeonServ v5.5 * Copyright (C) 2011-2012 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -45,6 +45,9 @@ /* 181-183 */ #include "WHOHandler.h" /* 184-188 */ #include "version.h" /* 189 */ /* modules.h */ +/* 190 */ /* UserNode.h */ +/* 191-193 */ #include "ModuleFunctions.h" +/* 194 */ /* bots.h */ #define Function void * @@ -110,8 +113,8 @@ void *global_functions[] = { /* 054 */ (Function) unbind_nick, /* 055 */ (Function) bind_part, /* 056 */ (Function) unbind_part, -/* 057 */ (Function) bind_quit, -/* 058 */ (Function) unbind_quit, +/* 057 */ (Function) NULL, /* deprecated */ +/* 058 */ (Function) NULL, /* deprecated */ /* 059 */ (Function) bind_kick, /* 060 */ (Function) unbind_kick, /* 061 */ (Function) bind_topic, @@ -183,7 +186,7 @@ void *global_functions[] = { /* 120 */ (Function) find_botwise_cmd_binding, /* 121 */ (Function) bind_botwise_unbound_required_functions, /* 122 */ (Function) find_cmd_function, -/* 123 */ (Function) getTextBot, +/* 123 */ (Function) NULL, /* deprecated */ /* 124 */ (Function) register_command_alias, /* 125 */ (Function) getAllBinds, /* 126 */ (Function) createModeNode, @@ -249,7 +252,12 @@ void *global_functions[] = { /* 186 */ (Function) get_revision, /* 187 */ (Function) get_codelines, /* 188 */ (Function) get_patchlevel, -/* 189 */ (Function) get_module_name +/* 189 */ (Function) get_module_name, +/* 190 */ (Function) isUserModeSet, +/* 191 */ (Function) module_global_cmd_register_neonbackup, +/* 192 */ (Function) module_global_cmd_unregister_neonbackup, +/* 193 */ (Function) module_neonbackup_recover_chan, +/* 194 */ (Function) requestInvite }; static int module_id_counter = 1; @@ -346,6 +354,7 @@ struct ModuleInfo *loadModule(char *name) { modinfo->state = 0; modinfo->next = modules; modules = modinfo; + scan_module(modinfo); return modinfo; } @@ -386,6 +395,7 @@ int ext_unload_module(char *name) { unregister_module_hooks(old_modinfo->module_id); ((void (*)(int)) old_modinfo->stopfunc)(MODSTATE_STARTSTOP); closemodule(old_modinfo->module); + free_module_functions(old_modinfo); free(old_modinfo->name); free(old_modinfo); return 1; @@ -408,6 +418,7 @@ int ext_reload_module(char *name) { unregister_module_hooks(old_modinfo->module_id); ((void (*)(int)) old_modinfo->stopfunc)(MODSTATE_RELOAD); closemodule(old_modinfo->module); + free_module_functions(old_modinfo); free(old_modinfo->name); free(old_modinfo); break; @@ -454,6 +465,7 @@ void stop_modules() { unregister_module_hooks(modinfo->module_id); ((void (*)(int)) modinfo->stopfunc)(MODSTATE_STARTSTOP); closemodule(modinfo->module); + free_module_functions(modinfo); free(modinfo->name); free(modinfo); } @@ -464,6 +476,7 @@ static void unregister_module_hooks(int module_id) { unregister_module_commands(module_id); unregister_module_events(module_id); unregister_module_timers(module_id); + } int module_loaded(int module_id) { @@ -485,3 +498,5 @@ char *get_module_name(int module_id) { } return NULL; } + +