commit 3cb67937811b34fcc600b4eb96bd8fdd392ecab4
parent cf147ae9da0221123596b749d4742d06f0ea643b
Author: Matthias-Christian Ott <ott@enolink.de>
Date:   Sun, 15 Jun 2008 09:19:22 +0200
correct buffering
Diffstat:
| M | std.c | | | 31 | ++++++++++++++++--------------- | 
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/std.c b/std.c
@@ -85,7 +85,7 @@ movea(int x, int y) {
 	y = MAX(y, lines);
 	cx = x;
 	cy = y;
-	cmd("s %d,%d", x, y);
+	cmd("seek(%d,%d)", x, y);
 }
 
 void
@@ -186,10 +186,10 @@ parseesc(void) {
 				case 0:
 				case 22:
 					if(bold)
-						cmd("b");
+						cmd("bold");
 				case 1:
 					if(!bold)
-						cmd("b");
+						cmd("bold");
 					break;
 				}
 			}
@@ -204,7 +204,7 @@ parseesc(void) {
 
 void
 scroll(int l) {
-	cmd("s %d, %d", cx, cy + l);
+	cmd("seek(%d,%d)", cx, cy + l);
 }
 
 void
@@ -279,17 +279,18 @@ main(int argc, char *argv[]) {
 		r = select(ptm + 1, &rfds, NULL, NULL, NULL);
 		if(r == -1)
 			eprintn("error, cannot select");
-		if(FD_ISSET(ptm, &rfds)) {
-			c = getch();
-			switch(c) {
-			case '\033':
-				parseesc();
-				break;
-			default:
-				putchar(c);
-			}
-			fflush(stdout);
-		}
+		if(FD_ISSET(ptm, &rfds))
+			do {
+				c = getch();
+				switch(c) {
+				case '\033':
+					parseesc();
+					break;
+				default:
+					putchar(c);
+				}
+				fflush(stdout);
+			} while(rbuf.i < rbuf.n);
 	}
 	return 0;
 }