commit 3cb67937811b34fcc600b4eb96bd8fdd392ecab4
parent cf147ae9da0221123596b749d4742d06f0ea643b
Author: Matthias-Christian Ott <ott@enolink.de>
Date: Sun, 15 Jun 2008 09:19:22 +0200
correct buffering
Diffstat:
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;
}