From 0c2def29e3bf56a686305ba7385de45214ec86a4 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 8 Oct 2012 14:22:49 +0300 Subject: Allow reinit configuration files. --- src/configuration.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'src/configuration.cpp') diff --git a/src/configuration.cpp b/src/configuration.cpp index 3b8aa6a92..a9c4037e9 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -317,9 +317,10 @@ ConfigurationObject::~ConfigurationObject() Configuration::Configuration() : ConfigurationObject(), - mConfigPath(""), + mConfigPath(), mDefaultsData(nullptr), - mDirectory("") + mDirectory(), + mUseResManager(false) { #ifdef DEBUG_CONFIG mLogKeys = false; @@ -690,6 +691,8 @@ void Configuration::init(const std::string &filename, const bool useResManager) { mDefaultsData = nullptr; XML::Document doc(filename, useResManager); + mFilename = filename; + mUseResManager = useResManager; if (useResManager) { @@ -721,6 +724,26 @@ void Configuration::init(const std::string &filename, const bool useResManager) initFromXML(rootNode); } +void Configuration::reInit() +{ + XML::Document doc(mFilename, mUseResManager); + if (!doc.rootNode()) + { + logger->log("Couldn't open configuration file: %s", mFilename.c_str()); + return; + } + + const XmlNodePtr rootNode = doc.rootNode(); + + if (!rootNode || !xmlNameEqual(rootNode, "configuration")) + { + logger->log("Warning: No configuration file (%s)", mFilename.c_str()); + return; + } + + initFromXML(rootNode); +} + void ConfigurationObject::writeToXML(const XmlTextWriterPtr writer) { for (Options::const_iterator i = mOptions.begin(), i_end = mOptions.end(); -- cgit v1.2.3-60-g2f50