aboutsummaryrefslogtreecommitdiffstats
path: root/scd/command.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2017-01-18 06:19:38 +0000
committerNIIBE Yutaka <[email protected]>2017-01-18 06:19:38 +0000
commit8b1f24a29ebc7651437c01990215a55b1136dae0 (patch)
tree0993bc9774f78b0428143135806ec38a3004becf /scd/command.c
parentbuild: Handle packages with dashes in --find-version. (diff)
downloadgnupg-8b1f24a29ebc7651437c01990215a55b1136dae0.tar.gz
gnupg-8b1f24a29ebc7651437c01990215a55b1136dae0.zip
scd: Add "card_list" sub command for GETINFO.
* scd/app.c (app_send_card_list): New. * scd/command.c (cmd_getinfo): Fix "status" sub command. Add "card_list" sub command. Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/command.c')
-rw-r--r--scd/command.c18
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;