From 0ca1aa58d74ee743423602467cedda686e311bc1 Mon Sep 17 00:00:00 2001 From: danieldg Date: Tue, 2 Feb 2010 15:02:25 +0000 Subject: Sort items in the 005 line git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12351 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/configreader.cpp | 23 ++++++++++++----------- src/helperfuncs.cpp | 11 ++++++++--- 2 files changed, 20 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/configreader.cpp b/src/configreader.cpp index 109137787..183e78a12 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -51,28 +51,29 @@ ServerConfig::ServerConfig() void ServerConfig::Update005() { std::stringstream out(data005); + std::vector data; std::string token; + while (out >> token) + data.push_back(token); + sort(data.begin(), data.end()); + std::string line5; - int token_counter = 0; isupport.clear(); - while (out >> token) + for(unsigned int i=0; i < data.size(); i++) { + token = data[i]; line5 = line5 + token + " "; - token_counter++; - if (token_counter >= 13) + if (i % 13 == 12) { - char buf[MAXBUF]; - snprintf(buf, MAXBUF, "%s:are supported by this server", line5.c_str()); - isupport.push_back(buf); + line5.append(":are supported by this server"); + isupport.push_back(line5); line5.clear(); - token_counter = 0; } } if (!line5.empty()) { - char buf[MAXBUF]; - snprintf(buf, MAXBUF, "%s:are supported by this server", line5.c_str()); - isupport.push_back(buf); + line5.append(":are supported by this server"); + isupport.push_back(line5); } } diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index ffa30fb84..bba8dc8dc 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -396,13 +396,18 @@ std::string InspIRCd::TimeString(time_t curtime) void InspIRCd::AddExtBanChar(char c) { std::string &tok = Config->data005; - std::string::size_type ebpos; + std::string::size_type ebpos = tok.find(" EXTBAN=,"); - if ((ebpos = tok.find(" EXTBAN=,")) == std::string::npos) + if (ebpos == std::string::npos) { tok.append(" EXTBAN=,"); tok.push_back(c); } else - tok.insert(ebpos + 9, 1, c); + { + ebpos += 9; + while (isalpha(tok[ebpos]) && tok[ebpos] < c) + ebpos++; + tok.insert(ebpos, 1, c); + } } -- cgit v1.2.3