diff options
| author | Marcus Brinkmann <[email protected]> | 2017-08-11 17:13:44 +0000 | 
|---|---|---|
| committer | Marcus Brinkmann <[email protected]> | 2017-08-11 17:13:44 +0000 | 
| commit | a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf (patch) | |
| tree | 047fb190d1210a568692163ce2bc3de6e90ee045 /src/delete.c | |
| parent | doc: Clarify import keys operation. (diff) | |
| download | gpgme-a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf.tar.gz gpgme-a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf.zip | |
g10: Add new delete operations that allow more flags.
* NEWS: Document new interfaces.
* doc/gpgme.texi: Document new interfaces.
* src/gpgme.h.in (GPGME_DELETE_ALLOW_SECRET, GPGME_DELETE_FORCE,
gpgme_op_delete_ext_start, gpgme_op_delete_ext): New.
* src/delete.c (delete_start): Change allow_secret argument to flags.
(gpgme_op_delete_ext, gpgme_op_delete_ext_start): New functions.
* src/engine-backend.h (delete): Change allow_secret argument to flags.
* src/engine.c (_gpgme_engine_op_delete): Likewise.
* src/engine.h (_gpgme_engine_op_delete): Likewise (for prototype).
* src/engine-gpgsm.c (gpgsm_delete): Likewise.
* src/engine-gpg.c (gpg_delete): Likewise.  Implement GPGME_DELETE_FORCE.
* src/gpgme.def (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
* src/libgpgme.vers (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
Signed-off-by: Marcus Brinkmann <[email protected]>
GnuPG-bug-id: 2916
Diffstat (limited to '')
| -rw-r--r-- | src/delete.c | 54 | 
1 files changed, 49 insertions, 5 deletions
| diff --git a/src/delete.c b/src/delete.c index fc99aacf..1bf1cb48 100644 --- a/src/delete.c +++ b/src/delete.c @@ -108,7 +108,7 @@ delete_status_handler (void *priv, gpgme_status_code_t code, char *args)  static gpgme_error_t  delete_start (gpgme_ctx_t ctx, int synchronous, const gpgme_key_t key, -	      int allow_secret) +	      unsigned int flags)  {    gpgme_error_t err; @@ -118,7 +118,7 @@ delete_start (gpgme_ctx_t ctx, int synchronous, const gpgme_key_t key,    _gpgme_engine_set_status_handler (ctx->engine, delete_status_handler, ctx); -  return _gpgme_engine_op_delete (ctx->engine, key, allow_secret); +  return _gpgme_engine_op_delete (ctx->engine, key, flags);  } @@ -130,7 +130,7 @@ gpgme_op_delete_start (gpgme_ctx_t ctx, const gpgme_key_t key,  {    gpgme_error_t err; -  TRACE_BEG3 (DEBUG_CTX, "gpgme_op_delete", ctx, +  TRACE_BEG3 (DEBUG_CTX, "gpgme_op_delete_start", ctx,  	      "key=%p (%s), allow_secret=%i", key,  	      (key->subkeys && key->subkeys->fpr) ?  	      key->subkeys->fpr : "invalid", allow_secret); @@ -138,7 +138,8 @@ gpgme_op_delete_start (gpgme_ctx_t ctx, const gpgme_key_t key,    if (!ctx)      return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE)); -  err = delete_start (ctx, 0, key, allow_secret); +  err = delete_start (ctx, 0, key, +		      allow_secret ? GPGME_DELETE_ALLOW_SECRET : 0);    return TRACE_ERR (err);  } @@ -158,7 +159,50 @@ gpgme_op_delete (gpgme_ctx_t ctx, const gpgme_key_t key, int allow_secret)    if (!ctx)      return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE)); -  err = delete_start (ctx, 1, key, allow_secret); +  err = delete_start (ctx, 1, key, +		      allow_secret ? GPGME_DELETE_ALLOW_SECRET : 0); +  if (!err) +    err = _gpgme_wait_one (ctx); +  return err; +} + + +/* Delete KEY from the keyring.  */ +gpgme_error_t +gpgme_op_delete_ext_start (gpgme_ctx_t ctx, const gpgme_key_t key, +			   unsigned int flags) +{ +  gpgme_error_t err; + +  TRACE_BEG3 (DEBUG_CTX, "gpgme_op_delete_ext_start", ctx, +	      "key=%p (%s), flags=0x%x", key, +	      (key->subkeys && key->subkeys->fpr) ? +	      key->subkeys->fpr : "invalid", flags); + +  if (!ctx) +    return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE)); + +  err = delete_start (ctx, 0, key, flags); +  return TRACE_ERR (err); +} + + +/* Delete KEY from the keyring.  */ +gpgme_error_t +gpgme_op_delete_ext (gpgme_ctx_t ctx, const gpgme_key_t key, +		     unsigned int flags) +{ +  gpgme_error_t err; + +  TRACE_BEG3 (DEBUG_CTX, "gpgme_op_delete_ext", ctx, +	      "key=%p (%s), flags=0x%x", key, +	      (key->subkeys && key->subkeys->fpr) ? +	      key->subkeys->fpr : "invalid", flags); + +  if (!ctx) +    return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE)); + +  err = delete_start (ctx, 1, key, flags);    if (!err)      err = _gpgme_wait_one (ctx);    return err; | 
