summaryrefslogtreecommitdiff
path: root/modules/commands/os_oper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/commands/os_oper.cpp')
-rw-r--r--modules/commands/os_oper.cpp34
1 files changed, 20 insertions, 14 deletions
diff --git a/modules/commands/os_oper.cpp b/modules/commands/os_oper.cpp
index 6e8800e74..22560dd18 100644
--- a/modules/commands/os_oper.cpp
+++ b/modules/commands/os_oper.cpp
@@ -17,14 +17,14 @@ struct MyOper : Oper, Serializable
{
MyOper(const Anope::string &n, OperType *o) : Oper(n, o) { }
- Anope::string serialize_name() const anope_override
+ const Anope::string serialize_name() const anope_override
{
return "Oper";
}
- serialized_data serialize() anope_override
+ Serialize::Data serialize() const anope_override
{
- serialized_data data;
+ Serialize::Data data;
data["name"] << this->name;
data["type"] << this->ot->GetName();
@@ -32,17 +32,23 @@ struct MyOper : Oper, Serializable
return data;
}
- static void unserialize(serialized_data &data)
+ static Serializable* unserialize(Serializable *obj, Serialize::Data &data)
{
OperType *ot = OperType::Find(data["type"].astr());
if (ot == NULL)
- return;
+ return NULL;
NickCore *nc = findcore(data["name"].astr());
if (nc == NULL)
- return;
+ return NULL;
- nc->o = new MyOper(nc->display, ot);
+ MyOper *myo;
+ if (obj)
+ myo = debug_cast<MyOper *>(obj);
+ else
+ myo = new MyOper(nc->display, ot);
+ nc->o = myo;
Log(LOG_NORMAL, "operserv/oper") << "Tied oper " << nc->display << " to type " << ot->GetName();
+ return myo;
}
};
@@ -67,7 +73,7 @@ class CommandOSOper : public Command
const Anope::string &oper = params[1];
const Anope::string &otype = params[2];
- NickAlias *na = findnick(oper);
+ const NickAlias *na = findnick(oper);
if (na == NULL)
source.Reply(NICK_X_NOT_REGISTERED, oper.c_str());
else if (na->nc->o)
@@ -90,7 +96,7 @@ class CommandOSOper : public Command
{
const Anope::string &oper = params[1];
- NickAlias *na = findnick(oper);
+ const NickAlias *na = findnick(oper);
if (na == NULL)
source.Reply(NICK_X_NOT_REGISTERED, oper.c_str());
else if (!na->nc || !na->nc->o)
@@ -107,9 +113,9 @@ class CommandOSOper : public Command
else if (subcommand.equals_ci("LIST"))
{
source.Reply(_("Name Type"));
- for (nickcore_map::const_iterator it = NickCoreList.begin(), it_end = NickCoreList.end(); it != it_end; ++it)
+ for (nickcore_map::const_iterator it = NickCoreList->begin(), it_end = NickCoreList->end(); it != it_end; ++it)
{
- NickCore *nc = it->second;
+ const NickCore *nc = it->second;
if (!nc->o)
continue;
@@ -117,7 +123,7 @@ class CommandOSOper : public Command
source.Reply(_("%-8s %s"), nc->o->name.c_str(), nc->o->ot->GetName().c_str());
if (nc->o->config)
source.Reply(_(" This oper is configured in the configuration file."));
- for (std::list<User *>::iterator uit = nc->Users.begin(); uit != nc->Users.end(); ++uit)
+ for (std::list<User *>::const_iterator uit = nc->Users.begin(); uit != nc->Users.end(); ++uit)
{
User *u = *uit;
source.Reply(_(" %s is online using this oper block."), u->nick.c_str());
@@ -213,9 +219,9 @@ class OSOper : public Module
~OSOper()
{
- for (nickcore_map::const_iterator it = NickCoreList.begin(), it_end = NickCoreList.end(); it != it_end; ++it)
+ for (nickcore_map::const_iterator it = NickCoreList->begin(), it_end = NickCoreList->end(); it != it_end; ++it)
{
- NickCore *nc = it->second;
+ const NickCore *nc = it->second;
if (nc->o && !nc->o->config)
delete nc->o;