diff options
Diffstat (limited to 'gpgme/keylist.c')
-rw-r--r-- | gpgme/keylist.c | 111 |
1 files changed, 45 insertions, 66 deletions
diff --git a/gpgme/keylist.c b/gpgme/keylist.c index a04300a0..7c014cd0 100644 --- a/gpgme/keylist.c +++ b/gpgme/keylist.c @@ -236,47 +236,51 @@ keylist_colon_handler (GpgmeCtx ctx, char *line) /* Start a new keyblock. */ if (_gpgme_key_new (&key)) { - ctx->error = mk_error (Out_Of_Core); /* the only kind of error we can get*/ + /* The only kind of error we can get. */ + ctx->error = mk_error (Out_Of_Core); return; } - rectype = RT_PUB; - finish_key (ctx); - assert (!ctx->tmp_key); - ctx->tmp_key = key; + rectype = RT_PUB; + finish_key (ctx); + assert (!ctx->tmp_key); + ctx->tmp_key = key; } - else if (!strcmp (p, "sec")) - { - /* Start a new keyblock, */ - if (_gpgme_key_new_secret (&key)) - { - ctx->error = mk_error (Out_Of_Core); /* The only kind of error we can get*/ - return; - } - rectype = RT_SEC; - finish_key (ctx); - assert (!ctx->tmp_key); - ctx->tmp_key = key; + else if (!strcmp (p, "sec")) + { + /* Start a new keyblock, */ + if (_gpgme_key_new_secret (&key)) + { + /* The only kind of error we can get. */ + ctx->error = mk_error (Out_Of_Core); + return; + } + rectype = RT_SEC; + finish_key (ctx); + assert (!ctx->tmp_key); + ctx->tmp_key = key; } - else if (!strcmp (p, "crt")) - { - /* Start a new certificate. */ - if (_gpgme_key_new (&key)) - { - ctx->error = mk_error (Out_Of_Core); /* The only kind of error we can get*/ - return; - } - key->x509 = 1; - rectype = RT_CRT; - finish_key (ctx); - assert (!ctx->tmp_key); - ctx->tmp_key = key; + else if (!strcmp (p, "crt")) + { + /* Start a new certificate. */ + if (_gpgme_key_new (&key)) + { + /* The only kind of error we can get. */ + ctx->error = mk_error (Out_Of_Core); + return; + } + key->x509 = 1; + rectype = RT_CRT; + finish_key (ctx); + assert (!ctx->tmp_key); + ctx->tmp_key = key; } else if (!strcmp (p, "crs")) { /* Start a new certificate. */ if (_gpgme_key_new_secret (&key)) { - ctx->error = mk_error (Out_Of_Core); /* The only kind of error we can get*/ + /* The only kind of error we can get. */ + ctx->error = mk_error (Out_Of_Core); return; } key->x509 = 1; @@ -289,7 +293,6 @@ keylist_colon_handler (GpgmeCtx ctx, char *line) rectype = RT_FPR; else rectype = RT_NONE; - } else if (rectype == RT_PUB || rectype == RT_SEC || rectype == RT_CRT || rectype == RT_CRS) @@ -401,7 +404,8 @@ keylist_colon_handler (GpgmeCtx ctx, char *line) break; case 10: /* user ID */ if (_gpgme_key_append_name (key, p)) - ctx->error = mk_error (Out_Of_Core); /* The only kind of error we can get*/ + /* The only kind of error we can get*/ + ctx->error = mk_error (Out_Of_Core); else { if (trust_info) @@ -495,25 +499,13 @@ gpgme_op_keylist_start (GpgmeCtx ctx, const char *pattern, int secret_only) { GpgmeError err = 0; - if (!ctx) - return mk_error (Invalid_Value); - ctx->pending = 1; - - _gpgme_release_result (ctx); + err = _gpgme_op_reset (ctx, 0); + if (err) + goto leave; - if (ctx->engine) - { - _gpgme_engine_release (ctx->engine); - ctx->engine = NULL; - } gpgme_key_release (ctx->tmp_key); ctx->tmp_key = NULL; /* Fixme: Release key_queue. */ - - err = _gpgme_engine_new (ctx->use_cms ? GPGME_PROTOCOL_CMS - : GPGME_PROTOCOL_OpenPGP, &ctx->engine); - if (err) - goto leave; _gpgme_engine_set_status_handler (ctx->engine, keylist_status_handler, ctx); err = _gpgme_engine_set_colon_line_handler (ctx->engine, @@ -526,7 +518,8 @@ gpgme_op_keylist_start (GpgmeCtx ctx, const char *pattern, int secret_only) just ignore those lines - This should speed up things */ _gpgme_engine_set_verbosity (ctx->engine, 0); - err = _gpgme_engine_op_keylist (ctx->engine, pattern, secret_only, ctx->keylist_mode); + err = _gpgme_engine_op_keylist (ctx->engine, pattern, secret_only, + ctx->keylist_mode); if (!err) /* And kick off the process. */ err = _gpgme_engine_start (ctx->engine, ctx); @@ -561,26 +554,12 @@ gpgme_op_keylist_ext_start (GpgmeCtx ctx, const char *pattern[], { GpgmeError err = 0; - if (!ctx) - return mk_error (Invalid_Value); - ctx->pending = 1; - - _gpgme_release_result (ctx); - - if (ctx->engine) - { - _gpgme_engine_release (ctx->engine); - ctx->engine = NULL; - } - gpgme_key_release (ctx->tmp_key); - ctx->tmp_key = NULL; - /* Fixme: Release key_queue. */ - - err = _gpgme_engine_new (ctx->use_cms ? GPGME_PROTOCOL_CMS - : GPGME_PROTOCOL_OpenPGP, &ctx->engine); + err = _gpgme_op_reset (ctx, 0); if (err) goto leave; + gpgme_key_release (ctx->tmp_key); + _gpgme_engine_set_status_handler (ctx->engine, keylist_status_handler, ctx); err = _gpgme_engine_set_colon_line_handler (ctx->engine, keylist_colon_handler, ctx); |