cpp,tests: Launch dirmngr with gpg-conf

* lang/cpp/tests/run-wkdlookup.cpp (main): Replace backslashes with
forward slashes in homedir returned by GpgME::dirInfo. Use "gpgconf
--launch dirmngr" to start dirmngr.
--

With this change the same code as by QGpgMEWKDLookupJob is again used to
launch dirmngr. It also fixes the bad example of starting dirmngr
without the help of gpgconf.

GnuPG-bug-id: 6833
This commit is contained in:
Ingo Klöcker 2024-01-09 11:22:43 +01:00
parent 7e520213c0
commit 85c7a94d63
No known key found for this signature in database
GPG Key ID: F5A5D1692277A1E9

View File

@ -103,19 +103,22 @@ main (int argc, char **argv)
return -1;
}
const auto dirmngrProgram = GpgME::dirInfo("dirmngr-name");
const auto homedir = GpgME::dirInfo("homedir");
const auto gpgconfProgram = GpgME::dirInfo("gpgconf-name");
// replace backslashes with forward slashes in homedir to work around bug T6833
std::string homedir{GpgME::dirInfo("homedir")};
std::replace(homedir.begin(), homedir.end(), '\\', '/');
const char *argv[] = {
dirmngrProgram,
gpgconfProgram,
"--homedir",
homedir,
"--daemon",
homedir.c_str(),
"--launch",
"dirmngr",
NULL
};
auto ignoreIO = Data{Data::null};
err = spawnCtx->spawnAsync(dirmngrProgram, argv,
ignoreIO, ignoreIO, ignoreIO,
Context::SpawnDetached);
err = spawnCtx->spawn(gpgconfProgram, argv,
ignoreIO, ignoreIO, ignoreIO,
Context::SpawnDetached);
if (err) {
std::cerr << "Failed to start dirmngr (Error: " << err.asString() << ")\n";
return -1;