should check ww_ob always
authorEdward Wang <edward@ucbvax.Berkeley.EDU>
Wed, 7 Mar 1984 05:49:03 +0000 (21:49 -0800)
committerEdward Wang <edward@ucbvax.Berkeley.EDU>
Wed, 7 Mar 1984 05:49:03 +0000 (21:49 -0800)
SCCS-vsn: usr.bin/window/wwiomux.c 3.9

usr/src/usr.bin/window/wwiomux.c

index 9a83051..6b1f8e8 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)wwiomux.c   3.8 84/03/03";
+static char *sccsid = "@(#)wwiomux.c   3.9 84/03/06";
 #endif
 
 #include "ww.h"
 #endif
 
 #include "ww.h"
@@ -60,14 +60,11 @@ loop:
 
        if (n < 0)
                wwnselecte++;
 
        if (n < 0)
                wwnselecte++;
-       else if (n == 0)
-               wwnselectz++;
        else {
        else {
-               char first_time = 1;
-               for (w = wwhead.ww_forw; w != &wwhead; w = w->ww_forw) {
-                       if (w->ww_pty < 0)
-                               continue;
-                       if (imask & 1 << w->ww_pty) {
+               if (n == 0)
+                       wwnselectz++;
+               for (w = wwhead.ww_forw; w != &wwhead; w = w->ww_forw)
+                       if (w->ww_pty >= 0 && imask & 1 << w->ww_pty) {
                                wwnwread++;
                                p = w->ww_obp + w->ww_obc;
                                if (p == w->ww_ob)
                                wwnwread++;
                                p = w->ww_obp + w->ww_obc;
                                if (p == w->ww_ob)
@@ -102,17 +99,17 @@ loop:
                                }
                                *p = c;
                        }
                                }
                                *p = c;
                        }
-                       if (first_time && w->ww_obc != 0 && !w->ww_stopped) {
-                               first_time = 0;
-                               n = wwwrite(w, w->ww_obp, w->ww_obc);
-                               if (w->ww_obc -= n)
-                                       w->ww_obp += n;
-                               else
-                                       w->ww_obp = w->ww_ob;
-                               if (wwinterrupt())
-                                       return;
-                       }
-               }
        }
        }
+       for (w = wwhead.ww_forw; w != &wwhead; w = w->ww_forw)
+               if (w->ww_pty >= 0 && w->ww_obc != 0 && !w->ww_stopped) {
+                       n = wwwrite(w, w->ww_obp, w->ww_obc);
+                       if (w->ww_obc -= n)
+                               w->ww_obp += n;
+                       else
+                               w->ww_obp = w->ww_ob;
+                       if (wwinterrupt())
+                               return;
+                       break;
+               }
        goto loop;
 }
        goto loop;
 }