aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias-Christian Ott <ott@enolink.de>2008-06-15 09:19:22 +0200
committerMatthias-Christian Ott <ott@enolink.de>2008-06-15 09:19:22 +0200
commit3cb67937811b34fcc600b4eb96bd8fdd392ecab4 (patch)
tree4bd1cce29b0df1050754bac16a18b978a426c21e
parentcf147ae9da0221123596b749d4742d06f0ea643b (diff)
downloadst-3cb67937811b34fcc600b4eb96bd8fdd392ecab4.tar.gz
st-3cb67937811b34fcc600b4eb96bd8fdd392ecab4.tar.bz2
correct buffering
-rw-r--r--std.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/std.c b/std.c
index 5e19245..b0142fe 100644
--- 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;
}