st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 426887ccec8577ee33d1fb44f258d6a70a2eddf1
parent 58a57a23051deba7c77901c9971d839a0db05db0
Author: Christoph Lohmann <20h@r-36.net>
Date:   Sun, 16 Sep 2012 20:43:51 +0200

Applying a shortening proposal for the run loop of k0ga.

Diffstat:
Mst.c | 19++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/st.c b/st.c
@@ -2329,13 +2329,13 @@ run(void) {
     XEvent ev;
     fd_set rfd;
     int xfd = XConnectionNumber(xw.dpy), i;
-    struct timeval drawtimeout;
+    struct timeval drawtimeout, *tv = NULL;
 
-    for(;;) {
+    for(i = 0;; i++) {
         FD_ZERO(&rfd);
         FD_SET(cmdfd, &rfd);
         FD_SET(xfd, &rfd);
-        if(select(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, NULL) < 0) {
+        if(select(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, tv) < 0) {
             if(errno == EINTR)
                 continue;
             die("select failed: %s\n", SERRNO);
@@ -2345,23 +2345,20 @@ run(void) {
          * Stop after a certain number of reads so the user does not
          * feel like the system is stuttering.
          */
-        for(i = 0; i < 1000 && FD_ISSET(cmdfd, &rfd); i++) {
+        if(i < 1000 && FD_ISSET(cmdfd, &rfd)) {
             ttyread();
 
-            FD_ZERO(&rfd);
-            FD_SET(cmdfd, &rfd);
             /*
              * Just wait a bit so it isn't disturbing the
              * user and the system is able to write something.
              */
             drawtimeout.tv_sec = 0;
             drawtimeout.tv_usec = 5;
-            if(select(cmdfd+1, &rfd, NULL, NULL, &drawtimeout) < 0) {
-                if(errno == EINTR)
-                    continue;
-                die("select failed: %s\n", SERRNO);
-            }
+            tv = &drawtimeout;
+            continue;
         }
+        i = 0;
+        tv = NULL;
 
         while(XPending(xw.dpy)) {
             XNextEvent(xw.dpy, &ev);