aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_autoop.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2021-03-30 17:52:02 +0100
committerGravatar Sadie Powell2021-03-30 18:25:55 +0100
commit49702c621eed54caee6a45c0518d68a33bca8f92 (patch)
tree94623f04b8635fbff3f1a90117c32d44fce11075 /src/modules/m_autoop.cpp
parentRemove multi-line FJOIN and FMODE logic. (diff)
Convert various mode methods to take Mode::Change.
- AccessCheck - AfterMode - BeforeMode - OnModeChange - OnRawMode
Diffstat (limited to 'src/modules/m_autoop.cpp')
-rw-r--r--src/modules/m_autoop.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/modules/m_autoop.cpp b/src/modules/m_autoop.cpp
index 63f51cc76..d69933df9 100644
--- a/src/modules/m_autoop.cpp
+++ b/src/modules/m_autoop.cpp
@@ -51,16 +51,17 @@ class AutoOpList : public ListModeBase
return mh ? mh->IsPrefixMode() : NULL;
}
- ModResult AccessCheck(User* source, Channel* channel, std::string &parameter, bool adding) override
+ ModResult AccessCheck(User* source, Channel* channel, Modes::Change& change) override
{
- std::string::size_type pos = parameter.find(':');
+ std::string::size_type pos = change.param.find(':');
if (pos == 0 || pos == std::string::npos)
- return adding ? MOD_RES_DENY : MOD_RES_PASSTHRU;
+ return change.adding ? MOD_RES_DENY : MOD_RES_PASSTHRU;
+
unsigned int mylevel = channel->GetPrefixValue(source);
- std::string mid(parameter, 0, pos);
+ std::string mid(change.param, 0, pos);
PrefixMode* mh = FindMode(mid);
- if (adding && !mh)
+ if (change.adding && !mh)
{
source->WriteNumeric(ERR_UNKNOWNMODE, mid, InspIRCd::Format("Cannot find prefix mode '%s' for autoop", mid.c_str()));
return MOD_RES_DENY;
@@ -68,13 +69,14 @@ class AutoOpList : public ListModeBase
else if (!mh)
return MOD_RES_PASSTHRU;
- std::string dummy;
- if (mh->AccessCheck(source, channel, dummy, true) == MOD_RES_DENY)
+ Modes::Change modechange(mh, true, "");
+ if (mh->AccessCheck(source, channel, change) == MOD_RES_DENY)
return MOD_RES_DENY;
- if (mh->GetLevelRequired(adding) > mylevel)
+
+ if (mh->GetLevelRequired(change.adding) > mylevel)
{
source->WriteNumeric(ERR_CHANOPRIVSNEEDED, channel->name, InspIRCd::Format("You must be able to %s mode %c (%s) to %s an autoop containing it",
- adding ? "set" : "unset", mh->GetModeChar(), mh->name.c_str(), adding ? "add" : "remove"));
+ change.adding ? "set" : "unset", mh->GetModeChar(), mh->name.c_str(), change.adding ? "add" : "remove"));
return MOD_RES_DENY;
}
return MOD_RES_PASSTHRU;