aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/Configuration/Config.cpp17
-rw-r--r--src/server/shared/Configuration/Config.h4
2 files changed, 14 insertions, 7 deletions
diff --git a/src/server/shared/Configuration/Config.cpp b/src/server/shared/Configuration/Config.cpp
index ecebf30182e..6b83f562520 100644
--- a/src/server/shared/Configuration/Config.cpp
+++ b/src/server/shared/Configuration/Config.cpp
@@ -25,7 +25,7 @@
using namespace boost::property_tree;
-bool ConfigMgr::LoadInitial(std::string const& file)
+bool ConfigMgr::LoadInitial(std::string const& file, std::string& error)
{
std::lock_guard<std::mutex> lock(_configLock);
@@ -34,25 +34,32 @@ bool ConfigMgr::LoadInitial(std::string const& file)
try
{
ptree fullTree;
- boost::property_tree::ini_parser::read_ini(file, fullTree);
+ ini_parser::read_ini(file, fullTree);
if (fullTree.empty())
+ {
+ error = "empty file (" + file + ")";
return false;
+ }
// Since we're using only one section per config file, we skip the section and have direct property access
_config = fullTree.begin()->second;
}
- catch (std::exception const& /*ex*/)
+ catch (ini_parser::ini_parser_error const& e)
{
+ if (e.line() == 0)
+ error = e.message() + " (" + e.filename() + ")";
+ else
+ error = e.message() + " (" + e.filename() + ":" + std::to_string(e.line()) + ")";
return false;
}
return true;
}
-bool ConfigMgr::Reload()
+bool ConfigMgr::Reload(std::string& error)
{
- return LoadInitial(_filename.c_str());
+ return LoadInitial(_filename.c_str(), error);
}
std::string ConfigMgr::GetStringDefault(std::string const& name, const std::string& def)
diff --git a/src/server/shared/Configuration/Config.h b/src/server/shared/Configuration/Config.h
index 42c3a700f3f..ff0233b5669 100644
--- a/src/server/shared/Configuration/Config.h
+++ b/src/server/shared/Configuration/Config.h
@@ -31,7 +31,7 @@ class ConfigMgr
public:
/// Method used only for loading main configuration files (authserver.conf and worldserver.conf)
- bool LoadInitial(std::string const& file);
+ bool LoadInitial(std::string const& file, std::string& error);
static ConfigMgr* instance()
{
@@ -39,7 +39,7 @@ public:
return &instance;
}
- bool Reload();
+ bool Reload(std::string& error);
std::string GetStringDefault(std::string const& name, const std::string& def);
bool GetBoolDefault(std::string const& name, bool def);