diff options
author | NIIBE Yutaka <[email protected]> | 2020-03-13 06:59:14 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2020-04-02 05:11:52 +0000 |
commit | 20a5cc93b572a2118c9c833dadb10fdd76b2bc05 (patch) | |
tree | 9f826a25f4bfa39aa7865579cdf0fb169f1f59c1 | |
parent | Add flags in server_local_s. (diff) | |
download | gnupg-20a5cc93b572a2118c9c833dadb10fdd76b2bc05.tar.gz gnupg-20a5cc93b572a2118c9c833dadb10fdd76b2bc05.zip |
rough sketch.
Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r-- | scd/command.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/scd/command.c b/scd/command.c index 0a34312f5..d38182cce 100644 --- a/scd/command.c +++ b/scd/command.c @@ -2163,6 +2163,27 @@ cmd_list_device (assuan_context_t ctx, char *line) if ((err = open_card (ctrl))) return err; + if (watch) + { + ctrl->server_local->watching_status = 1; + while (1) + { + sigset_t sigmask; + int sig; + + /* FIXME: sigwait OK?, what about Windows? */ + sigemptyset (&sigmask); + sigaddset (&sigmask, SIGCONT); + npth_sigwait (&sigmask, &sig); + /**/ + if (ctrl->server_local->card_removed) + { + ctrl->server_local->watching_status = 0; + return 0; + } + } + } + /* XXX: Actively try to open devices available. */ return gpg_error (GPG_ERR_NOT_FOUND); return 0; @@ -2729,6 +2750,9 @@ send_client_notifications (card_t card, int removal) card_unref_locked (card); } + if (sl->watching_status) + assuan_write_status (sl->assuan_ctx, "FIXME: change", "something"); + if (!sl->event_signal || !sl->assuan_ctx) continue; |