diff options
Diffstat (limited to 'src/configuration.cpp')
-rw-r--r-- | src/configuration.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
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(); |