From eb07c22a42c7850ab155973283f1dde497d03a3e Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Sat, 20 Feb 2010 01:25:46 -0600 Subject: Extend +w and +X to take named modes in addition to mode letters --- src/modules/m_autoop.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/modules/m_autoop.cpp') diff --git a/src/modules/m_autoop.cpp b/src/modules/m_autoop.cpp index 0a7d774c0..34c10caa2 100644 --- a/src/modules/m_autoop.cpp +++ b/src/modules/m_autoop.cpp @@ -34,7 +34,9 @@ class AutoOpList : public ListModeBase return adding ? MOD_RES_DENY : MOD_RES_PASSTHRU; unsigned int mylevel = channel->GetPrefixValue(source); std::string mid = parameter.substr(0, pos); - ModeHandler* mh = ServerInstance->Modes->FindMode(mid); + ModeHandler* mh = mid.length() == 1 ? + ServerInstance->Modes->FindMode(mid[0], MODETYPE_CHANNEL) : + ServerInstance->Modes->FindMode(mid); if (adding && (!mh || !mh->GetPrefixRank())) { @@ -91,7 +93,10 @@ public: continue; if (chan->CheckBan(user, (**it).mask.substr(colon+1))) { - ModeHandler* given = ServerInstance->Modes->FindMode((**it).mask.substr(0, colon)); + std::string mid = (**it).mask.substr(0, colon); + ModeHandler* given = mid.length() == 1 ? + ServerInstance->Modes->FindMode(mid[0], MODETYPE_CHANNEL) : + ServerInstance->Modes->FindMode(mid); if (given) privs += given->GetModeChar(); } -- cgit v1.3.1-10-gc9f91