Fix patch [4709] for cardmod until build in one static dll

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4808 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
flc 2010-10-15 08:07:34 +00:00
parent a569bf9646
commit 3076fe265c
3 changed files with 13 additions and 10 deletions

View File

@ -415,8 +415,8 @@ app tokend {
}
app cardmod {
#allow only cardmodule pcsc reader for minidriver (mandatory)
# FIXME cardmod pcsc hack is now broken.
# cardmod app name use special pcsc reader subset
# fix options for this reader driver here.
reader_driver cardmod {
# Enable pinpad if detected (PC/SC v2.0.2 Part 10)

View File

@ -637,6 +637,11 @@ int sc_context_create(sc_context_t **ctx_out, const sc_context_param_t *parm)
#ifdef ENABLE_PCSC
ctx->reader_driver = sc_get_pcsc_driver();
#ifdef ENABLE_CARDMOD
if(strcmp(ctx->app_name, "cardmod") == 0) {
ctx->reader_driver = sc_get_cardmod_driver();
}
#endif
#elif ENABLE_CTAPI
ctx->reader_driver = sc_get_ctapi_driver();
#elif ENABLE_OPENCT

View File

@ -1540,14 +1540,12 @@ static struct sc_reader_driver cardmod_drv = {
0, 0, NULL
};
static int cardmod_init(sc_context_t *ctx, void **reader_data)
static int cardmod_init(sc_context_t *ctx)
{
struct pcsc_global_private_data *gpriv;
scconf_block *conf_block = NULL;
int ret = SC_ERROR_INTERNAL;
*reader_data = NULL;
gpriv = calloc(1, sizeof(struct pcsc_global_private_data));
if (gpriv == NULL) {
ret = SC_ERROR_OUT_OF_MEMORY;
@ -1600,7 +1598,7 @@ static int cardmod_init(sc_context_t *ctx, void **reader_data)
goto out;
}
*reader_data = gpriv;
ctx->reader_drv_data = gpriv;
gpriv = NULL;
ret = SC_SUCCESS;
@ -1614,9 +1612,9 @@ out:
return ret;
}
static int cardmod_finish(sc_context_t *ctx, void *prv_data)
static int cardmod_finish(sc_context_t *ctx)
{
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) prv_data;
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) ctx->reader_drv_data;
if (gpriv) {
if (gpriv->dlhandle != NULL)
@ -1627,12 +1625,12 @@ static int cardmod_finish(sc_context_t *ctx, void *prv_data)
return SC_SUCCESS;
}
static int cardmod_detect_readers(sc_context_t *ctx, void *prv_data)
static int cardmod_detect_readers(sc_context_t *ctx)
{
SCARDHANDLE card_handle;
u8 feature_buf[256], rbuf[SC_MAX_APDU_BUFFER_SIZE];
PCSC_TLV_STRUCTURE *pcsc_tlv;
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) prv_data;
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) ctx->reader_drv_data;
LONG rv;
char reader_name[128];
DWORD rcount, feature_len, display_ioctl, reader_name_size = sizeof(reader_name);