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.
This commit is contained in:
Daiki Ueno 2015-11-09 13:13:50 +09:00 committed by Werner Koch
parent 3b6e9a3d0a
commit 67d7f7a938
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B

View File

@ -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;
}