From 419d43f6fe8379eae87eb1e7509557babcdd24fe Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Tue, 30 Aug 2016 20:52:14 -0400 Subject: [PATCH] pwmc: Add --status-state. --- doc/pwmc.1.in | 4 ++++ src/pwmc.c | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/doc/pwmc.1.in b/doc/pwmc.1.in index 8ec6d28c..ef75b663 100644 --- a/doc/pwmc.1.in +++ b/doc/pwmc.1.in @@ -308,6 +308,10 @@ The default is .B KEEPALIVE,STATE,GPGME,PASSPHRASE_INFO,PASSPHRASE_HINT. .TP +.I "\--status-state +Enable receiving of client STATE status messages. + +.TP .I "\--quiet" Do not show informational messages from pwmc. Implies --no-status. diff --git a/src/pwmc.c b/src/pwmc.c index 65877b83..8a550798 100644 --- a/src/pwmc.c +++ b/src/pwmc.c @@ -87,7 +87,7 @@ static int interactive; #include "mem.h" -#define DEFAULT_STATUS_IGNORE "KEEPALIVE,STATE,GPGME,PASSPHRASE_INFO,PASSPHRASE_HINT" +#define DEFAULT_STATUS_IGNORE "KEEPALIVE,GPGME,PASSPHRASE_INFO,PASSPHRASE_HINT" #define DEFAULT_PIN_TIMEOUT 30 #define DEFAULT_PIN_TRIES 3 #define FINISH(rc) (gpg_err_source(rc) == GPG_ERR_SOURCE_UNKNOWN) \ @@ -271,6 +271,8 @@ usage (const char *pn, int status) " use conventional encryption with optional signer(s) for new files\n" " --no-status\n" " disable showing of status messages from the server\n" + " --status-state\n" + " enable receiving of client STATE status messages\n" " --status-fd \n" " redirect status messages to the specified file descriptor\n" " --status-ignore \n" @@ -1851,6 +1853,7 @@ int main (int argc, char *argv[]) { int connected = 0; + int status_state = 0; gpg_error_t rc; int opt; char command[ASSUAN_LINELENGTH], *p = NULL; @@ -1915,7 +1918,7 @@ main (int argc, char *argv[]) OPT_SAVE, OPT_OUTPUT_FD, OPT_INQUIRE, OPT_INQUIRE_FD, OPT_INQUIRE_FILE, OPT_INQUIRE_LINE, OPT_NO_STATUS, OPT_STATUS_IGNORE, OPT_STATUSFD, OPT_NAME, OPT_VERSION, OPT_HELP, OPT_KEYID, OPT_SIGN_KEYID, OPT_SYMMETRIC, - OPT_KEYPARAMS, OPT_NO_PINENTRY, OPT_QUIET, + OPT_KEYPARAMS, OPT_NO_PINENTRY, OPT_QUIET, OPT_STATUS_STATE, #ifdef HAVE_LIBREADLINE OPT_NO_INTERACTIVE, #endif @@ -1977,6 +1980,7 @@ main (int argc, char *argv[]) {"key-params", 1, 0, 0}, {"no-pinentry", 0, 0, 0}, {"quiet", 0, 0, 0}, + {"status-state", 0, 0, 0}, #ifdef HAVE_LIBREADLINE {"no-interactive", 0, 0}, #endif @@ -2187,6 +2191,9 @@ main (int argc, char *argv[]) quiet = 1; show_status = 0; break; + case OPT_STATUS_STATE: + status_state = 1; + break; case OPT_NO_PINENTRY: no_pinentry = 1; break; @@ -2382,6 +2389,13 @@ main (int argc, char *argv[]) goto done; } + if (status_state) + { + rc = pwmd_command (pwm, NULL, NULL, NULL, NULL, "OPTION CLIENT-STATE=1"); + if (rc) + goto done; + } + if (lock_on_open) { rc = pwmd_setopt (pwm, PWMD_OPTION_LOCK_ON_OPEN, 1); -- 2.11.4.GIT