summaryrefslogtreecommitdiff
path: root/modules/database/db_old.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-02-14 11:10:20 -0500
committerAdam <Adam@anope.org>2014-02-14 11:10:20 -0500
commitca85df2d7475d42579c29d822f424d2c9713774b (patch)
tree9ac4c52c1951761e656f87b0d761988e4b19a61b /modules/database/db_old.cpp
parent5dfa6598c2aaf0e1b64315b7869a2e7d5e357fe1 (diff)
Don't convert XOP access entries to levels in db_old
Diffstat (limited to 'modules/database/db_old.cpp')
-rw-r--r--modules/database/db_old.cpp38
1 files changed, 35 insertions, 3 deletions
diff --git a/modules/database/db_old.cpp b/modules/database/db_old.cpp
index 55926c77b..d6acc2093 100644
--- a/modules/database/db_old.cpp
+++ b/modules/database/db_old.cpp
@@ -805,7 +805,8 @@ static void LoadChannels()
ci->SetLevel(GetLevelName(j), level);
}
- ServiceReference<AccessProvider> provider("AccessProvider", "access/access");
+ bool xop = tmpu32 & OLD_CI_XOP;
+ ServiceReference<AccessProvider> provider_access("AccessProvider", "access/access"), provider_xop("AccessProvider", "access/xop");
uint16_t tmpu16;
READ(read_uint16(&tmpu16, f));
for (uint16_t j = 0; j < tmpu16; ++j)
@@ -814,14 +815,45 @@ static void LoadChannels()
READ(read_uint16(&in_use, f));
if (in_use)
{
- ChanAccess *access = provider ? provider->Create() : NULL;
+ ChanAccess *access = NULL;
+
+ if (xop)
+ {
+ if (provider_xop)
+ access = provider_xop->Create();
+ }
+ else
+ if (provider_access)
+ access = provider_access->Create();
+
if (access)
access->ci = ci;
int16_t level;
READ(read_int16(&level, f));
if (access)
- access->AccessUnserialize(stringify(level));
+ {
+ if (xop)
+ {
+ switch (level)
+ {
+ case 3:
+ access->AccessUnserialize("VOP");
+ break;
+ case 4:
+ access->AccessUnserialize("HOP");
+ break;
+ case 5:
+ access->AccessUnserialize("AOP");
+ break;
+ case 10:
+ access->AccessUnserialize("SOP");
+ break;
+ }
+ }
+ else
+ access->AccessUnserialize(stringify(level));
+ }
Anope::string mask;
READ(read_string(mask, f));