diff options
Diffstat (limited to 'src/core/Tools.cpp')
-rw-r--r-- | src/core/Tools.cpp | 26 |
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) |