diff options
| author | Daiki Ueno <[email protected]> | 2015-11-09 04:13:50 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2015-12-04 15:35:37 +0000 | 
| commit | 67d7f7a9383763b01daf877c846bf3e32f647fa5 (patch) | |
| tree | eabf8193be3a7d840eb862ff1a79a83bf670b615 | |
| parent | doc: Fix minor errors (diff) | |
| download | gpgme-67d7f7a9383763b01daf877c846bf3e32f647fa5.tar.gz gpgme-67d7f7a9383763b01daf877c846bf3e32f647fa5.zip | |
Return on user cancellation of delete operation
* src/delete.c (delete_status_handler): Return on ERROR status, if the
error location is set to "delete_key.secret" and the code is either
CANCELED or FULLY_CANCELED, which indicates a situation that the user
selected "No" on the confirmation dialog.
Diffstat (limited to '')
| -rw-r--r-- | src/delete.c | 32 | 
1 files changed, 32 insertions, 0 deletions
| diff --git a/src/delete.c b/src/delete.c index 37e54f89..d20a5bf6 100644 --- a/src/delete.c +++ b/src/delete.c @@ -68,6 +68,38 @@ delete_status_handler (void *priv, gpgme_status_code_t code, char *args)  	  return gpg_error (GPG_ERR_GENERAL);  	}      } +  else if (code == GPGME_STATUS_ERROR) +    { +      /* Some error stati are informational, so we don't return an +         error code if we are not ready to process this status.  */ +      gpgme_error_t err; +      char *where = strchr (args, ' '); +      char *which; + +      if (where) +	{ +	  *where = '\0'; +	  which = where + 1; + +	  where = strchr (which, ' '); +	  if (where) +	    *where = '\0'; + +	  where = args; +	} +      else +	return trace_gpg_error (GPG_ERR_INV_ENGINE); + +      err = atoi (which); + +      if (!strcmp (where, "delete_key.secret") +	  && (gpg_err_code (err) == GPG_ERR_CANCELED +	      || gpg_err_code (err) == GPG_ERR_FULLY_CANCELED)) +	{ +	  /* This indicates a user cancellation on the confirmation dialog.  */ +	  return gpg_error (gpg_err_code (err)); +	} +    }    return 0;  } | 
