summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorRobin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>2008-11-06 21:45:10 +0000
committerRobin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>2008-11-06 21:45:10 +0000
commit2644f79301d3d66b0fcf6d5399520148a9860c27 (patch)
treec3dd77f5561f40fb66ca5da33ba2507a385910f9 /src/core
parent32aa19dc87b5d2982a1f3c9a3f4926cb6fd2c5ae (diff)
Remove queueing on module load/unload, NOTE: don't try unload os_modunload, otherwise things probably won't go too well right now.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1564 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core')
-rw-r--r--src/core/os_modload.c32
-rw-r--r--src/core/os_modunload.c38
2 files changed, 51 insertions, 19 deletions
diff --git a/src/core/os_modload.c b/src/core/os_modload.c
index 5e7aaebb1..4d876272f 100644
--- a/src/core/os_modload.c
+++ b/src/core/os_modload.c
@@ -55,15 +55,31 @@ void myOperServHelp(User * u)
**/
int do_modload(User * u)
{
- char *name;
+ char *name;
- name = strtok(NULL, "");
- if (!name) {
- syntax_error(s_OperServ, u, "MODLOAD", OPER_MODULE_LOAD_SYNTAX);
- return MOD_CONT;
- }
- if (!queueModuleLoad(name, u))
- notice_lang(s_OperServ, u, OPER_MODULE_LOAD_FAIL, name);
+ name = strtok(NULL, "");
+ if (!name)
+ {
+ syntax_error(s_OperServ, u, "MODLOAD", OPER_MODULE_LOAD_SYNTAX);
+ return MOD_CONT;
+ }
+
+ Module *m = findModule(name);
+ if (m)
+ {
+ notice_lang(s_OperServ, u, OPER_MODULE_LOAD_FAIL, name);
+ return MOD_CONT;
+ }
+
+ m = createModule(name);
+ alog("Trying to load module [%s]", mod_operation_queue->m->name);
+ status = loadModule(mod_operation_queue->m, mod_operation_queue->u);
+ alog("Module loading status: %d (%s)", status, ModuleGetErrStr(status));
+ if (status != MOD_ERR_OK)
+ {
+ notice_lang(s_OperServ, user, OPER_MODULE_LOAD_FAIL, m->name);
+ destroyModule(m);
+ }
return MOD_CONT;
}
diff --git a/src/core/os_modunload.c b/src/core/os_modunload.c
index 786e5914b..9adfbfd8d 100644
--- a/src/core/os_modunload.c
+++ b/src/core/os_modunload.c
@@ -54,20 +54,36 @@ void myOperServHelp(User * u)
* @param u The user who issued the command
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
**/
-int do_modunload(User * u)
+int do_modunload(User *u)
{
- char *name;
+ char *name;
+ int status;
- name = strtok(NULL, "");
- if (!name) {
- syntax_error(s_OperServ, u, "MODUNLOAD",
- OPER_MODULE_UNLOAD_SYNTAX);
- return MOD_CONT;
- }
- if (!queueModuleUnload(name, u))
- notice_lang(s_OperServ, u, OPER_MODULE_REMOVE_FAIL, name);
+ name = strtok(NULL, "");
+ if (!name)
+ {
+ syntax_error(s_OperServ, u, "MODUNLOAD", OPER_MODULE_UNLOAD_SYNTAX);
+ return MOD_CONT;
+ }
+
+ Module *m = findModule(name);
+ if (!m)
+ {
+ syntax_error(s_OperServ, u, "MODUNLOAD", OPER_MODULE_UNLOAD_SYNTAX);
+ return MOD_CONT;
+ }
+
+ alog("Trying to unload module [%s]", m->name);
+
+ status = unloadModule(m, u);
+
+ if (!status)
+ {
+ alog("Module unloading status: %d (%s)", status, ModuleGetErrStr(status));
+ notice_lang(s_OperServ, u, OPER_MODULE_REMOVE_FAIL, name);
+ }
- return MOD_CONT;
+ return MOD_CONT;
}
MODULE_INIT(OSModUnLoad)