Skip to content

Commit

Permalink
maybe fix #5999
Browse files Browse the repository at this point in the history
  • Loading branch information
rt committed Jun 6, 2018
1 parent 3182d3e commit 1c78b40
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 14 deletions.
8 changes: 7 additions & 1 deletion rts/System/FileSystem/FileSystemInitializer.cpp
Expand Up @@ -6,6 +6,7 @@
#include "VFSHandler.h"
#include "System/LogOutput.h"
#include "System/SafeUtil.h"
#include "System/StringUtil.h"
#include "System/Config/ConfigHandler.h"
#include "System/Platform/errorhandler.h"
#include "System/Platform/Misc.h"
Expand All @@ -32,12 +33,17 @@ static void ClearThreadReg() {}
volatile bool FileSystemInitializer::initSuccess = false;
volatile bool FileSystemInitializer::initFailure = false;

void FileSystemInitializer::PreInitializeConfigHandler(const std::string& configSource, const bool safemode)
void FileSystemInitializer::PreInitializeConfigHandler(const std::string& configSource, const std::string& configName, const bool safemode)
{
dataDirLocater.LocateDataDirs();
dataDirLocater.ChangeCwdToWriteDir();

ConfigHandler::Instantiate(configSource, safemode);

if (configName.empty())
return;

configHandler->SetString("name", StringReplace(configName, " ", "_"));
}


Expand Down
2 changes: 1 addition & 1 deletion rts/System/FileSystem/FileSystemInitializer.h
Expand Up @@ -8,7 +8,7 @@
class FileSystemInitializer {
public:
/// call in defined order!
static void PreInitializeConfigHandler(const std::string& configSource = "", const bool safemode = false);
static void PreInitializeConfigHandler(const std::string& configSource = "", const std::string& configName = "", const bool safemode = false);
static void InitializeLogOutput(const std::string& filename = "");
static bool Initialize();
static void InitializeThr(bool* retPtr) { *retPtr = Initialize(); }
Expand Down
25 changes: 13 additions & 12 deletions rts/System/SpringApp.cpp
Expand Up @@ -69,7 +69,6 @@
#include "System/StartScriptGen.h"
#include "System/TimeProfiler.h"
#include "System/UriParser.h"
#include "System/StringUtil.h"
#include "System/Config/ConfigHandler.h"
#include "System/creg/creg_runtime_tests.h"
#include "System/FileSystem/ArchiveScanner.h"
Expand Down Expand Up @@ -153,7 +152,7 @@ static void ConsolePrintInitialize(const std::string& configSource, bool safemod
spring_time::setstarttime(spring_time::gettime(true));

LOG_DISABLE();
FileSystemInitializer::PreInitializeConfigHandler(configSource, safemode);
FileSystemInitializer::PreInitializeConfigHandler(configSource, "", safemode);
FileSystemInitializer::InitializeLogOutput();
LOG_ENABLE();
}
Expand All @@ -168,13 +167,18 @@ static void ConsolePrintInitialize(const std::string& configSource, bool safemod
*/
SpringApp::SpringApp(int argc, char** argv)
{
// initializes configHandler which we need
// {--,/}help overrides all other flags and causes exit(),
// even in the unusual event it is not given as first arg
if (argc > 1 && strstr(argv[1], "help") != nullptr)
ConsolePrintInitialize("", false);

gflags::SetUsageMessage("Usage: " + std::string(argv[0]) + " [options] [path_to_script.txt or demo.sdfz]");
gflags::SetVersionString(SpringVersion::GetFull());
gflags::ParseCommandLineFlags(&argc, &argv, true);

// also initializes configHandler and logOutput
ParseCmdLine(argc, argv);

FileSystemInitializer::InitializeLogOutput();

spring_clock::PushTickRate(configHandler->GetBool("UseHighResTimer"));
// set the Spring "epoch" to be whatever value the first
Expand Down Expand Up @@ -454,7 +458,6 @@ void SpringApp::ParseCmdLine(int argc, char* argv[])
#ifdef USING_CREG
exit(creg::RuntimeTest() ? EXIT_SUCCESS : EXIT_FAILURE);
#else
LOG_L(L_ERROR, "[SpringApp::%s] CREG is not enabled!\n", __func__);
exit(EXIT_FAILURE); //Do not fail tests
#endif
}
Expand All @@ -471,14 +474,12 @@ void SpringApp::ParseCmdLine(int argc, char* argv[])
exit(EXIT_SUCCESS);
}

// if this fails, configHandler remains null
FileSystemInitializer::PreInitializeConfigHandler(FLAGS_config, FLAGS_safemode);
CTextureAtlas::SetDebug(FLAGS_textureatlas);

if (FLAGS_textureatlas)
CTextureAtlas::SetDebug(true);

if (!FLAGS_name.empty())
configHandler->SetString("name", StringReplace(FLAGS_name, " ", "_"));
// if this fails, configHandler remains null
// logOutput's init depends on configHandler
FileSystemInitializer::PreInitializeConfigHandler(FLAGS_config, FLAGS_name, FLAGS_safemode);
FileSystemInitializer::InitializeLogOutput();
}


Expand Down

0 comments on commit 1c78b40

Please sign in to comment.