diff options
author | saturneric <[email protected]> | 2025-04-18 20:58:17 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2025-04-18 20:58:17 +0000 |
commit | 25724529b462cbf2f5cb0e9df106169d3ce7cfd4 (patch) | |
tree | 33ebbc945e19b6b53d51d94b00c48d14d35c3a91 | |
parent | chore: restart gpg-agent at start and kill gpg agent by close as default beha... (diff) | |
download | GpgFrontend-25724529b462cbf2f5cb0e9df106169d3ce7cfd4.tar.gz GpgFrontend-25724529b462cbf2f5cb0e9df106169d3ce7cfd4.zip |
fix: init database path and name as soon as possible
-rw-r--r-- | src/core/function/gpg/GpgContext.cpp | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/src/core/function/gpg/GpgContext.cpp b/src/core/function/gpg/GpgContext.cpp index b5b8b9e9..5138f71a 100644 --- a/src/core/function/gpg/GpgContext.cpp +++ b/src/core/function/gpg/GpgContext.cpp @@ -59,8 +59,10 @@ class GpgContext::Impl { Impl(GpgContext *parent, const GpgContextInitArgs &args) : parent_(parent), args_(args), + db_name_(args.db_name), gpgconf_path_(Module::RetrieveRTValueTypedOrDefault<>( - "core", "gpgme.ctx.gpgconf_path", QString{})) { + "core", "gpgme.ctx.gpgconf_path", QString{})), + database_path_(args.db_path) { init(args); } @@ -210,6 +212,7 @@ class GpgContext::Impl { void init(const GpgContextInitArgs &args) { assert(!gpgconf_path_.isEmpty()); + assert(!database_path_.isEmpty()); // init get_gpg_conf_dirs(); @@ -258,16 +261,13 @@ class GpgContext::Impl { const auto app_path = Module::RetrieveRTValueTypedOrDefault<>( "core", QString("gpgme.ctx.app_path"), QString{}); - // set custom gpg key db path - if (!args_.db_path.isEmpty()) { - database_path_ = args_.db_path; - db_name_ = args_.db_name; - } - LOG_D() << "ctx set engine info, channel: " << parent_->GetChannel() - << ", db name: " << args_.db_name << ", db path: " << args_.db_path + << ", db name: " << db_name_ << ", db path: " << database_path_ << ", app path: " << app_path; + assert(!db_name_.isEmpty()); + assert(!database_path_.isEmpty()); + auto app_path_buffer = app_path.toUtf8(); auto database_path_buffer = database_path_.toUtf8(); @@ -392,9 +392,17 @@ class GpgContext::Impl { LOG_D() << "context: " << parent_->GetChannel() << "gpgconf path: " << gpgconf_path; + auto args = QStringList{}; + + if (!HomeDirectory().isEmpty()) { + args.append({"--homedir", QDir::toNativeSeparators(HomeDirectory())}); + } + + args.append("--list-dirs"); + QProcess process; process.setProgram(gpgconf_path); - process.setArguments({"--list-dirs", "--homedir", database_path_}); + process.setArguments(args); process.start(); if (!process.waitForFinished()) { @@ -436,9 +444,13 @@ class GpgContext::Impl { LOG_D() << "get gpgconf path: " << gpgconf_path; - auto args = - QStringList{"--homedir", QDir::toNativeSeparators(HomeDirectory()), - "--kill", "gpg-agent"}; + auto args = QStringList{}; + + if (!HomeDirectory().isEmpty()) { + args.append({"--homedir", QDir::toNativeSeparators(HomeDirectory())}); + } + + args.append({"--kill", "gpg-agent"}); LOG_E() << "gpgconf kill args: " << args << "channel:" << parent_->GetChannel(); @@ -475,12 +487,16 @@ class GpgContext::Impl { return false; } - auto args = - QStringList{"--homedir", QDir::toNativeSeparators(HomeDirectory()), - "--daemon", "--enable-ssh-support"}; + auto args = QStringList{}; + + if (!HomeDirectory().isEmpty()) { + args.append({"--homedir", QDir::toNativeSeparators(HomeDirectory())}); + } + + args.append({"--daemon", "--enable-ssh-support"}); auto pinentry = DecidePinentry(); - if (pinentry != nullptr) { + if (!pinentry.trimmed().isEmpty()) { args.append({"--pinentry-program", pinentry}); } |