aboutsummaryrefslogtreecommitdiffstats
path: root/src/keylist.c
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2022-05-04 12:23:42 +0000
committerIngo Klöcker <[email protected]>2022-05-04 12:23:42 +0000
commitf3ca57dfd7af19f9b2fd01616a81dc889707a4d3 (patch)
tree3d958974b5cace276b2ce0da846c6ee63c005362 /src/keylist.c
parentcpp: Allow merging the results of two imports (diff)
downloadgpgme-f3ca57dfd7af19f9b2fd01616a81dc889707a4d3.tar.gz
gpgme-f3ca57dfd7af19f9b2fd01616a81dc889707a4d3.zip
core: Handle import status lines during keylist operation
* src/import.c (import_status_handler): Rename to ... (_gpgme_import_status_handler): this. Make non-static. (_gpgme_op_import_init_result): New. (_gpgme_op_import_start, _gpgme_op_import_keys_start, _gpgme_op_receive_keys_start): Call _gpgme_op_import_init_result. * src/keylist.c (keylist_status_handler): Call _gpgme_import_status_handler to handle import status lines. (gpgme_op_keylist_start, gpgme_op_keylist_ext_start): Call _gpgme_op_import_init_result. * src/ops.h (_gpgme_op_import_init_result, _gpgme_import_status_handler): New prototypes. -- If a keylist operation with keylist mode GPGME_KEYLIST_MODE_LOCATE is run, then gpg emits import status lines. Handling those status lines allows users to retrieve the result of a --locate-(external)-keys command. GnuPG-bug-id: 5951
Diffstat (limited to 'src/keylist.c')
-rw-r--r--src/keylist.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/keylist.c b/src/keylist.c
index 883d6257..05267e6c 100644
--- a/src/keylist.c
+++ b/src/keylist.c
@@ -146,6 +146,12 @@ keylist_status_handler (void *priv, gpgme_status_code_t code, char *args)
err = 0;
break;
+ case GPGME_STATUS_IMPORT_OK:
+ case GPGME_STATUS_IMPORT_PROBLEM:
+ case GPGME_STATUS_IMPORT_RES:
+ err = _gpgme_import_status_handler (priv, code, args);
+ break;
+
default:
break;
}
@@ -1125,6 +1131,10 @@ gpgme_op_keylist_start (gpgme_ctx_t ctx, const char *pattern, int secret_only)
if (err)
return TRACE_ERR (err);
+ err = _gpgme_op_import_init_result (ctx);
+ if (err)
+ return TRACE_ERR (err);
+
_gpgme_engine_set_status_handler (ctx->engine, keylist_status_handler, ctx);
err = _gpgme_engine_set_colon_line_handler (ctx->engine,
@@ -1169,6 +1179,10 @@ gpgme_op_keylist_ext_start (gpgme_ctx_t ctx, const char *pattern[],
if (err)
return TRACE_ERR (err);
+ err = _gpgme_op_import_init_result (ctx);
+ if (err)
+ return TRACE_ERR (err);
+
_gpgme_engine_set_status_handler (ctx->engine, keylist_status_handler, ctx);
err = _gpgme_engine_set_colon_line_handler (ctx->engine,
keylist_colon_handler, ctx);