summaryrefslogtreecommitdiff
path: root/modules/database/db_old.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-01-02 10:55:03 -0500
committerAdam <Adam@anope.org>2014-01-02 10:56:57 -0500
commit072202c181943901c727782e64881adadf13d7dd (patch)
tree22d50538ca4b44416aa4a27099d2d89fc7ca9c44 /modules/database/db_old.cpp
parent595dad4ec17ec127e4865a5167ed6d52e52367b6 (diff)
Have db_old load news.db too
Diffstat (limited to 'modules/database/db_old.cpp')
-rw-r--r--modules/database/db_old.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/modules/database/db_old.cpp b/modules/database/db_old.cpp
index 98cf1e055..739fcaebe 100644
--- a/modules/database/db_old.cpp
+++ b/modules/database/db_old.cpp
@@ -13,6 +13,7 @@
#include "modules/bs_kick.h"
#include "modules/cs_mode.h"
#include "modules/bs_badwords.h"
+#include "modules/os_news.h"
#define READ(x) \
if (true) \
@@ -84,6 +85,10 @@ else \
#define OLD_BS_KICK_FLOOD 0x02000000
#define OLD_BS_KICK_REPEAT 0x01000000
+#define OLD_NEWS_LOGON 0
+#define OLD_NEWS_OPER 1
+#define OLD_NEWS_RANDOM 2
+
static struct mlock_info
{
char c;
@@ -1107,6 +1112,58 @@ static void LoadExceptions()
close_db(f);
}
+static void LoadNews()
+{
+ if (!news_service)
+ return;
+
+ dbFILE *f = open_db_read("OperServ", "news.db", 9);
+
+ if (f == NULL)
+ return;
+
+ int16_t n;
+ READ(read_int16(&n, f));
+
+ for (int16_t i = 0; i < n; i++)
+ {
+ int16_t type;
+ NewsItem *ni = news_service->CreateNewsItem();
+
+ READ(read_int16(&type, f));
+
+ switch (type)
+ {
+ case OLD_NEWS_LOGON:
+ ni->type = NEWS_LOGON;
+ break;
+ case OLD_NEWS_OPER:
+ ni->type = NEWS_OPER;
+ break;
+ case OLD_NEWS_RANDOM:
+ ni->type = NEWS_RANDOM;
+ break;
+ }
+
+ int32_t unused;
+ READ(read_int32(&unused, f));
+
+ READ(read_string(ni->text, f));
+
+ char who[32];
+ READ(read_buffer(who, f));
+ ni->who = who;
+
+ int32_t tmp;
+ READ(read_int32(&tmp, f));
+ ni->time = tmp;
+
+ news_service->AddNewsItem(ni);
+ }
+
+ close_db(f);
+}
+
class DBOld : public Module
{
PrimitiveExtensibleItem<uint32_t> mlock_on, mlock_off;
@@ -1131,6 +1188,7 @@ class DBOld : public Module
LoadChannels();
LoadOper();
LoadExceptions();
+ LoadNews();
return EVENT_STOP;
}