From cd5aff8ea01fc37819c10a6bc543348d47a48c95 Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 14 Sep 2009 09:03:33 +0000 Subject: [PATCH] PC/SC: More return codes are handled. git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3726 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/libopensc/internal-winscard.h | 2 ++ src/libopensc/reader-pcsc.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/libopensc/internal-winscard.h b/src/libopensc/internal-winscard.h index e671817e..b7b0272d 100644 --- a/src/libopensc/internal-winscard.h +++ b/src/libopensc/internal-winscard.h @@ -49,6 +49,8 @@ typedef unsigned __int8 uint8_t; #define SCARD_E_INVALID_HANDLE 0x80100003 /**< The supplied handle was invalid. */ #define SCARD_E_TIMEOUT 0x8010000A /**< The user-specified timeout value has expired. */ #define SCARD_E_SHARING_VIOLATION 0x8010000B /**< The smart card cannot be accessed because of other connections outstanding. */ +#define SCARD_E_NO_SMARTCARD 0x8010000C /**< The operation requires a smart card, but no smart card is currently in the device. */ +#define SCARD_E_PROTO_MISMATCH 0x8010000F /**< The requested protocols are incompatible with the protocol currently in use with the smart card. */ #define SCARD_E_NOT_TRANSACTED 0x80100016 /**< An attempt was made to end a non-existent transaction. */ #define SCARD_E_READER_UNAVAILABLE 0x80100017 /**< The specified reader is not currently available for use. */ #define SCARD_E_NO_SERVICE 0x8010001D /**< The Smart card resource manager is not running. */ diff --git a/src/libopensc/reader-pcsc.c b/src/libopensc/reader-pcsc.c index b6abdbbf..6f2ba01d 100644 --- a/src/libopensc/reader-pcsc.c +++ b/src/libopensc/reader-pcsc.c @@ -113,6 +113,10 @@ static int pcsc_ret_to_error(long rv) case SCARD_E_NO_SERVICE: /* If the service is (auto)started, there could be readers later */ return SC_ERROR_NO_READERS_FOUND; + case SCARD_E_NO_SMARTCARD: + return SC_ERROR_CARD_NOT_PRESENT; + case SCARD_E_PROTO_MISMATCH: /* Should not happen */ + return SC_ERROR_READER; default: return SC_ERROR_UNKNOWN; }