diff options
-rw-r--r-- | docs/modules.conf.example | 6 | ||||
-rw-r--r-- | src/modules/m_exemptchanops.cpp | 17 |
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]; } } |