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:
martin 2011-01-02 12:55:03 +00:00
parent 16726a55b5
commit f10d2908a5
1 changed files with 19 additions and 1 deletions

View File

@ -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;
}