| 52 | #endif |
| 53 | |
| 54 | QProcessEnvironment CleanEnviroment() |
| 55 | { |
| 56 | // prepare the process environment |
| 57 | QProcessEnvironment rawenv = QProcessEnvironment::systemEnvironment(); |
| 58 | QProcessEnvironment env; |
| 59 | |
| 60 | QStringList ignored = |
| 61 | { |
| 62 | "JAVA_ARGS", |
| 63 | "CLASSPATH", |
| 64 | "CONFIGPATH", |
| 65 | "JAVA_HOME", |
| 66 | "JRE_HOME", |
| 67 | "_JAVA_OPTIONS", |
| 68 | "JAVA_OPTIONS", |
| 69 | "JAVA_TOOL_OPTIONS" |
| 70 | }; |
| 71 | for(auto key: rawenv.keys()) |
| 72 | { |
| 73 | auto value = rawenv.value(key); |
| 74 | // filter out dangerous java crap |
| 75 | if(ignored.contains(key)) |
| 76 | { |
| 77 | qDebug() << "Env: ignoring" << key << value; |
| 78 | continue; |
| 79 | } |
| 80 | // filter MultiMC-related things |
| 81 | if(key.startsWith("QT_")) |
| 82 | { |
| 83 | qDebug() << "Env: ignoring" << key << value; |
| 84 | continue; |
| 85 | } |
| 86 | #ifdef Q_OS_LINUX |
| 87 | // Do not pass LD_* variables to java. They were intended for MultiMC |
| 88 | if(key.startsWith("LD_")) |
| 89 | { |
| 90 | qDebug() << "Env: ignoring" << key << value; |
| 91 | continue; |
| 92 | } |
| 93 | // Strip IBus |
| 94 | // IBus is a Linux IME framework. For some reason, it breaks MC? |
| 95 | if (key == "XMODIFIERS" && value.contains(IBUS)) |
| 96 | { |
| 97 | QString save = value; |
| 98 | value.replace(IBUS, ""); |
| 99 | qDebug() << "Env: stripped" << IBUS << "from" << save << ":" << value; |
| 100 | } |
| 101 | if(key == "GAME_PRELOAD") |
| 102 | { |
| 103 | env.insert("LD_PRELOAD", value); |
| 104 | continue; |
| 105 | } |
| 106 | if(key == "GAME_LIBRARY_PATH") |
| 107 | { |
| 108 | env.insert("LD_LIBRARY_PATH", processLD_LIBRARY_PATH(value)); |
| 109 | continue; |
| 110 | } |
| 111 | #endif |
no test coverage detected