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:
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