pinentry-dmenu

a pinentry program based on dmenu
git clone anongit@rnpnr.xyz:pinentry-dmenu.git
Log | Files | Refs | Feed | README | LICENSE

Commit: baf9529e6d9737e5c37463d693f1764f830b0c3b
Parent: 51da5915b03d9b06936ac32f47287beb73d96973
Author: zavok
Date:   Mon, 23 Nov 2015 20:48:59 +0300

recieve prompt and description from gpg-agent

Diffstat:
Mconfig.h | 4++--
Mspine.c | 29++++++++++++++++-------------
2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/config.h b/config.h @@ -4,8 +4,8 @@ static const char *fonts[]={ "monospace:size=8" }; static char *secchar = "*"; -static char *description = NULL; -static char *prompt = "PIN:"; +/*static char *description = NULL; +static char *prompt = "PIN:";*/ static const char *normbgcolor = "#000000"; static const char *normfgcolor = "#ffffff"; static const char *selbgcolor = "#ff0000"; diff --git a/spine.c b/spine.c @@ -50,6 +50,8 @@ static int sw, sh; static int timed_out; +pinentry_t pinentry; + #include "config.h" void @@ -94,15 +96,15 @@ drawwin(void){ drw_setscheme(drw, &scheme[SchemeNorm]); drw_rect(drw, 0,0,mw,mh,True,1,1); - if (description && *description) { + if ((pinentry->description) && *(pinentry->description)) { drw_setscheme(drw, &scheme[SchemeSel]); - drw_text(drw, 0,0,mw,bh,description,0); + drw_text(drw, 0,0,mw,bh,pinentry->description,0); y+=bh; } - if (prompt && *prompt) { + if ((pinentry->prompt) && *(pinentry->prompt)) { drw_setscheme(drw, &scheme[SchemeSel]); - drw_text(drw, x, y, promptw, bh, prompt, 0); + drw_text(drw, x, y, promptw, bh, pinentry->prompt, 0); x += promptw; } @@ -142,11 +144,11 @@ setup(void){ clip = XInternAtom(dpy, "CLIPBOARD", False); utf8 = XInternAtom(dpy, "UTF8_STRING", False); bh = drw->fonts[0]->h + 2; - mh = (description && *description)? bh * 2 : bh; + mh = (pinentry->description && *(pinentry->description))? bh * 2 : bh; x = 0; y = topbar ? 0 : sh - mh; mw = sw; - promptw = (prompt && *prompt) ? TEXTW(prompt) : 0; + promptw = (pinentry->prompt && *(pinentry->prompt)) ? TEXTW(pinentry->prompt) : 0; inputw = mw-promptw; swa.override_redirect = True; swa.background_pixel = scheme[SchemeNorm].bg->pix; @@ -268,7 +270,7 @@ run(void) { } void -promptwin(pinentry_t pinentry) { +promptwin(void) { if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) fputs("warning: no locale support\n", stderr); if(!(dpy = XOpenDisplay(pinentry->display))) /*NULL was here*/ @@ -296,8 +298,8 @@ catchsig(int sig) } int -password (pinentry_t pinentry) { - promptwin(pinentry); +password (void) { + promptwin(); char *buf = secmem_malloc(strlen(text)); strcpy(buf, text); pinentry_setbuffer_use (pinentry, buf, 0); @@ -305,12 +307,13 @@ password (pinentry_t pinentry) { } int -confirm(pinentry_t pinentry) { +confirm(void) { return 1; } int -spinecmdhandler (pinentry_t pinentry) { +spinecmdhandler (pinentry_t recieved_pinentry) { + pinentry = recieved_pinentry; if (pinentry->timeout){ struct sigaction sa; @@ -320,9 +323,9 @@ spinecmdhandler (pinentry_t pinentry) { alarm(pinentry->timeout); } if (pinentry->pin) - return password(pinentry); + return password(); else - return confirm(pinentry); + return confirm(); return -1; }