diff options
-rw-r--r-- | pinentry-dmenu.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/pinentry-dmenu.c b/pinentry-dmenu.c index f17c13d..1e41f68 100644 --- a/pinentry-dmenu.c +++ b/pinentry-dmenu.c @@ -583,7 +583,7 @@ catchsig(int sig) { } } -static int +static void password(void) { winmode = WinPin; @@ -600,27 +600,26 @@ password(void) { return 0; } - pinentry->repeat_okay = 1; + if (pinentry->canceled) { + pinentry->result = -1; + return; } - return (pinentry->canceled) ? -1 : 1; + pinentry->result = strlen(pinentry->pin); } -static int +static void confirm(void) { winmode = WinConfirm; sel = Nothing; - run(); - - return sel != No; + pinentry->result = sel != No; } static int cmdhandler(pinentry_t received_pinentry) { struct sigaction sa; XWindowAttributes wa; - int ret; pinentry = received_pinentry; @@ -655,14 +654,14 @@ cmdhandler(pinentry_t received_pinentry) { setup(); if (pinentry->pin) { - ret = password(); + password(); } else { - ret = confirm(); + confirm(); } cleanup(); - return ret; + return pinentry->result; } pinentry_cmd_handler_t pinentry_cmd_handler = cmdhandler; |