From 6ec52cab73c5e77337ddd364617d8c4ad4065d80 Mon Sep 17 00:00:00 2001 From: brain Date: Wed, 7 Apr 2004 13:22:17 +0000 Subject: Fixed config reader to cache its files instead of re-reading them for each access git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@413 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/modules.cpp') diff --git a/src/modules.cpp b/src/modules.cpp index c1a912eca..b2424639a 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -295,7 +295,8 @@ bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int pa ConfigReader::ConfigReader() { - fname = CONFIG_FILE; + this->cache = new std::stringstream(stringstream::in | stringstream::out); + LoadConf(CONFIG_FILE,this->cache); } @@ -304,19 +305,23 @@ ConfigReader::~ConfigReader() } -ConfigReader::ConfigReader(std::string filename) : fname(filename) { }; +ConfigReader::ConfigReader(std::string filename) +{ + this->cache = new std::stringstream(stringstream::in | stringstream::out); + LoadConf(filename.c_str(),this->cache); +}; std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) { char val[MAXBUF]; - ReadConf(fname.c_str(),tag.c_str(),name.c_str(),index,val); + ReadConf(cache,tag.c_str(),name.c_str(),index,val); return val; } int ConfigReader::Enumerate(std::string tag) { - return EnumConf(fname.c_str(),tag.c_str()); + return EnumConf(cache,tag.c_str()); } -- cgit v1.3.1-10-gc9f91