From ad008b9b57c72c1a28d7f2e43899f231d4f16226 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Wed, 6 Oct 2010 16:11:07 +0200 Subject: [PATCH] Environment: Disable escaping when expanding variables This breaks too much on windows. Reviewed-by: dt --- src/libs/utils/environment.cpp | 23 ++++--------------- src/libs/utils/pathchooser.cpp | 4 +--- .../projectexplorer/abstractprocessstep.cpp | 5 ++-- 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 7ec417030fa..b21fcf9ab63 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -373,20 +373,15 @@ QString Environment::joinArgumentList(const QStringList &arguments) return result; } -enum State { BASE, VARIABLE, OPTIONALVARIABLEBRACE, STRING, STRING_ESCAPE, ESCAPE }; +enum State { BASE, VARIABLE, OPTIONALVARIABLEBRACE, STRING }; /** Expand environment variables in a string. * * Environment variables are accepted in the following forms: * $SOMEVAR, ${SOMEVAR} and %SOMEVAR%. * - * The following escape sequences are supported: - * "\$", "\\" and "\"" which will be replaced by '$', '\' and '%' - * respectively. - * * Strings enclosed in '"' characters do not get varaibles - * substituted. Escape codes are processed though. - * + * substituted. */ QString Environment::expandVariables(const QString &input) const { @@ -399,9 +394,7 @@ QString Environment::expandVariables(const QString &input) const for (int i = 0; i < length; ++i) { QChar c = input.at(i); if (state == BASE) { - if (c == '\\') { - state = ESCAPE; - } else if (c == '$') { + if (c == '$') { state = OPTIONALVARIABLEBRACE; variable.clear(); endVariable = QChar(0); @@ -433,20 +426,12 @@ QString Environment::expandVariables(const QString &input) const variable = c; state = VARIABLE; } else if (state == STRING) { - if (c == '\\') { - state = STRING_ESCAPE; - } else if (c == '\"') { + if (c == '\"') { state = BASE; result += c; } else { result += c; } - } else if (state == STRING_ESCAPE) { - result += c; - state = STRING; - } else if (state == ESCAPE){ - result += c; - state = BASE; } } if (state == VARIABLE) diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index 331e51ddfa8..844353fddf5 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -110,9 +110,7 @@ QString PathChooserPrivate::expandedPath(const QString &input) const { if (input.isEmpty()) return input; - // Environment does \-expansion, too. - const QString nativeInput = QDir::fromNativeSeparators(input); - const QString path = QDir::fromNativeSeparators(m_environment.expandVariables(nativeInput)); + const QString path = QDir::fromNativeSeparators(m_environment.expandVariables(input)); if (path.isEmpty()) return path; diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 9949ef30452..9b0786f7e82 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -151,13 +151,12 @@ void AbstractProcessStep::run(QFutureInterface<bool> &fi) fi.reportResult(true); return; } - QString workDir = m_environment.expandVariables(m_workingDirectory); - QDir wd(workDir); + QDir wd(m_environment.expandVariables(m_workingDirectory)); if (!wd.exists()) wd.mkpath(wd.absolutePath()); m_process = new QProcess(); - m_process->setWorkingDirectory(workDir); + m_process->setWorkingDirectory(wd.absolutePath()); m_process->setEnvironment(m_environment.toStringList()); connect(m_process, SIGNAL(readyReadStandardOutput()), -- GitLab