# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 3cb67937811b34fcc600b4eb96bd8fdd392ecab4
    parent cf147ae9da0221123596b749d4742d06f0ea643b
    Author: Matthias-Christian Ott <ott@enolink.de>
    Date:   Sun, 15 Jun 2008 09:19:22 +0200

    correct buffering

    Diffstat:
    Mstd.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;
     }