mirror of
git://git.gnupg.org/gnupg.git
synced 2025-02-07 17:33:02 +01:00
scd: More fix with PC/SC for Windows.
* scd/apdu.c (pcsc_get_status): Return status based on CURRENT_STATUS. Add debug log. -- GnuPG-bug-id: 3825 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
f8b8b6aac2
commit
1e27c0e04c
36
scd/apdu.c
36
scd/apdu.c
@ -667,27 +667,29 @@ pcsc_get_status (int slot, unsigned int *status, int on_wire)
|
|||||||
return pcsc_error_to_sw (err);
|
return pcsc_error_to_sw (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
reader_table[slot].pcsc.current_state =
|
if ((rdrstates[0].event_state & PCSC_STATE_CHANGED))
|
||||||
(rdrstates[0].event_state & ~PCSC_STATE_CHANGED);
|
reader_table[slot].pcsc.current_state =
|
||||||
|
(rdrstates[0].event_state & ~PCSC_STATE_CHANGED);
|
||||||
|
|
||||||
/* log_debug */
|
if (DBG_CARD_IO)
|
||||||
/* ("pcsc_get_status_change: %s%s%s%s%s%s%s%s%s%s\n", */
|
log_debug
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_IGNORE)? " ignore":"", */
|
("pcsc_get_status_change: %s%s%s%s%s%s%s%s%s%s\n",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_CHANGED)? " changed":"", */
|
(rdrstates[0].event_state & PCSC_STATE_IGNORE)? " ignore":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_UNKNOWN)? " unknown":"", */
|
(rdrstates[0].event_state & PCSC_STATE_CHANGED)? " changed":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_UNAVAILABLE)?" unavail":"", */
|
(rdrstates[0].event_state & PCSC_STATE_UNKNOWN)? " unknown":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_EMPTY)? " empty":"", */
|
(rdrstates[0].event_state & PCSC_STATE_UNAVAILABLE)?" unavail":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_PRESENT)? " present":"", */
|
(rdrstates[0].event_state & PCSC_STATE_EMPTY)? " empty":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_ATRMATCH)? " atr":"", */
|
(rdrstates[0].event_state & PCSC_STATE_PRESENT)? " present":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_EXCLUSIVE)? " excl":"", */
|
(rdrstates[0].event_state & PCSC_STATE_ATRMATCH)? " atr":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_INUSE)? " unuse":"", */
|
(rdrstates[0].event_state & PCSC_STATE_EXCLUSIVE)? " excl":"",
|
||||||
/* (rdrstates[0].event_state & PCSC_STATE_MUTE)? " mute":"" ); */
|
(rdrstates[0].event_state & PCSC_STATE_INUSE)? " unuse":"",
|
||||||
|
(rdrstates[0].event_state & PCSC_STATE_MUTE)? " mute":"" );
|
||||||
|
|
||||||
*status = 0;
|
*status = 0;
|
||||||
if ( (rdrstates[0].event_state & PCSC_STATE_PRESENT) )
|
if ( (reader_table[slot].pcsc.current_state & PCSC_STATE_PRESENT) )
|
||||||
{
|
{
|
||||||
*status |= APDU_CARD_PRESENT;
|
*status |= APDU_CARD_PRESENT;
|
||||||
if ( !(rdrstates[0].event_state & PCSC_STATE_MUTE) )
|
if ( !(reader_table[slot].pcsc.current_state & PCSC_STATE_MUTE) )
|
||||||
*status |= APDU_CARD_ACTIVE;
|
*status |= APDU_CARD_ACTIVE;
|
||||||
}
|
}
|
||||||
#ifndef HAVE_W32_SYSTEM
|
#ifndef HAVE_W32_SYSTEM
|
||||||
@ -696,7 +698,7 @@ pcsc_get_status (int slot, unsigned int *status, int on_wire)
|
|||||||
mode. */
|
mode. */
|
||||||
if ( (*status & (APDU_CARD_PRESENT|APDU_CARD_ACTIVE))
|
if ( (*status & (APDU_CARD_PRESENT|APDU_CARD_ACTIVE))
|
||||||
== (APDU_CARD_PRESENT|APDU_CARD_ACTIVE)
|
== (APDU_CARD_PRESENT|APDU_CARD_ACTIVE)
|
||||||
&& !(rdrstates[0].event_state & PCSC_STATE_INUSE) )
|
&& !(reader_table[slot].pcsc.current_state & PCSC_STATE_INUSE) )
|
||||||
*status |= APDU_CARD_USABLE;
|
*status |= APDU_CARD_USABLE;
|
||||||
#else
|
#else
|
||||||
/* Some winscard drivers may set EXCLUSIVE and INUSE at the same
|
/* Some winscard drivers may set EXCLUSIVE and INUSE at the same
|
||||||
|
Loading…
x
Reference in New Issue
Block a user