]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
ModeParser::InsertMode is no longer required -- this is auto-generated by the ModePar...
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 23 Aug 2006 22:34:58 +0000 (22:34 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 23 Aug 2006 22:34:58 +0000 (22:34 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5007 e03df62e-2008-0410-955e-edbf42e46eb7

25 files changed:
include/mode.h
src/inspircd.cpp
src/mode.cpp
src/modules/m_banexception.cpp
src/modules/m_blockcaps.cpp
src/modules/m_blockcolor.cpp
src/modules/m_censor.cpp
src/modules/m_chanfilter.cpp
src/modules/m_chanprotect.cpp
src/modules/m_inviteexception.cpp
src/modules/m_joinflood.cpp
src/modules/m_kicknorejoin.cpp
src/modules/m_knock.cpp
src/modules/m_messageflood.cpp
src/modules/m_noctcp.cpp
src/modules/m_noinvite.cpp
src/modules/m_nokicks.cpp
src/modules/m_nonicks.cpp
src/modules/m_nonotice.cpp
src/modules/m_operchans.cpp
src/modules/m_redirect.cpp
src/modules/m_services.cpp
src/modules/m_services_account.cpp
src/modules/m_sslmodes.cpp
src/modules/m_stripcolor.cpp

index 22109d0acdd0700c5e9aa210cef278e601f41a16..b26c0d9c3891b54c91be32fd011a362c3c1686bd 100644 (file)
@@ -435,15 +435,16 @@ class ModeParser : public classbase
         */
        std::string ParaModeList();
 
         */
        std::string ParaModeList();
 
+       /** Generates the CHANMODES= 005 sequence
+        */
+       std::string ChanModes();
+       /** Used by this class internally during std::sort and 005 generation
+        */
        static bool ModeParser::PrefixComparison(const prefixtype one, const prefixtype two);
 
        /** This returns the PREFIX=(ohv)@%+ section of the 005 numeric.
         */
        std::string BuildPrefixes();
        static bool ModeParser::PrefixComparison(const prefixtype one, const prefixtype two);
 
        /** This returns the PREFIX=(ohv)@%+ section of the 005 numeric.
         */
        std::string BuildPrefixes();
-
-       /** Used to parse the CHANMODES= parameter of a 005 numeric.
-        */
-       bool InsertMode(std::string &output, const char* mode, unsigned short section);
 };
 
 /** Command handler class for the MODE command.
 };
 
 /** Command handler class for the MODE command.
index 4679c8acd9c319f4ca5498479fdaa7699a3f07a2..dd111f9ba062f6af1f8b38311dbc285930b2dda7 100644 (file)
@@ -473,7 +473,7 @@ void InspIRCd::BuildISupport()
        std::stringstream v;
        v << "WALLCHOPS WALLVOICES MODES=" << MAXMODES << " CHANTYPES=# PREFIX=" << this->Modes->BuildPrefixes() << " MAP MAXCHANNELS=" << MAXCHANS << " MAXBANS=60 VBANLIST NICKLEN=" << NICKMAX-1;
        v << " CASEMAPPING=rfc1459 STATUSMSG=@%+ CHARSET=ascii TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=" << Config->MaxTargets << " AWAYLEN=";
        std::stringstream v;
        v << "WALLCHOPS WALLVOICES MODES=" << MAXMODES << " CHANTYPES=# PREFIX=" << this->Modes->BuildPrefixes() << " MAP MAXCHANNELS=" << MAXCHANS << " MAXBANS=60 VBANLIST NICKLEN=" << NICKMAX-1;
        v << " CASEMAPPING=rfc1459 STATUSMSG=@%+ CHARSET=ascii TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=" << Config->MaxTargets << " AWAYLEN=";
-       v << MAXAWAY << " CHANMODES=b,k,l,psmnti FNC NETWORK=" << Config->Network << " MAXPARA=32";
+       v << MAXAWAY << " CHANMODES=" << this->Modes->ChanModes() << " FNC NETWORK=" << Config->Network << " MAXPARA=32";
        Config->data005 = v.str();
        FOREACH_MOD_I(this,I_On005Numeric,On005Numeric(Config->data005));
 }
        Config->data005 = v.str();
        FOREACH_MOD_I(this,I_On005Numeric,On005Numeric(Config->data005));
 }
index c7d66cd463ec81f9fb1177c717725678755990a2..dfda8a8b71805aace9800d87e38ee16bb9736398 100644 (file)
@@ -662,6 +662,54 @@ ModeHandler* ModeParser::FindPrefix(unsigned const char pfxletter)
        return NULL;
 }
 
        return NULL;
 }
 
+std::string ModeParser::ChanModes()
+{
+       std::string type1;      /* Listmodes EXCEPT those with a prefix */
+       std::string type2;      /* Modes that take a param when adding or removing */
+       std::string type3;      /* Modes that only take a param when adding */
+       std::string type4;      /* Modes that dont take a param */
+
+       for (unsigned char mode = 'A'; mode <= 'z'; mode++)
+       {
+               unsigned char pos = (mode-65) | MASK_CHANNEL;
+                /* One parameter when adding */
+               if (modehandlers[pos])
+               {       
+                       if (modehandlers[pos]->GetNumParams(true))
+                       {
+                               if ((modehandlers[pos]->IsListMode()) && (!modehandlers[pos]->GetPrefix()))
+                               {
+                                       type1 += modehandlers[pos]->GetModeChar();
+                               }
+                               else
+                               {
+                                       /* ... and one parameter when removing */
+                                       if (modehandlers[pos]->GetNumParams(false))
+                                       {
+                                               /* But not a list mode */
+                                               if (!modehandlers[pos]->GetPrefix())
+                                               {
+                                                       type2 += modehandlers[pos]->GetModeChar();
+                                               }
+                                       }
+                                       else
+                                       {
+                                               /* No parameters when removing */
+                                               type3 += modehandlers[pos]->GetModeChar();
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               type4 += modehandlers[pos]->GetModeChar();
+                       }
+               }
+                        
+       }
+
+       return type1 + "," + type2 + "," + type3 + "," + type4;
+}
+
 bool ModeParser::PrefixComparison(const prefixtype one, const prefixtype two)
 {       
        return one.second > two.second;
 bool ModeParser::PrefixComparison(const prefixtype one, const prefixtype two)
 {       
        return one.second > two.second;
@@ -775,27 +823,3 @@ ModeParser::ModeParser(InspIRCd* Instance) : ServerInstance(Instance)
        this->AddMode(new ModeUserServerNoticeMask(Instance), 'n');
 }
 
        this->AddMode(new ModeUserServerNoticeMask(Instance), 'n');
 }
 
-bool ModeParser::InsertMode(std::string &output, const char* mode, unsigned short section)
-{
-       unsigned short currsection = 1;
-       unsigned int pos = output.find("CHANMODES=", 0) + 10; // +10 for the length of "CHANMODES="
-
-       if(section > 4 || section == 0)
-       {
-               ServerInstance->Log(DEBUG, "InsertMode: CHANMODES doesn't have a section %dh :/", section);
-               return false;
-       }
-
-       for(; pos < output.size(); pos++)
-       {
-               if(section == currsection)
-                       break;
-
-               if(output[pos] == ',')
-                       currsection++;
-       }
-
-       output.insert(pos, mode);
-       return true;
-}
-
index 82939231ff7e6d511f7fc8571cb819b937f054fe..5f2f6f92a68f44b74c53e748c6f28dd67bc5a2e6 100644 (file)
@@ -49,7 +49,6 @@ public:
        virtual void On005Numeric(std::string &output)
        {
                output.append(" EXCEPTS=e");
        virtual void On005Numeric(std::string &output)
        {
                output.append(" EXCEPTS=e");
-               ServerInstance->Modes->InsertMode(output, "e", 1);
        }
 
        virtual int OnCheckBan(userrec* user, chanrec* chan)
        }
 
        virtual int OnCheckBan(userrec* user, chanrec* chan)
index b105e1dc55d0e97acfaec5dd3358f5632b283602..a5a2ae5ff358bc20989ff2e133a78511ff8e4db2 100644 (file)
@@ -74,7 +74,6 @@ public:
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "P", 4);
        }
 
        virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status)
        }
 
        virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status)
index 978c72e52592971b1f6512b6578bb834b8a8935a..2c73da3fcad3a6e3f407dd7d22b6e1a77b1d766d 100644 (file)
@@ -76,7 +76,6 @@ class ModuleBlockColour : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"c",4);
        }
        
        virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status)
        }
        
        virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status)
index a1aba037d27d6b823280e8c3e54902a6eb54449f..bbf14865758fcf2d4d1114e73d9b2ad1522c9c4b 100644 (file)
@@ -139,7 +139,6 @@ class ModuleCensor : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"G",4);
        }
  
        virtual ~ModuleCensor()
        }
  
        virtual ~ModuleCensor()
index 693b1788d938bbec474fbf7854e271e378fea34f..52ba5c0a07b02cfc7807bbd13424bb13af13a293 100644 (file)
@@ -86,7 +86,6 @@ class ModuleChanFilter : public Module
        
        virtual void On005Numeric(std::string &output)
        {
        
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"g",1);
        }
 
        virtual void OnChannelDelete(chanrec* chan)
        }
 
        virtual void OnChannelDelete(chanrec* chan)
index 981f14f2ec93677cbc2c4f125013048d69809662..832798b1f339659b6627c3df06cac0c278867e5c 100644 (file)
@@ -273,7 +273,6 @@ class ModuleChanProtect : public Module
        
        virtual void On005Numeric(std::string &output)
        {
        
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"qa",1);
        }
 
        virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, const std::string &reason)
        }
 
        virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, const std::string &reason)
index ba582555d89241c785a5b6d953f3feba9aac3dc4..234f7bfbc36c41a590b188ebeb759a65afa0925c 100644 (file)
@@ -48,7 +48,6 @@ public:
        virtual void On005Numeric(std::string &output)
        {
                output.append(" INVEX=I");
        virtual void On005Numeric(std::string &output)
        {
                output.append(" INVEX=I");
-               ServerInstance->Modes->InsertMode(output, "I", 1);
        }
         
        virtual int OnCheckInvite(userrec* user, chanrec* chan)
        }
         
        virtual int OnCheckInvite(userrec* user, chanrec* chan)
index 7f12d5cce68b43490df33763c46aa4dde50a3b11..7fc978e4cb16a232bb8da24a89d27d38202b3bff 100644 (file)
@@ -245,7 +245,6 @@ class ModuleJoinFlood : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "j", 3);
        }
 
        virtual ~ModuleJoinFlood()
        }
 
        virtual ~ModuleJoinFlood()
index 35aecc894eaf5e4c703ecf948963ee2197bbacf6..353d62ead1c71b279c41022685c82a6e00c778da 100644 (file)
@@ -168,7 +168,6 @@ public:
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "J", 3);
        }
 
        virtual ~ModuleKickNoRejoin()
        }
 
        virtual ~ModuleKickNoRejoin()
index 092ce999fdd19dfd71a1700df8f9eff1b912fbfb..de9010f89e7d6e0d629b27bdbb9d2fae64e6383b 100644 (file)
@@ -125,7 +125,6 @@ class ModuleKnock : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"K",4);
        }
 
        virtual ~ModuleKnock()
        }
 
        virtual ~ModuleKnock()
index 5a4f03340ea10838dfb290534e1f0ddb8158eae6..dc2513f3de2cba69d1c121d3f091d3b712d95ffa 100644 (file)
@@ -265,7 +265,6 @@ class ModuleMsgFlood : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "f", 3);
        }
 
        virtual ~ModuleMsgFlood()
        }
 
        virtual ~ModuleMsgFlood()
index 885f2dd548a4ffc11145d4f45eb168ec48102cec..008fdae5e68d08df9cfcd0799521023add63cd5e 100644 (file)
@@ -77,7 +77,6 @@ class ModuleNoCTCP : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"C",4);
        }
        
        virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status)
        }
        
        virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status)
index 9e4d37ff1b68e89f37d5d1d3f17757837e2c1c92..158dec8b2ba07920649e74ed8386d3507606b1d2 100644 (file)
@@ -76,7 +76,6 @@ class ModuleNoInvite : public Module
 
                virtual void On005Numeric(std::string &output)
                {
 
                virtual void On005Numeric(std::string &output)
                {
-                       ServerInstance->Modes->InsertMode(output,"V",4);
                }
 
 
                }
 
 
index abf4f80348e5c0fabb10c4532de67f069653124e..5936d4ccd77252ac53933565da681d742b221846 100644 (file)
@@ -77,7 +77,6 @@ class ModuleNoKicks : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"Q",4);
        }
 
        virtual int OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type)
        }
 
        virtual int OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type)
index 9d2a3d9eb666c9122ce70ca807b653b53873acb8..c3caf576a1e3470609419b8f0305587ede2dbc4f 100644 (file)
@@ -89,7 +89,6 @@ class ModuleNoNickChange : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"N",4);
        }
        
        virtual int OnUserPreNick(userrec* user, const std::string &newnick)
        }
        
        virtual int OnUserPreNick(userrec* user, const std::string &newnick)
index c6de6dbdf80f29dec1a64ef8446a6a1a1051e5c6..978353229ba869ee2e5d2269f333032f54480f95 100644 (file)
@@ -98,7 +98,6 @@ class ModuleNoNotice : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"T",4);
        }
 
        virtual ~ModuleNoNotice()
        }
 
        virtual ~ModuleNoNotice()
index 2bb1299c94818ed8b2dd1e69397c02074501edaa..c4c95bcdc76e4464b34259a4d4524c421b8ba347 100644 (file)
@@ -76,7 +76,6 @@ class ModuleOperChans : public Module
        
        virtual void On005Numeric(std::string &output)
        {
        
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"O",4);
        }
        
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname)
        }
        
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname)
index efe780989cfbf16e04bc0bbd28e507237d548fd4..34961e013a7e62a85c022644ffcf720051c2d833 100644 (file)
@@ -125,7 +125,6 @@ class ModuleRedirect : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "L", 3);
        }
        
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname)
        }
        
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname)
index 0a7e3adff18b58259a0d300dbc0c04b1f37ce035..aad54ffa222585bb0423d1b30fbc50d1689c50ea 100644 (file)
@@ -191,7 +191,6 @@ class ModuleServices : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "rRM", 4);
        }
 
        /* <- :stitch.chatspike.net 307 w00t w00t :is a registered nick */
        }
 
        /* <- :stitch.chatspike.net 307 w00t w00t :is a registered nick */
index 5ddbbb979216d11a64b48024b69c16c41a7ae458..aff73dde57c14817ca9f129e3bc7fb9038c69cba 100644 (file)
@@ -133,7 +133,6 @@ class ModuleServicesAccount : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "RM", 4);
        }
 
        /* <- :twisted.oscnet.org 330 w00t2 w00t2 w00t :is logged in as */
        }
 
        /* <- :twisted.oscnet.org 330 w00t2 w00t2 w00t :is logged in as */
index 9cc3f28720cbbb3bfef44dfb3f18b4965fce61d8..7e26de8c2bd7e27974b8909e809b38490443cb63 100644 (file)
@@ -76,7 +76,6 @@ class ModuleSSLModes : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output, "z", 4);
        }
        
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname)
        }
        
        virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname)
index 293b5ee13cac7686660e47a87e49e769ec08fed1..d3372d848d2d17a9591d9d28bd13ad026e8b5c04 100644 (file)
@@ -120,7 +120,6 @@ class ModuleStripColor : public Module
 
        virtual void On005Numeric(std::string &output)
        {
 
        virtual void On005Numeric(std::string &output)
        {
-               ServerInstance->Modes->InsertMode(output,"S",4);
        }
        
        virtual ~ModuleStripColor()
        }
        
        virtual ~ModuleStripColor()