aboutsummaryrefslogtreecommitdiffstats
path: root/lang/cpp/src
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2021-12-07 10:07:13 +0000
committerIngo Klöcker <[email protected]>2021-12-07 10:14:32 +0000
commit1a1e9145877a60632346ae3ab68b1ae9d722a867 (patch)
tree14c260791eb40f906616d21a000053f95a078ac9 /lang/cpp/src
parentcore: Make the gpgconf option parsing of string types more robust (diff)
downloadgpgme-1a1e9145877a60632346ae3ab68b1ae9d722a867.tar.gz
gpgme-1a1e9145877a60632346ae3ab68b1ae9d722a867.zip
cpp: Factor out common code of GpgME::engineInfo() overloads
* lang/cpp/src/context.cpp (get_engine_info, get_static_engine_info): New. (GpgME::engineInfo(GpgME::Protocol), GpgME::engineInfo(GpgME::Engine)): Use get_static_engine_info(). -- GnuPG-bug-id: 5722
Diffstat (limited to 'lang/cpp/src')
-rw-r--r--lang/cpp/src/context.cpp54
1 files changed, 26 insertions, 28 deletions
diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp
index 44587a5f..7f027f1d 100644
--- a/lang/cpp/src/context.cpp
+++ b/lang/cpp/src/context.cpp
@@ -462,6 +462,30 @@ Error Context::setLocale(int cat, const char *val)
return Error(d->lasterr = gpgme_set_locale(d->ctx, cat, val));
}
+static GpgME::EngineInfo get_engine_info(gpgme_engine_info_t engineInfos, gpgme_protocol_t protocol)
+{
+ if (!engineInfos) {
+ return EngineInfo{};
+ }
+
+ for (gpgme_engine_info_t i = engineInfos ; i ; i = i->next) {
+ if (i->protocol == protocol) {
+ return EngineInfo{i};
+ }
+ }
+
+ return EngineInfo{};
+}
+
+static GpgME::EngineInfo get_static_engine_info(gpgme_protocol_t protocol)
+{
+ gpgme_engine_info_t ei = nullptr;
+ if (gpgme_get_engine_info(&ei)) {
+ return EngineInfo{};
+ }
+ return get_engine_info(ei, protocol);
+}
+
EngineInfo Context::engineInfo() const
{
return EngineInfo(gpgme_ctx_get_engine_info(d->ctx));
@@ -1794,20 +1818,7 @@ GpgME::Error GpgME::setDefaultLocale(int cat, const char *val)
GpgME::EngineInfo GpgME::engineInfo(GpgME::Protocol proto)
{
- gpgme_engine_info_t ei = nullptr;
- if (gpgme_get_engine_info(&ei)) {
- return EngineInfo();
- }
-
- const gpgme_protocol_t p = proto == CMS ? GPGME_PROTOCOL_CMS : GPGME_PROTOCOL_OpenPGP ;
-
- for (gpgme_engine_info_t i = ei ; i ; i = i->next) {
- if (i->protocol == p) {
- return EngineInfo(i);
- }
- }
-
- return EngineInfo();
+ return get_static_engine_info(proto == CMS ? GPGME_PROTOCOL_CMS : GPGME_PROTOCOL_OpenPGP);
}
const char *GpgME::dirInfo(const char *what)
@@ -1845,20 +1856,7 @@ static gpgme_protocol_t engine2protocol(const GpgME::Engine engine)
GpgME::EngineInfo GpgME::engineInfo(GpgME::Engine engine)
{
- gpgme_engine_info_t ei = nullptr;
- if (gpgme_get_engine_info(&ei)) {
- return EngineInfo();
- }
-
- const gpgme_protocol_t p = engine2protocol(engine);
-
- for (gpgme_engine_info_t i = ei ; i ; i = i->next) {
- if (i->protocol == p) {
- return EngineInfo(i);
- }
- }
-
- return EngineInfo();
+ return get_static_engine_info(engine2protocol(engine));
}
GpgME::Error GpgME::checkEngine(GpgME::Engine engine)