summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/os_help.c14
-rw-r--r--src/core/os_logonnews.c39
-rw-r--r--src/core/os_opernews.c40
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 */