Don't rewrite user-defined env vars

This commit is contained in:
Vitaly Petrov
2019-03-21 19:57:51 +03:00
parent 6db94434f6
commit 904be9909b
+28 -13
View File
@@ -176,16 +176,31 @@ bool UnixPtyProcess::startProcess(const QString &shellPath, QStringList environm
m_shellProcess.emitReadyRead();
});
environment.append("TERM=xterm-256color");
environment.append("ITERM_PROFILE=Default");
environment.append("XPC_FLAGS=0x0");
environment.append("XPC_SERVICE_NAME=0");
environment.append("LANG=en_US.UTF-8");
environment.append("LC_ALL=en_US.UTF-8");
environment.append("LC_CTYPE=UTF-8");
environment.append("INIT_CWD=" + QCoreApplication::applicationDirPath());
environment.append("COMMAND_MODE=unix2003");
environment.append("COLORTERM=truecolor");
QStringList defaultVars;
defaultVars.append("TERM=xterm-256color");
defaultVars.append("ITERM_PROFILE=Default");
defaultVars.append("XPC_FLAGS=0x0");
defaultVars.append("XPC_SERVICE_NAME=0");
defaultVars.append("LANG=en_US.UTF-8");
defaultVars.append("LC_ALL=en_US.UTF-8");
defaultVars.append("LC_CTYPE=UTF-8");
defaultVars.append("INIT_CWD=" + QCoreApplication::applicationDirPath());
defaultVars.append("COMMAND_MODE=unix2003");
defaultVars.append("COLORTERM=truecolor");
QStringList varNames;
foreach (QString line, environment)
{
varNames.append(line.split("=").first());
}
//append default env vars only if they don't exists in current env
foreach (QString defVar, defaultVars)
{
if (!varNames.contains(defVar.split("=").first()))
environment.append(defVar);
}
QProcessEnvironment envFormat;
foreach (QString line, environment)
@@ -266,9 +281,9 @@ IPtyProcess::PtyType UnixPtyProcess::type()
QString UnixPtyProcess::dumpDebugInfo()
{
return QString("PID: %1, In: %2, Out: %3, Type: %4, Cols: %5, Rows: %6, IsRunning: %7, Shell: %8, SlaveName: %9")
.arg(m_pid).arg(m_shellProcess.m_handleMaster).arg(m_shellProcess.m_handleSlave).arg(type())
.arg(m_size.first).arg(m_size.second).arg(m_shellProcess.state() == QProcess::Running)
.arg(m_shellPath).arg(m_shellProcess.m_handleSlaveName);
.arg(m_pid).arg(m_shellProcess.m_handleMaster).arg(m_shellProcess.m_handleSlave).arg(type())
.arg(m_size.first).arg(m_size.second).arg(m_shellProcess.state() == QProcess::Running)
.arg(m_shellPath).arg(m_shellProcess.m_handleSlaveName);
}
#endif