diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-09-13 15:15:18 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-09-13 15:15:18 -0400 |
| commit | 09b95e39434b9efc49a606957c94cd42309b7fb6 (patch) | |
| tree | 4e6d3f345166c460589ff10c45a126c9028ab454 /src/env.cpp | |
| parent | b867b0bccdb32d94e1646d8f3f8e8a39d4b2446e (diff) | |
moved all spawn dialogs into a namespace
starting steam with spawn() instead of QProcess
dialogs for bad steam registry key and failure
refactored credentials code, added logging
add environment variables to env
Diffstat (limited to 'src/env.cpp')
| -rw-r--r-- | src/env.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/env.cpp b/src/env.cpp index 34f53294..1aaaa8ef 100644 --- a/src/env.cpp +++ b/src/env.cpp @@ -171,6 +171,48 @@ void Environment::dumpDisks(const Settings& s) const } +QString path() +{ + return get("PATH"); +} + +QString addPath(const QString& s) +{ + auto old = path(); + set("PATH", get("PATH") + ";" + s); + return old; +} + +QString setPath(const QString& s) +{ + return set("PATH", s); +} + +QString get(const QString& name) +{ + std::wstring s(4000, L' '); + + DWORD realSize = ::GetEnvironmentVariableW( + name.toStdWString().c_str(), s.data(), static_cast<DWORD>(s.size())); + + if (realSize > s.size()) { + s.resize(realSize); + + ::GetEnvironmentVariableW( + name.toStdWString().c_str(), s.data(), static_cast<DWORD>(s.size())); + } + + return QString::fromStdWString(s); +} + +QString set(const QString& n, const QString& v) +{ + auto old = get(n); + ::SetEnvironmentVariableW(n.toStdWString().c_str(), v.toStdWString().c_str()); + return old; +} + + // returns the filename of the given process or the current one // std::wstring processFilename(HANDLE process=INVALID_HANDLE_VALUE) |
