summaryrefslogtreecommitdiff
path: root/src/env.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-09-13 15:15:18 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-09-13 15:15:18 -0400
commit09b95e39434b9efc49a606957c94cd42309b7fb6 (patch)
tree4e6d3f345166c460589ff10c45a126c9028ab454 /src/env.cpp
parentb867b0bccdb32d94e1646d8f3f8e8a39d4b2446e (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.cpp42
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)