X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=main.c;h=6da3ccd57495ed2a2eef005fb205793dd9da28d7;hb=0ff80653d3c85715966de3c1fe76a8927ed8133d;hp=d566c9e3055ae782b3bf5a9a901b86fbcecbd480;hpb=a635743c6dd8e945bbca6b5799dd00c86fe847e6;p=dwm.git diff --git a/main.c b/main.c index d566c9e..6da3ccd 100644 --- a/main.c +++ b/main.c @@ -62,25 +62,6 @@ scan() XFree(wins); } -static int -win_property(Window w, Atom a, Atom t, long l, unsigned char **prop) -{ - int status, format; - unsigned long res, extra; - Atom real; - - status = XGetWindowProperty(dpy, w, a, 0L, l, False, t, &real, &format, - &res, &extra, prop); - - if(status != Success || *prop == 0) { - return 0; - } - if(res == 0) { - free((void *) *prop); - } - return res; -} - /* * Startup Error handler to check if another window manager * is already running. @@ -111,21 +92,19 @@ Window root, barwin; int getproto(Window w) { - int protos = 0; - int i; - long res; - Atom *protocols; - - res = win_property(w, wmatom[WMProtocols], XA_ATOM, 20L, - ((unsigned char **)&protocols)); - if(res <= 0) { + int i, format, protos, status; + unsigned long extra, res; + Atom *protocols, real; + + protos = 0; + status = XGetWindowProperty(dpy, w, wmatom[WMProtocols], 0L, 20L, False, + XA_ATOM, &real, &format, &res, &extra, (unsigned char **)&protocols); + if(status != Success || protocols == 0) return protos; - } - for(i = 0; i < res; i++) { + for(i = 0; i < res; i++) if(protocols[i] == wmatom[WMDelete]) protos |= PROTODELWIN; - } - free((char *) protocols); + free(protocols); return protos; } @@ -241,7 +220,7 @@ main(int argc, char *argv[]) for(ntags = 0; tags[ntags]; ntags++); seltag = emallocz(sizeof(Bool) * ntags); - seltag[DEFTAG] = True; + seltag[0] = True; /* style */ dc.bg = getcolor(BGCOLOR); @@ -286,11 +265,9 @@ main(int argc, char *argv[]) FD_SET(STDIN_FILENO, &rd); FD_SET(xfd, &rd); i = select(xfd + 1, &rd, NULL, NULL, NULL); - if(i == -1 && errno == EINTR) + if((i == -1) && (errno == EINTR)) continue; - if(i < 0) - eprint("select failed\n"); - else if(i > 0) { + if(i > 0) { if(readin && FD_ISSET(STDIN_FILENO, &rd)) { readin = NULL != fgets(stext, sizeof(stext), stdin); if(readin) @@ -300,6 +277,8 @@ main(int argc, char *argv[]) drawstatus(); } } + else if(i < 0) + eprint("select failed\n"); procevent(); } cleanup();