#include "processcore.hpp" #include #include #include #include #include "../core/common.hpp" namespace qs::io::process { void setupProcessEnvironment( QProcess* process, bool clear, const QHash& envChanges ) { const auto& sysenv = qs::Common::INITIAL_ENVIRONMENT; auto env = clear ? QProcessEnvironment() : sysenv; for (auto& name: envChanges.keys()) { auto value = envChanges.value(name); if (!value.isValid()) continue; if (clear) { if (value.isNull()) { if (sysenv.contains(name)) env.insert(name, sysenv.value(name)); } else env.insert(name, value.toString()); } else { if (value.isNull()) env.remove(name); else env.insert(name, value.toString()); } } process->setProcessEnvironment(env); } } // namespace qs::io::process