Add support for alternate config file locations (#3578)
This commit is contained in:
parent
c89b20695d
commit
1c31cb7eec
@ -10,6 +10,7 @@ derouinw
|
|||||||
Diusrex
|
Diusrex
|
||||||
Duralex
|
Duralex
|
||||||
FakeTruth (founder)
|
FakeTruth (founder)
|
||||||
|
Gareth Nelson
|
||||||
HaoTNN
|
HaoTNN
|
||||||
Howaner
|
Howaner
|
||||||
jan64
|
jan64
|
||||||
|
@ -111,7 +111,7 @@ void cPluginManager::RefreshPluginList(void)
|
|||||||
void cPluginManager::ReloadPluginsNow(void)
|
void cPluginManager::ReloadPluginsNow(void)
|
||||||
{
|
{
|
||||||
cIniFile a_SettingsIni;
|
cIniFile a_SettingsIni;
|
||||||
a_SettingsIni.ReadFile("settings.ini");
|
a_SettingsIni.ReadFile(cRoot::Get()->m_SettingsFilename);
|
||||||
ReloadPluginsNow(a_SettingsIni);
|
ReloadPluginsNow(a_SettingsIni);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,8 +141,14 @@ void cRoot::Start(std::unique_ptr<cSettingsRepositoryInterface> a_OverridesRepo)
|
|||||||
|
|
||||||
LOG("Reading server config...");
|
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>();
|
auto IniFile = cpp14::make_unique<cIniFile>();
|
||||||
bool IsNewIniFile = !IniFile->ReadFile("settings.ini");
|
bool IsNewIniFile = !IniFile->ReadFile(m_SettingsFilename);
|
||||||
|
|
||||||
if (IsNewIniFile)
|
if (IsNewIniFile)
|
||||||
{
|
{
|
||||||
|
@ -52,6 +52,8 @@ public:
|
|||||||
static bool m_TerminateEventRaised;
|
static bool m_TerminateEventRaised;
|
||||||
static bool m_RunAsService;
|
static bool m_RunAsService;
|
||||||
|
|
||||||
|
/** which ini file to load settings from, default is settings.ini */
|
||||||
|
AString m_SettingsFilename;
|
||||||
|
|
||||||
cRoot(void);
|
cRoot(void);
|
||||||
~cRoot();
|
~cRoot();
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
#include <csignal>
|
#include <csignal>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
// Workaround for Android NDK builds that do not support std::to_string
|
// Workaround for Android NDK builds that do not support std::to_string
|
||||||
namespace std
|
namespace std
|
||||||
@ -381,6 +383,7 @@ static std::unique_ptr<cMemorySettingsRepository> ParseArguments(int argc, char
|
|||||||
// Parse the comand line args:
|
// Parse the comand line args:
|
||||||
TCLAP::CmdLine cmd("Cuberite");
|
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<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::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 commLogArg ("", "log-comm", "Log server client communications to file", cmd);
|
||||||
TCLAP::SwitchArg commLogInArg ("", "log-comm-in", "Log inbound 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:
|
// Copy the parsed args' values into a settings repository:
|
||||||
auto repo = cpp14::make_unique<cMemorySettingsRepository>();
|
auto repo = cpp14::make_unique<cMemorySettingsRepository>();
|
||||||
|
if (confArg.isSet())
|
||||||
|
{
|
||||||
|
AString conf_file = confArg.getValue();
|
||||||
|
repo->AddValue("Server", "ConfigFile", conf_file);
|
||||||
|
}
|
||||||
if (slotsArg.isSet())
|
if (slotsArg.isSet())
|
||||||
{
|
{
|
||||||
int slots = slotsArg.getValue();
|
int slots = slotsArg.getValue();
|
||||||
|
Loading…
Reference in New Issue
Block a user