diff options
author | viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b <viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-09-11 17:33:47 +0000 |
---|---|---|
committer | viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b <viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-09-11 17:33:47 +0000 |
commit | d96924c43abed7dd2783856dd8887476bb0de3e1 (patch) | |
tree | 2971f68779e534722c443f68cd6d10815b631a7c /src | |
parent | 66a68d639f33f8394d61d246f8b7c8dd76192c30 (diff) |
BUILD : 1.7.21 (1432) BUGS : NOTES : The newscount in help is now handled by modules instead of os_help.
git-svn-id: svn://svn.anope.org/anope/trunk@1432 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1147 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/core/os_help.c | 14 | ||||
-rw-r--r-- | src/core/os_logonnews.c | 39 | ||||
-rw-r--r-- | src/core/os_opernews.c | 40 |
3 files changed, 72 insertions, 21 deletions
diff --git a/src/core/os_help.c b/src/core/os_help.c index 5d837e6f3..822d1dcd0 100644 --- a/src/core/os_help.c +++ b/src/core/os_help.c @@ -59,20 +59,6 @@ int do_help(User * u) notice_help(s_OperServ, u, OPER_HELP); moduleDisplayHelp(5, u); notice_help(s_OperServ, u, OPER_HELP_LOGGED); - } else if ((stricmp(cmd, "LOGONNEWS") == 0) && - findModule("os_logonnews")) { - Command *c = findCommand(OPERSERV, cmd); - - notice_help(s_OperServ, u, NEWS_HELP_LOGON, NewsCount); - do_help_limited(s_OperServ, u, c); - - } else if ((stricmp(cmd, "OPERNEWS") == 0) && - findModule("os_opernews")) { - Command *c = findCommand(OPERSERV, cmd); - - notice_help(s_OperServ, u, NEWS_HELP_OPER, NewsCount); - do_help_limited(s_OperServ, u, c); - } else { mod_help_cmd(s_OperServ, u, OPERSERV, cmd); } diff --git a/src/core/os_logonnews.c b/src/core/os_logonnews.c index 91cf86ba6..20516c473 100644 --- a/src/core/os_logonnews.c +++ b/src/core/os_logonnews.c @@ -15,7 +15,11 @@ #include "module.h" +Command *c; + void myOperServHelp(User * u); +int load_config(void); +int reload_config(int argc, char **argv); /** * Create the command, and tell anope about it. @@ -25,7 +29,8 @@ void myOperServHelp(User * u); **/ int AnopeInit(int argc, char **argv) { - Command *c; + EvtHook *hook; + char buf[BUFSIZE]; moduleAddAuthor("Anope"); moduleAddVersion("$Id$"); @@ -36,11 +41,19 @@ int AnopeInit(int argc, char **argv) * we can look at moving it here later **/ c = createCommand("LOGONNEWS", do_logonnews, is_services_admin, - -1, -1, -1, -1, -1); + NEWS_HELP_LOGON, -1, -1, -1, -1); + snprintf(buf, BUFSIZE, "%d", NewsCount), + c->help_param1 = sstrdup(buf); moduleAddCommand(OPERSERV, c, MOD_UNIQUE); moduleSetOperHelp(myOperServHelp); + hook = createEventHook(EVENT_RELOAD, reload_config); + if (moduleAddEventHook(hook) != MOD_ERR_OK) { + alog("[\002os_logonnews\002] Can't hook to EVENT_RELOAD event"); + return MOD_STOP; + } + return MOD_CONT; } @@ -49,7 +62,7 @@ int AnopeInit(int argc, char **argv) **/ void AnopeFini(void) { - + free(c->help_param1); } @@ -63,3 +76,23 @@ void myOperServHelp(User * u) notice_lang(s_OperServ, u, OPER_HELP_CMD_LOGONNEWS); } } + + +/** + * Upon /os reload refresh the count + **/ +int reload_config(int argc, char **argv) { + char buf[BUFSIZE]; + + if (argc >= 1) { + if (!stricmp(argv[0], EVENT_START)) { + free(c->help_param1); + snprintf(buf, BUFSIZE, "%d", NewsCount), + c->help_param1 = sstrdup(buf); + } + } + + return MOD_CONT; +} + +/* EOF */ diff --git a/src/core/os_opernews.c b/src/core/os_opernews.c index 59dc8b82b..dc9b3006a 100644 --- a/src/core/os_opernews.c +++ b/src/core/os_opernews.c @@ -15,7 +15,11 @@ #include "module.h" +Command *c; + void myOperServHelp(User * u); +int load_config(void); +int reload_config(int argc, char **argv); /** * Create the command, and tell anope about it. @@ -25,7 +29,8 @@ void myOperServHelp(User * u); **/ int AnopeInit(int argc, char **argv) { - Command *c; + EvtHook *hook; + char buf[BUFSIZE]; moduleAddAuthor("Anope"); moduleAddVersion("$Id$"); @@ -35,12 +40,20 @@ int AnopeInit(int argc, char **argv) * For some unknown reason, do_opernews is actaully defined in news.c * we can look at moving it here later **/ - c = createCommand("OPERNEWS", do_opernews, is_services_admin, - -1, -1, -1, -1, -1); + c = createCommand("OPERNEWS", do_opernews, is_services_admin, + NEWS_HELP_OPER, -1, -1, -1, -1); + snprintf(buf, BUFSIZE, "%d", NewsCount), + c->help_param1 = sstrdup(buf); moduleAddCommand(OPERSERV, c, MOD_UNIQUE); moduleSetOperHelp(myOperServHelp); + hook = createEventHook(EVENT_RELOAD, reload_config); + if (moduleAddEventHook(hook) != MOD_ERR_OK) { + alog("[\002os_opernews\002] Can't hook to EVENT_RELOAD event"); + return MOD_STOP; + } + return MOD_CONT; } @@ -49,7 +62,7 @@ int AnopeInit(int argc, char **argv) **/ void AnopeFini(void) { - + free(c->help_param1); } @@ -63,3 +76,22 @@ void myOperServHelp(User * u) notice_lang(s_OperServ, u, OPER_HELP_CMD_OPERNEWS); } } + +/** + * Upon /os reload refresh the count + **/ +int reload_config(int argc, char **argv) { + char buf[BUFSIZE]; + + if (argc >= 1) { + if (!stricmp(argv[0], EVENT_START)) { + free(c->help_param1); + snprintf(buf, BUFSIZE, "%d", NewsCount), + c->help_param1 = sstrdup(buf); + } + } + + return MOD_CONT; +} + +/* EOF */ |