From 3d1426b5592794160188878927ff2eefc56b0211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 1 Nov 2014 14:11:20 +0100 Subject: Filter env variables passed to Minecraft QT_* and LD_* are not passed through env variables are logged on launch --- logic/MinecraftProcess.cpp | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'logic/MinecraftProcess.cpp') diff --git a/logic/MinecraftProcess.cpp b/logic/MinecraftProcess.cpp index 1a7dc2fe..71bf34c7 100644 --- a/logic/MinecraftProcess.cpp +++ b/logic/MinecraftProcess.cpp @@ -41,14 +41,37 @@ MinecraftProcess::MinecraftProcess(InstancePtr inst) : m_instance(inst) SLOT(finish(int, QProcess::ExitStatus))); // prepare the process environment - QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + QProcessEnvironment rawenv = QProcessEnvironment::systemEnvironment(); + QProcessEnvironment env; + for(auto key: rawenv.keys()) + { + auto value = rawenv.value(key); + // filter MultiMC-related things + if(key.startsWith("QT_")) + { + QLOG_INFO() << "Env: ignoring" << key << value; + continue; + } #ifdef LINUX - // Strip IBus - // IBus is a Linux IME framework. For some reason, it breaks MC? - if (env.value("XMODIFIERS").contains(IBUS)) - env.insert("XMODIFIERS", env.value("XMODIFIERS").replace(IBUS, "")); + // Do not pass LD_* variables to java. They were intended for MultiMC + if(key.startsWith("LD_")) + { + QLOG_INFO() << "Env: ignoring" << key << value; + continue; + } + // Strip IBus + // IBus is a Linux IME framework. For some reason, it breaks MC? + if (key == "XMODIFIERS" && value.contains(IBUS)) + { + QString save = value; + value.replace(IBUS, ""); + QLOG_INFO() << "Env: stripped" << IBUS << "from" << save << ":" << value; + } #endif + QLOG_INFO() << "Env: " << key << value; + env.insert(key, value); + } // export some infos auto variables = getVariables(); -- cgit v1.2.3