summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/Bindings/PluginManager.cpp2
-rw-r--r--src/Root.cpp8
-rw-r--r--src/Root.h2
-rw-r--r--src/main.cpp8
4 files changed, 18 insertions, 2 deletions
diff --git a/src/Bindings/PluginManager.cpp b/src/Bindings/PluginManager.cpp
index e190abe15..714fa03f6 100644
--- a/src/Bindings/PluginManager.cpp
+++ b/src/Bindings/PluginManager.cpp
@@ -111,7 +111,7 @@ void cPluginManager::RefreshPluginList(void)
void cPluginManager::ReloadPluginsNow(void)
{
cIniFile a_SettingsIni;
- a_SettingsIni.ReadFile("settings.ini");
+ a_SettingsIni.ReadFile(cRoot::Get()->m_SettingsFilename);
ReloadPluginsNow(a_SettingsIni);
}
diff --git a/src/Root.cpp b/src/Root.cpp
index 37fbf125f..508d0a648 100644
--- a/src/Root.cpp
+++ b/src/Root.cpp
@@ -141,8 +141,14 @@ void cRoot::Start(std::unique_ptr<cSettingsRepositoryInterface> a_OverridesRepo)
LOG("Reading server config...");
+ m_SettingsFilename = "settings.ini";
+ if (a_OverridesRepo->HasValue("Server","ConfigFile"))
+ {
+ m_SettingsFilename = a_OverridesRepo->GetValue("Server","ConfigFile");
+ }
+
auto IniFile = cpp14::make_unique<cIniFile>();
- bool IsNewIniFile = !IniFile->ReadFile("settings.ini");
+ bool IsNewIniFile = !IniFile->ReadFile(m_SettingsFilename);
if (IsNewIniFile)
{
diff --git a/src/Root.h b/src/Root.h
index 10848ea3f..3595848d9 100644
--- a/src/Root.h
+++ b/src/Root.h
@@ -52,6 +52,8 @@ public:
static bool m_TerminateEventRaised;
static bool m_RunAsService;
+ /** which ini file to load settings from, default is settings.ini */
+ AString m_SettingsFilename;
cRoot(void);
~cRoot();
diff --git a/src/main.cpp b/src/main.cpp
index 83056bf61..4ae54511b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -8,6 +8,8 @@
#include <csignal>
#include <stdlib.h>
+
+
#ifdef ANDROID
// Workaround for Android NDK builds that do not support std::to_string
namespace std
@@ -381,6 +383,7 @@ static std::unique_ptr<cMemorySettingsRepository> ParseArguments(int argc, char
// Parse the comand line args:
TCLAP::CmdLine cmd("Cuberite");
TCLAP::ValueArg<int> slotsArg ("s", "max-players", "Maximum number of slots for the server to use, overrides setting in setting.ini", false, -1, "number", cmd);
+ TCLAP::ValueArg<AString> confArg ("c", "config-file", "Config file to use", false, "settings.ini", "string", cmd);
TCLAP::MultiArg<int> portsArg ("p", "port", "The port number the server should listen to", false, "port", cmd);
TCLAP::SwitchArg commLogArg ("", "log-comm", "Log server client communications to file", cmd);
TCLAP::SwitchArg commLogInArg ("", "log-comm-in", "Log inbound server client communications to file", cmd);
@@ -393,6 +396,11 @@ static std::unique_ptr<cMemorySettingsRepository> ParseArguments(int argc, char
// Copy the parsed args' values into a settings repository:
auto repo = cpp14::make_unique<cMemorySettingsRepository>();
+ if (confArg.isSet())
+ {
+ AString conf_file = confArg.getValue();
+ repo->AddValue("Server", "ConfigFile", conf_file);
+ }
if (slotsArg.isSet())
{
int slots = slotsArg.getValue();