From 480be29a95df6160819a31b86e6432dbf81e2499 Mon Sep 17 00:00:00 2001 From: brain Date: Mon, 6 Mar 2006 10:44:42 +0000 Subject: Tidied GetMaxBans to leave the ConfigReader subsystem alone git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3491 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/inspircd_io.h | 6 ++++++ src/helperfuncs.cpp | 17 ++++++----------- src/inspircd_io.cpp | 9 +++++++++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/inspircd_io.h b/include/inspircd_io.h index 6d9085786..d1356954c 100644 --- a/include/inspircd_io.h +++ b/include/inspircd_io.h @@ -308,8 +308,14 @@ class ServerConfig : public classbase */ char CustomVersion[MAXBUF]; + /** List of u-lined servers + */ std::vector ulines; + /** Max banlist sizes for channels (the std::string is a glob) + */ + std::map maxbans; + ServerConfig(); /** Clears the include stack in preperation for diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index c6fb806ed..431e34947 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -1098,17 +1098,12 @@ chanrec* FindChan(const char* chan) long GetMaxBans(char* name) { - char CM[MAXBUF]; - for (int count = 0; count < Config->ConfValueEnum("banlist",&Config->config_f); count++) - { - Config->ConfValue("banlist","chan",count,CM,&Config->config_f); - if (match(name,CM)) - { - Config->ConfValue("banlist","limit",count,CM,&Config->config_f); - return atoi(CM); - } - } - return 64; + for (std::map::iterator n = Config->maxbans.begin(); n != Config->MaxBans.end(); n++) + { + if (match(name,n->first->c_str())) + return atoi(n->second); + } + return 64; } void purge_empty_chans(userrec* u) diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp index e47cf9dda..477897b0b 100644 --- a/src/inspircd_io.cpp +++ b/src/inspircd_io.cpp @@ -59,6 +59,7 @@ ServerConfig::ServerConfig() MaxWhoResults = 100; debugging = 0; LogLevel = DEFAULT; + maxbans.clear(); } void ServerConfig::ClearStack() @@ -417,6 +418,14 @@ void ServerConfig::Read(bool bail, userrec* user) Config->ulines.push_back(ServName); } } + maxbans.clear(); + char CM[MAXBUF],CM2[MAXBUF]; + for (int count = 0; count < Config->ConfValueEnum("banlist",&Config->config_f); count++) + { + Config->ConfValue("banlist","chan",count,CM1,&Config->config_f); + Config->ConfValue("banlist","limit",count,CM2,&Config->config_f); + maxbans[CM1] = atoi(CM2); + } ReadClassesAndTypes(); log(DEFAULT,"Reading K lines,Q lines and Z lines from config..."); read_xline_defaults(); -- cgit v1.2.3