diff options
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 */ |