fancier output for print_avail
This commit is contained in:
@@ -99,18 +99,30 @@ void _bin_log(sc_context_t *ctx, int type, const char *file, int line,
|
|||||||
|
|
||||||
static int list_readers(sc_context_t *ctx)
|
static int list_readers(sc_context_t *ctx)
|
||||||
{
|
{
|
||||||
unsigned int i, rcount = sc_ctx_get_reader_count(ctx);
|
char card_atr[0x3e];
|
||||||
|
sc_card_t *card;
|
||||||
|
sc_reader_t *reader;
|
||||||
|
size_t i, rcount = sc_ctx_get_reader_count(ctx);
|
||||||
|
|
||||||
if (rcount == 0) {
|
if (rcount == 0) {
|
||||||
printf("No smart card readers found.\n");
|
printf("No smart card readers found.\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
printf("Readers known about:\n");
|
printf("%-4s %-7s %s\n", "Nr.", "Driver", "Smart Card Reader");
|
||||||
printf("Nr. Driver Name\n");
|
|
||||||
for (i = 0; i < rcount; i++) {
|
for (i = 0; i < rcount; i++) {
|
||||||
sc_reader_t *screader = sc_ctx_get_reader(ctx, i);
|
reader = sc_ctx_get_reader(ctx, i);
|
||||||
printf("%-7d%-11s%s\n", i, screader->driver->short_name,
|
memset(card_atr, '\0', sizeof card_atr);
|
||||||
screader->name);
|
if (sc_detect_card_presence(reader) & SC_READER_CARD_PRESENT) {
|
||||||
|
if (sc_connect_card(reader, &card) == SC_SUCCESS) {
|
||||||
|
sc_bin_to_hex(card->atr.value, card->atr.len,
|
||||||
|
card_atr, sizeof card_atr, ':');
|
||||||
|
}
|
||||||
|
sc_disconnect_card(card);
|
||||||
|
} else {
|
||||||
|
strncpy(card_atr, "[no card present]", sizeof card_atr);
|
||||||
|
}
|
||||||
|
printf("%-4d %-7s %s\n", i, reader->driver->short_name, reader->name);
|
||||||
|
printf(" ATR: %s\n", card_atr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user