diff options
author | Ingo Klöcker <[email protected]> | 2022-05-04 12:23:42 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2022-05-04 12:23:42 +0000 |
commit | f3ca57dfd7af19f9b2fd01616a81dc889707a4d3 (patch) | |
tree | 3d958974b5cace276b2ce0da846c6ee63c005362 /src/keylist.c | |
parent | cpp: Allow merging the results of two imports (diff) | |
download | gpgme-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.c | 14 |
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); |