Skip to content

Commit 2572452

Browse files
committed
fix: init database path and name as soon as possible
1 parent 4ce1383 commit 2572452

1 file changed

Lines changed: 32 additions & 16 deletions

File tree

src/core/function/gpg/GpgContext.cpp

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,10 @@ class GpgContext::Impl {
5959
Impl(GpgContext *parent, const GpgContextInitArgs &args)
6060
: parent_(parent),
6161
args_(args),
62+
db_name_(args.db_name),
6263
gpgconf_path_(Module::RetrieveRTValueTypedOrDefault<>(
63-
"core", "gpgme.ctx.gpgconf_path", QString{})) {
64+
"core", "gpgme.ctx.gpgconf_path", QString{})),
65+
database_path_(args.db_path) {
6466
init(args);
6567
}
6668

@@ -210,6 +212,7 @@ class GpgContext::Impl {
210212

211213
void init(const GpgContextInitArgs &args) {
212214
assert(!gpgconf_path_.isEmpty());
215+
assert(!database_path_.isEmpty());
213216

214217
// init
215218
get_gpg_conf_dirs();
@@ -258,16 +261,13 @@ class GpgContext::Impl {
258261
const auto app_path = Module::RetrieveRTValueTypedOrDefault<>(
259262
"core", QString("gpgme.ctx.app_path"), QString{});
260263

261-
// set custom gpg key db path
262-
if (!args_.db_path.isEmpty()) {
263-
database_path_ = args_.db_path;
264-
db_name_ = args_.db_name;
265-
}
266-
267264
LOG_D() << "ctx set engine info, channel: " << parent_->GetChannel()
268-
<< ", db name: " << args_.db_name << ", db path: " << args_.db_path
265+
<< ", db name: " << db_name_ << ", db path: " << database_path_
269266
<< ", app path: " << app_path;
270267

268+
assert(!db_name_.isEmpty());
269+
assert(!database_path_.isEmpty());
270+
271271
auto app_path_buffer = app_path.toUtf8();
272272
auto database_path_buffer = database_path_.toUtf8();
273273

@@ -392,9 +392,17 @@ class GpgContext::Impl {
392392
LOG_D() << "context: " << parent_->GetChannel()
393393
<< "gpgconf path: " << gpgconf_path;
394394

395+
auto args = QStringList{};
396+
397+
if (!HomeDirectory().isEmpty()) {
398+
args.append({"--homedir", QDir::toNativeSeparators(HomeDirectory())});
399+
}
400+
401+
args.append("--list-dirs");
402+
395403
QProcess process;
396404
process.setProgram(gpgconf_path);
397-
process.setArguments({"--list-dirs", "--homedir", database_path_});
405+
process.setArguments(args);
398406
process.start();
399407

400408
if (!process.waitForFinished()) {
@@ -436,9 +444,13 @@ class GpgContext::Impl {
436444

437445
LOG_D() << "get gpgconf path: " << gpgconf_path;
438446

439-
auto args =
440-
QStringList{"--homedir", QDir::toNativeSeparators(HomeDirectory()),
441-
"--kill", "gpg-agent"};
447+
auto args = QStringList{};
448+
449+
if (!HomeDirectory().isEmpty()) {
450+
args.append({"--homedir", QDir::toNativeSeparators(HomeDirectory())});
451+
}
452+
453+
args.append({"--kill", "gpg-agent"});
442454

443455
LOG_E() << "gpgconf kill args: " << args
444456
<< "channel:" << parent_->GetChannel();
@@ -475,12 +487,16 @@ class GpgContext::Impl {
475487
return false;
476488
}
477489

478-
auto args =
479-
QStringList{"--homedir", QDir::toNativeSeparators(HomeDirectory()),
480-
"--daemon", "--enable-ssh-support"};
490+
auto args = QStringList{};
491+
492+
if (!HomeDirectory().isEmpty()) {
493+
args.append({"--homedir", QDir::toNativeSeparators(HomeDirectory())});
494+
}
495+
496+
args.append({"--daemon", "--enable-ssh-support"});
481497

482498
auto pinentry = DecidePinentry();
483-
if (pinentry != nullptr) {
499+
if (!pinentry.trimmed().isEmpty()) {
484500
args.append({"--pinentry-program", pinentry});
485501
}
486502

0 commit comments

Comments
 (0)