diff options
Diffstat (limited to 'scd/command.c')
-rw-r--r-- | scd/command.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/scd/command.c b/scd/command.c index dc854e35d..cad8c6e39 100644 --- a/scd/command.c +++ b/scd/command.c @@ -1392,7 +1392,10 @@ static const char hlp_getinfo[] = "\n" "app_list - Return a list of supported applications. One\n" " application per line, fields delimited by colons,\n" - " first field is the name."; + " first field is the name.\n" + "\n" + "card_list - Return a list of serial numbers of active cards,\n" + " using a status response."; static gpg_error_t cmd_getinfo (assuan_context_t ctx, char *line) { @@ -1422,10 +1425,11 @@ cmd_getinfo (assuan_context_t ctx, char *line) else if (!strcmp (line, "status")) { ctrl_t ctrl = assuan_get_pointer (ctx); - app_t app = ctrl->app_ctx; - char flag = 'r'; + char flag; - if (!ctrl->server_local->card_removed && app) + if (open_card (ctrl)) + flag = 'r'; + else flag = 'u'; rc = assuan_send_data (ctx, &flag, 1); @@ -1455,6 +1459,12 @@ cmd_getinfo (assuan_context_t ctx, char *line) rc = 0; xfree (s); } + else if (!strcmp (line, "card_list")) + { + ctrl_t ctrl = assuan_get_pointer (ctx); + + app_send_card_list (ctrl); + } else rc = set_error (GPG_ERR_ASS_PARAMETER, "unknown value for WHAT"); return rc; |