summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/modules.conf.example6
-rw-r--r--src/modules/m_exemptchanops.cpp17
2 files changed, 9 insertions, 14 deletions
diff --git a/docs/modules.conf.example b/docs/modules.conf.example
index cc120af61..db4b1db52 100644
--- a/docs/modules.conf.example
+++ b/docs/modules.conf.example
@@ -739,10 +739,10 @@
#-#-#-#-#-#-#-#-#-#- EXEMPTCHANOPS CONFIGURATION -#-#-#-#-#-#-#-#-#-#
# defaults - default exemptions. These can be added to or overridden #
# by the channel mode +X. Each item is of the form #
-# [minstatus]:[mode] where you must have [minstatus] in #
+# [mode]:[minstatus] where you must have [minstatus] in #
# order to be able to bypass [mode]. #
-# Use "*:blockcolor" to override a default exemption #
-#<exemptchanops defaults="v:nonick o:flood">
+# Use "blockcolor:*" to override a default exemption #
+#<exemptchanops defaults="nonick:v flood:o">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
diff --git a/src/modules/m_exemptchanops.cpp b/src/modules/m_exemptchanops.cpp
index df5ec4bf3..a5c79169b 100644
--- a/src/modules/m_exemptchanops.cpp
+++ b/src/modules/m_exemptchanops.cpp
@@ -25,6 +25,7 @@ class ExemptChanOps : public ListModeBase
bool ValidateParam(User* user, Channel* chan, std::string &word)
{
+ // TODO actually make sure there's a prop for this
if ((word.length() > 35) || (word.empty()))
{
user->WriteNumeric(955, "%s %s %s :word is too %s for exemptchanops list",user->nick.c_str(), chan->name.c_str(), word.c_str(), (word.empty() ? "short" : "long"));
@@ -65,7 +66,6 @@ class ModuleExemptChanOps : public Module
void init()
{
ServerInstance->Modules->AddService(ec);
- ec.DoImplements(this);
Implementation eventlist[] = { I_OnChannelDelete, I_OnChannelRestrictionApply, I_OnRehash, I_OnSyncChannel };
ServerInstance->Modules->Attach(eventlist, this, 4);
@@ -83,11 +83,6 @@ class ModuleExemptChanOps : public Module
ec.DoRehash();
}
- void OnCleanup(int target_type, void* item)
- {
- ec.DoCleanup(target_type, item);
- }
-
void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
{
ec.DoSyncChannel(chan, proto, opaque);
@@ -105,8 +100,8 @@ class ModuleExemptChanOps : public Module
std::string::size_type pos = current.find(':');
if (pos == std::string::npos)
continue;
- if (current.substr(pos+1) == restriction)
- minmode = current[0];
+ if (current.substr(0,pos) == restriction)
+ minmode = current[pos+1];
}
modelist* list = ec.extItem.get(chan);
@@ -114,11 +109,11 @@ class ModuleExemptChanOps : public Module
{
for (modelist::iterator i = list->begin(); i != list->end(); ++i)
{
- std::string::size_type pos = i->mask.find(':');
+ std::string::size_type pos = (**i).mask.find(':');
if (pos == std::string::npos)
continue;
- if (i->mask.substr(pos+1) == restriction)
- minmode = i->mask[0];
+ if ((**i).mask.substr(0,pos) == restriction)
+ minmode = (**i).mask[pos+1];
}
}