diff options
author | David Schulz <david.schulz@qt.io> | 2018-01-29 13:05:13 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2018-02-01 05:36:32 +0000 |
commit | ab9cce7fe7adba200744c5930600d3d1c43a9073 (patch) | |
tree | 8784605b1d7a496c88a31ab2ef8c494e406f20da | |
parent | 88d65af7d3cf03f589f8b0f72acb1f05f8223ea8 (diff) |
Utils: use system case for environment variables on windows
Match case of user changed environment variables to the
already defined variables.
Change-Id: Ic012d35faa0822df3523ab642491c9f19051853c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: hjk <hjk@qt.io>
-rw-r--r-- | src/libs/utils/environment.cpp | 7 | ||||
-rw-r--r-- | src/libs/utils/environment.h | 1 | ||||
-rw-r--r-- | src/libs/utils/environmentmodel.cpp | 7 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 0705c30081..74534eeaf4 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -500,7 +500,7 @@ Environment::const_iterator Environment::constEnd() const Environment::const_iterator Environment::constFind(const QString &name) const { - return m_values.constFind(name); + return findKey(m_values, m_osType, name); } int Environment::size() const @@ -567,6 +567,11 @@ bool Environment::hasKey(const QString &key) const return m_values.contains(key); } +OsType Environment::osType() const +{ + return m_osType; +} + QString Environment::userName() const { return value(QString::fromLatin1(m_osType == OsTypeWindows ? "USERNAME" : "USER")); diff --git a/src/libs/utils/environment.h b/src/libs/utils/environment.h index e3a382daf0..4fed80a8bb 100644 --- a/src/libs/utils/environment.h +++ b/src/libs/utils/environment.h @@ -91,6 +91,7 @@ public: /// Return the Environment changes necessary to modify this into the other environment. QList<EnvironmentItem> diff(const Environment &other, bool checkAppendPrepend = false) const; bool hasKey(const QString &key) const; + OsType osType() const; QString userName() const; diff --git a/src/libs/utils/environmentmodel.cpp b/src/libs/utils/environmentmodel.cpp index 4191d3abee..fde8e7ad55 100644 --- a/src/libs/utils/environmentmodel.cpp +++ b/src/libs/utils/environmentmodel.cpp @@ -364,6 +364,13 @@ void EnvironmentModel::setUserChanges(QList<EnvironmentItem> list) name = name.trimmed(); if (name.startsWith(QLatin1String("export "))) name = name.mid(7).trimmed(); + if (d->m_baseEnvironment.osType() == OsTypeWindows) { + // Environment variable names are case-insensitive under windows, but we still + // want to preserve the case of pre-existing variables. + auto it = d->m_baseEnvironment.constFind(name); + if (it != d->m_baseEnvironment.constEnd()) + name = d->m_baseEnvironment.key(it); + } } d->updateResultEnvironment(); |