summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorAnselm R. Garbe <garbeam@wmii.de>2006-07-14 12:08:32 +0200
committerAnselm R. Garbe <garbeam@wmii.de>2006-07-14 12:08:32 +0200
commiteb756ee169ad0c94167ff41a9ab2712b348afe4f (patch)
tree8178d9656383549e553e4ac768e9808f41fcecd2 /main.c
parent0e5c8198bc5a69e87b0114b81d6569188828edfa (diff)
made stdin reader more robust
Diffstat (limited to 'main.c')
-rw-r--r--main.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/main.c b/main.c
index bfc63b16..0e851b3d 100644
--- a/main.c
+++ b/main.c
@@ -264,6 +264,10 @@ main(int argc, char *argv[])
XDefineCursor(dpy, barwin, cursor[CurNormal]);
XMapRaised(dpy, barwin);
+ dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
+ dc.gc = XCreateGC(dpy, root, 0, 0);
+ draw_bar();
+
issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
@@ -272,15 +276,12 @@ main(int argc, char *argv[])
XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
- dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
- dc.gc = XCreateGC(dpy, root, 0, 0);
-
strcpy(stext, "dwm-"VERSION);
scan_wins();
- draw_bar();
/* main event loop, reads status text from stdin as well */
while(running) {
+Mainloop:
FD_ZERO(&rd);
FD_SET(0, &rd);
FD_SET(ConnectionNumber(dpy), &rd);
@@ -298,8 +299,15 @@ main(int argc, char *argv[])
}
if(FD_ISSET(0, &rd)) {
i = n = 0;
- while((i = getchar()) != '\n' && n < sizeof(stext) - 1)
+ for(;;) {
+ if((i = getchar()) == EOF) {
+ stext[0] = 0;
+ goto Mainloop;
+ }
+ if(i == '\n' || n >= sizeof(stext) - 1)
+ break;
stext[n++] = i;
+ }
stext[n] = 0;
draw_bar();
}