opensc-tool: combined with --verbose, --list-readers will show tha ATR and name of the card, together with extra reader flags
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5017 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
16726a55b5
commit
f10d2908a5
|
@ -263,9 +263,27 @@ static int list_readers(void)
|
|||
printf("Nr. Card Features Name\n");
|
||||
for (i = 0; i < rcount; i++) {
|
||||
sc_reader_t *reader = sc_ctx_get_reader(ctx, i);
|
||||
printf("%-5d%-6s%-10s%s\n", i, sc_detect_card_presence(reader) & SC_READER_CARD_PRESENT ? "Yes":"No",
|
||||
int state = sc_detect_card_presence(reader);
|
||||
printf("%-5d%-6s%-10s%s\n", i, state & SC_READER_CARD_PRESENT ? "Yes":"No",
|
||||
reader->capabilities & SC_READER_CAP_PIN_PAD ? "PIN pad":"",
|
||||
reader->name);
|
||||
if (state & SC_READER_CARD_PRESENT && verbose) {
|
||||
struct sc_card *card;
|
||||
int r;
|
||||
char tmp[SC_MAX_ATR_SIZE*3];
|
||||
sc_bin_to_hex(reader->atr, reader->atr_len, tmp, sizeof(tmp) - 1, ':');
|
||||
|
||||
if (state & SC_READER_CARD_EXCLUSIVE)
|
||||
printf(" %s [EXCLUSIVE]\n", tmp);
|
||||
else {
|
||||
if ((r = sc_connect_card(reader, &card)) != SC_SUCCESS) {
|
||||
fprintf(stderr, " failed: %s\n", sc_strerror(r));
|
||||
} else {
|
||||
printf(" %s %s %s\n", tmp, card->name, state & SC_READER_CARD_INUSE ? "[IN USE]" : "");
|
||||
sc_disconnect_card(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue