mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
Fix detection of card removal and insertion.
* scd/apdu.c (apdu_connect): Return status codes for no card available and inactive card. * scd/command.c (TEST_CARD_REMOVAL): Also test for GPG_ERR_CARD_RESET. (open_card): Map apdu_connect status to GPG_ERR_CARD_RESET.
This commit is contained in:
parent
ea0a21410b
commit
cd29dc0f1c
2 changed files with 18 additions and 5 deletions
|
@ -60,6 +60,7 @@
|
|||
int _r = (r); \
|
||||
if (gpg_err_code (_r) == GPG_ERR_CARD_NOT_PRESENT \
|
||||
|| gpg_err_code (_r) == GPG_ERR_CARD_REMOVED \
|
||||
|| gpg_err_code (_r) == GPG_ERR_CARD_RESET \
|
||||
|| gpg_err_code (_r) == GPG_ERR_ENODEV ) \
|
||||
update_card_removed ((c)->reader_slot, 1); \
|
||||
} while (0)
|
||||
|
@ -420,9 +421,8 @@ get_reader_slot (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* If the card has not yet been opened, do it. Note that this
|
||||
function returns an Assuan error, so don't map the error a second
|
||||
time. */
|
||||
|
||||
/* If the card has not yet been opened, do it. */
|
||||
static gpg_error_t
|
||||
open_card (ctrl_t ctrl, const char *apptype)
|
||||
{
|
||||
|
@ -477,6 +477,8 @@ open_card (ctrl_t ctrl, const char *apptype)
|
|||
{
|
||||
if (sw == SW_HOST_NO_CARD)
|
||||
err = gpg_error (GPG_ERR_CARD_NOT_PRESENT);
|
||||
else if (sw == SW_HOST_CARD_INACTIVE)
|
||||
err = gpg_error (GPG_ERR_CARD_RESET);
|
||||
else
|
||||
err = gpg_error (GPG_ERR_CARD);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue