611
612
613
614
615
616
617
618
619
620
621
622
623
624
|
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
|
+
|
if (cackey_slots[idx].pcsc_card_connected) {
CACKEY_DEBUG_PRINTF("SCardDisconnect(%lu) called", (unsigned long) idx);
SCardDisconnect(cackey_slots[idx].pcsc_card, SCARD_LEAVE_CARD);
}
cackey_slots[idx].pcsc_card_connected = 0;
cackey_slots[idx].transaction_depth = 0;
}
CACKEY_DEBUG_PRINTF("Returning");
return;
}
|
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
|
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
|
+
|
for (idx = 0; idx < (sizeof(cackey_sessions) / sizeof(cackey_sessions[0])); idx++) {
cackey_sessions[idx].active = 0;
}
for (idx = 0; idx < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); idx++) {
cackey_slots[idx].active = 0;
cackey_slots[idx].pcsc_reader = NULL;
cackey_slots[idx].transaction_depth = 0;
}
cackey_initialized = 1;
if (!cackey_biglock_init) {
mutex_init_ret = cackey_mutex_create(&cackey_biglock);
|
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
|
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
|
+
|
CACKEY_DEBUG_PRINTF("Found reader: %s", pcsc_readers);
/* Only update the list of slots if we are actually being supply the slot information */
if (pSlotList) {
cackey_slots[currslot].active = 1;
cackey_slots[currslot].pcsc_reader = strdup(pcsc_readers);
cackey_slots[currslot].pcsc_card_connected = 0;
cackey_slots[currslot].transaction_depth = 0;
}
currslot++;
pcsc_readers += curr_reader_len + 1;
}
if (currslot > 0) {
|