Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/Tools.cpp')
-rw-r--r--src/core/Tools.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/core/Tools.cpp b/src/core/Tools.cpp
index 5d42bc799..1b3eafcca 100644
--- a/src/core/Tools.cpp
+++ b/src/core/Tools.cpp
@@ -113,8 +113,9 @@ namespace Tools
extensions += "\n- " + QObject::tr("Secret Service Integration");
#endif
- if (extensions.isEmpty())
+ if (extensions.isEmpty()) {
extensions = " " + QObject::tr("None");
+ }
debugInfo.append(QObject::tr("Enabled extensions:").append(extensions).append("\n"));
return debugInfo;
@@ -324,6 +325,29 @@ namespace Tools
return QUuid::fromRfc4122(QByteArray::fromHex(uuid.toLatin1()));
}
+ QString envSubstitute(const QString& filepath, QProcessEnvironment environment)
+ {
+ QString subbed = filepath;
+
+#if defined(Q_OS_WIN)
+ QRegularExpression varRe("\\%([A-Za-z][A-Za-z0-9_]*)\\%");
+#else
+ QRegularExpression varRe("\\$([A-Za-z][A-Za-z0-9_]*)");
+ subbed.replace("~", environment.value("HOME"));
+#endif
+
+ QRegularExpressionMatch match;
+
+ do {
+ match = varRe.match(subbed);
+ if (match.hasMatch()) {
+ subbed.replace(match.capturedStart(), match.capturedLength(), environment.value(match.captured(1)));
+ }
+ } while (match.hasMatch());
+
+ return subbed;
+ }
+
Buffer::Buffer()
: raw(nullptr)
, size(0)