]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_exemptchanops.cpp
Sync helpop chmodes s and p with docs
[user/henk/code/inspircd.git] / src / modules / m_exemptchanops.cpp
index 7a40063fc824014e6cfc225bebec88f50df267a5..ba5b7696732abb2a31bf6bfce453a2b498ff997a 100644 (file)
@@ -1,6 +1,10 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2013-2015 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2013, 2017-2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2010 Craig Edwards <brain@inspircd.org>
  *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
 #include "listmode.h"
 #include "modules/exemption.h"
 
-/** Handles channel mode +X
- */
+enum
+{
+       RPL_ENDOFEXEMPTIONLIST = 953,
+       RPL_EXEMPTIONLIST = 954
+};
+
 class ExemptChanOps : public ListModeBase
 {
  public:
        ExemptChanOps(Module* Creator)
-               : ListModeBase(Creator, "exemptchanops", 'X', "End of channel exemptchanops list", 954, 953, false)
+               : ListModeBase(Creator, "exemptchanops", 'X', "End of channel exemptchanops list", RPL_EXEMPTIONLIST, RPL_ENDOFEXEMPTIONLIST, false)
        {
+               syntax = "<restriction>:<prefix>";
        }
 
        static PrefixMode* FindMode(const std::string& mode)
@@ -48,7 +57,7 @@ class ExemptChanOps : public ListModeBase
                        return false;
 
                restriction.assign(entry, 0, colon);
-               prefix.assign(entry, colon + 1);
+               prefix.assign(entry, colon + 1, std::string::npos);
                return true;
        }
 
@@ -77,7 +86,7 @@ class ExemptChanOps : public ListModeBase
                std::string prefix;
                if (!ParseEntry(word, restriction, prefix))
                {
-                       user->WriteNumeric(Numerics::InvalidModeParameter(chan, this, word, "Invalid exemptchanops entry, format is <restriction>:<prefix>"));
+                       user->WriteNumeric(Numerics::InvalidModeParameter(chan, this, word));
                        return false;
                }
 
@@ -89,13 +98,13 @@ class ExemptChanOps : public ListModeBase
 
                if (!ServerInstance->Modes->FindMode(restriction, MODETYPE_CHANNEL))
                {
-                       user->WriteNumeric(Numerics::InvalidModeParameter(chan, this, word, "Unknown restriction"));
+                       user->WriteNumeric(Numerics::InvalidModeParameter(chan, this, word, "Unknown restriction."));
                        return false;
                }
 
                if (prefix != "*" && !FindMode(prefix))
                {
-                       user->WriteNumeric(Numerics::InvalidModeParameter(chan, this, word, "Unknown prefix mode"));
+                       user->WriteNumeric(Numerics::InvalidModeParameter(chan, this, word, "Unknown prefix mode."));
                        return false;
                }
 
@@ -153,7 +162,7 @@ class ModuleExemptChanOps : public Module
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides the ability to allow channel operators to be exempt from certain modes", VF_VENDOR);
+               return Version("Adds channel mode X (exemptchanops) which allows channel operators to grant exemptions to various channel-level restrictions.", VF_VENDOR);
        }
 
        void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE