MCPcopy Create free account
hub / github.com/MultiMC/Launcher / CleanEnviroment

Function CleanEnviroment

launcher/java/JavaUtils.cpp:54–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52#endif
53
54QProcessEnvironment 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

Callers 2

performCheckMethod · 0.85
createEnvironmentMethod · 0.85

Calls 4

processLD_LIBRARY_PATHFunction · 0.85
insertMethod · 0.80
containsMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected