@@ -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