From 72943b2c720c1d94b145b4fa61bfb89d65d4ef9c Mon Sep 17 00:00:00 2001 From: om Date: Wed, 25 Jan 2006 20:24:46 +0000 Subject: Add InsertMode function to helperfuncs.(cpp|h) for easily adding modes to the CHANMODES section of the 005 numeric git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2897 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/helperfuncs.cpp | 23 +++++++++++++++++++++++ src/modules/m_sslmodes.cpp | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 767cb7caa..2923041fc 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -1373,3 +1373,26 @@ std::string GetFullProgDir(char** argv, int argc) return otherdir; } +int 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) + { + log(DEBUG, "InsertMode: CHANMODES doesn't have a section %dh :/", section); + return 0; + } + + for(; pos < output.size(); pos++) + { + if(section == currsection) + break; + + if(output[pos] == ',') + currsection++; + } + + output.insert(pos, mode); + return 1; +} diff --git a/src/modules/m_sslmodes.cpp b/src/modules/m_sslmodes.cpp index 1a7f0670b..3ed40108d 100644 --- a/src/modules/m_sslmodes.cpp +++ b/src/modules/m_sslmodes.cpp @@ -24,7 +24,7 @@ class ModuleSSLModes : public Module virtual void On005Numeric(std::string &output) { - output.insert(output.find(" ", output.find("CHANMODES=", 0)), "z"); + InsertMode(output, "z", 4); } virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) -- cgit v1.2.3