From 682a9649bd0371d7c1554ecbd38954dc0b9299af Mon Sep 17 00:00:00 2001 From: zavok Date: Wed, 2 Dec 2015 23:20:29 +0300 Subject: [PATCH] bugfix, you can bring window up more than once now --- BUGS | 2 +- drw.c | 6 ++++-- spine.c | 35 ++++++++++++++++++----------------- spinetest | 8 ++++++-- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/BUGS b/BUGS index 0936c92..fcf4580 100644 --- 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 index 0423873..1d911e4 100644 --- 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 index f33f315..0466985 100644 --- 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 index b9fffc8..577b278 100755 --- 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