tcorrect buffering - st - [fork] customized build of st, the simple terminal | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3cb67937811b34fcc600b4eb96bd8fdd392ecab4 | |
parent cf147ae9da0221123596b749d4742d06f0ea643b | |
Author: Matthias-Christian Ott <[email protected]> | |
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 | |
t@@ -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 | |
t@@ -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; | |
} | |
} | |
t@@ -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 | |
t@@ -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; | |
} |