diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/authserver/Main.cpp | 10 | ||||
| -rw-r--r-- | src/server/game/World/World.cpp | 2 | ||||
| -rw-r--r-- | src/server/shared/Configuration/Config.cpp | 25 | ||||
| -rw-r--r-- | src/server/shared/Configuration/Config.h | 4 | ||||
| -rw-r--r-- | src/server/worldserver/Main.cpp | 11 |
5 files changed, 38 insertions, 14 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index ae0fcc9f95..7cd3f00a27 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -104,7 +104,15 @@ extern int main(int argc, char** argv) ++count; } - if (!sConfigMgr->LoadInitial(configFile)) + std::string cfg_def_file=_TRINITY_REALM_CONFIG; + cfg_def_file += ".dist"; + + if (!sConfigMgr->LoadInitial(cfg_def_file.c_str())) { + printf("Invalid or missing default configuration file : %s\n", cfg_def_file.c_str()); + return 1; + } + + if (!sConfigMgr->LoadMore(configFile)) { printf("Invalid or missing configuration file : %s\n", configFile); printf("Verify that the file exists and has \'[authserver]\' written in the top of the file!\n"); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 86b087a46c..0bfd8ca3ad 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -429,7 +429,7 @@ void World::LoadConfigSettings(bool reload) { if (!sConfigMgr->Reload()) { - sLog->outError("World settings reload fail: can't read settings from %s.", sConfigMgr->GetFilename().c_str()); + sLog->outError("World settings reload fail: can't read settings."); return; } diff --git a/src/server/shared/Configuration/Config.cpp b/src/server/shared/Configuration/Config.cpp index 43b50b49e0..2dce7a7482 100644 --- a/src/server/shared/Configuration/Config.cpp +++ b/src/server/shared/Configuration/Config.cpp @@ -49,10 +49,9 @@ bool ConfigMgr::LoadInitial(char const* file) GuardType guard(_configLock); - _filename = file; _config.reset(new ACE_Configuration_Heap()); if (_config->open() == 0) - if (LoadData(_filename.c_str())) + if (LoadData(file)) return true; _config.reset(); @@ -71,11 +70,25 @@ bool ConfigMgr::LoadMore(char const* file) bool ConfigMgr::Reload() { - return LoadInitial(_filename.c_str()); + for(std::vector<std::string>::iterator it = _confFiles.begin(); it != _confFiles.end(); ++it) { + if (it==_confFiles.begin()) { + if (!LoadInitial((*it).c_str())) + return false; + } else { + if (!LoadMore((*it).c_str())) + return false; + } + } + + return true; } bool ConfigMgr::LoadData(char const* file) { + if(std::find(_confFiles.begin(), _confFiles.end(), file) == _confFiles.end()) { + _confFiles.push_back(file); + } + ACE_Ini_ImpExp config_importer(*_config.get()); if (config_importer.import_config(file) == 0) return true; @@ -112,12 +125,6 @@ float ConfigMgr::GetFloatDefault(const char* name, float def) return GetValueHelper(name, val) ? (float)atof(val.c_str()) : def; } -std::string const& ConfigMgr::GetFilename() -{ - GuardType guard(_configLock); - return _filename; -} - std::list<std::string> ConfigMgr::GetKeysByString(std::string const& name) { GuardType guard(_configLock); diff --git a/src/server/shared/Configuration/Config.h b/src/server/shared/Configuration/Config.h index c640bcfbbf..cb51293b30 100644 --- a/src/server/shared/Configuration/Config.h +++ b/src/server/shared/Configuration/Config.h @@ -21,6 +21,7 @@ #include <string> #include <list> +#include <vector> #include <ace/Singleton.h> #include <ace/Configuration_Import_Export.h> #include <ace/Thread_Mutex.h> @@ -55,7 +56,6 @@ public: int GetIntDefault(const char* name, int def); float GetFloatDefault(const char* name, float def); - std::string const& GetFilename(); std::list<std::string> GetKeysByString(std::string const& name); private: @@ -65,7 +65,7 @@ private: typedef ACE_Thread_Mutex LockType; typedef ACE_Guard<LockType> GuardType; - std::string _filename; + std::vector<std::string> _confFiles; Config _config; LockType _configLock; diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 0a00f1d1b7..2ce34822f9 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -125,12 +125,21 @@ extern int main(int argc, char** argv) ++c; } - if (!sConfigMgr->LoadInitial(cfg_file)) + std::string cfg_def_file=_TRINITY_CORE_CONFIG; + cfg_def_file += ".dist"; + + if (!sConfigMgr->LoadInitial(cfg_def_file.c_str())) { + printf("Invalid or missing default configuration file : %s\n", cfg_def_file.c_str()); + return 1; + } + + if (!sConfigMgr->LoadMore(cfg_file)) { printf("Invalid or missing configuration file : %s\n", cfg_file); printf("Verify that the file exists and has \'[worldserver]' written in the top of the file!\n"); return 1; } + sLog->outString("Using configuration file %s.", cfg_file); sLog->outString("Using SSL version: %s (library: %s)", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION)); |
