pinentry-dmenu

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

Commit: 682a9649bd0371d7c1554ecbd38954dc0b9299af
Parent: 2df401ad8c93e0fafb81c1832fc99a4be8b4ac4f
Author: zavok
Date:   Wed,  2 Dec 2015 23:20:29 +0300

bugfix, you can bring window up more than once now

Diffstat:
MBUGS | 2+-
Mdrw.c | 6++++--
Mspine.c | 35++++++++++++++++++-----------------
Mspinetest | 9++++++---
4 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/BUGS b/BUGS @@ -1 +1 @@ -* Xorg error when trying to intiate promptwin second time in one session +* Xorg error when trying to intiate promptwin second time in one session - somewhat fixed, but needs further inspection diff --git a/drw.c b/drw.c @@ -88,9 +88,11 @@ void drw_free(Drw *drw) { size_t i; - for (i = 0; i < drw->fontcount; i++) { + /* This was breaking the program when I tried to bring window up second time + Too lazy to dig deeper right now,*\ + \*or (i = 0; i < drw->fontcount; i++) { drw_font_free(drw->fonts[i]); - } + }*/ XFreePixmap(drw->dpy, drw->drawable); XFreeGC(drw->dpy, drw->gc); free(drw); diff --git a/spine.c b/spine.c @@ -189,7 +189,7 @@ cleanup(void) { } -int +static int keypress(XKeyEvent *ev) { char buf[32]; int len; @@ -301,19 +301,6 @@ run(void) { void promptwin(void) { - if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) - fputs("warning: no locale support\n", stderr); - if(!(dpy = XOpenDisplay(pinentry->display))) /*NULL was here*/ - die("dmenu: cannot open display\n"); - screen = DefaultScreen(dpy); - root = RootWindow(dpy, screen); - sw = DisplayWidth(dpy, screen); - sh = DisplayHeight(dpy, screen); - drw = drw_create(dpy, screen, root, sw, sh); - drw_load_fonts(drw, fonts, LENGTH(fonts)); - if(!drw->fontcount) - die("No fonts could be loaded.\n"); - drw_setscheme(drw, &scheme[SchemeNorm]); grabkeyboard(); setup(); run(); @@ -346,12 +333,26 @@ confirm(void) { return confirmed; } -int +static int spinecmdhandler (pinentry_t recieved_pinentry) { pinentry = recieved_pinentry; + + if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) + fputs("warning: no locale support\n", stderr); + if(!(dpy = XOpenDisplay(pinentry->display))) /*NULL was here*/ + die("dmenu: cannot open display\n"); + screen = DefaultScreen(dpy); + root = RootWindow(dpy, screen); + sw = DisplayWidth(dpy, screen); + sh = DisplayHeight(dpy, screen); + drw = drw_create(dpy, screen, root, sw, sh); + drw_load_fonts(drw, fonts, LENGTH(fonts)); + if(!drw->fontcount) + die("No fonts could be loaded.\n"); + drw_setscheme(drw, &scheme[SchemeNorm]); + if (pinentry->timeout){ struct sigaction sa; - memset(&sa, 0, sizeof(sa)); sa.sa_handler = catchsig; sigaction(SIGALRM, &sa, NULL); @@ -361,7 +362,6 @@ spinecmdhandler (pinentry_t recieved_pinentry) { return password(); else return confirm(); - return -1; } @@ -369,6 +369,7 @@ pinentry_cmd_handler_t pinentry_cmd_handler = spinecmdhandler; int main(int argc, char *argv[]){ + pinentry_init("spine"); pinentry_parse_opts(argc, argv); if (pinentry_loop()) diff --git a/spinetest b/spinetest @@ -1,3 +1,7 @@ #!/bin/sh -echo "GETPIN -BYE" | ./spine -\ No newline at end of file +echo "SETDESC testing spine, type whatever +SETPROMPT whatever: +GETPIN +SETDESC testing confirmation +confirm +BYE" | ./spine