diff --git a/src/libopensc/card-gpk.c b/src/libopensc/card-gpk.c index 03ca693e..2d602788 100644 --- a/src/libopensc/card-gpk.c +++ b/src/libopensc/card-gpk.c @@ -1685,7 +1685,6 @@ gpk_card_ctl(struct sc_card *card, unsigned long cmd, void *ptr) *(int *) ptr = DRVDATA(card)->locked; return 0; } - error(card->ctx, "card_ctl command %u not supported\n", cmd); return SC_ERROR_NOT_SUPPORTED; } diff --git a/src/libopensc/card.c b/src/libopensc/card.c index 6d535805..2ed532ad 100644 --- a/src/libopensc/card.c +++ b/src/libopensc/card.c @@ -745,13 +745,18 @@ inline int sc_card_valid(const struct sc_card *card) { int sc_card_ctl(struct sc_card *card, unsigned long cmd, void *args) { - int r; + int r = SC_ERROR_NOT_SUPPORTED; assert(card != NULL); SC_FUNC_CALLED(card->ctx, 2); - if (card->ops->card_ctl == NULL) - SC_FUNC_RETURN(card->ctx, 2, SC_ERROR_NOT_SUPPORTED); - r = card->ops->card_ctl(card, cmd, args); + if (card->ops->card_ctl != NULL) + r = card->ops->card_ctl(card, cmd, args); + + /* suppress "not supported" error messages */ + if (r == SC_ERROR_NOT_SUPPORTED) { + debug(card->ctx, "card_ctl(%lu) not supported\n", cmd); + return r; + } SC_FUNC_RETURN(card->ctx, 2, r); }