diff options
| author | 2021-03-30 17:52:02 +0100 | |
|---|---|---|
| committer | 2021-03-30 18:25:55 +0100 | |
| commit | 49702c621eed54caee6a45c0518d68a33bca8f92 (patch) | |
| tree | 94623f04b8635fbff3f1a90117c32d44fce11075 /src/modules/m_autoop.cpp | |
| parent | Remove 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.cpp | 20 |
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 ¶meter, 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; |
