diff options
| -rw-r--r-- | std.c | 26 | 
1 files changed, 19 insertions, 7 deletions
@@ -263,20 +263,32 @@ ungetch(int c) {  int  main(int argc, char *argv[]) { +	fd_set rfds; +	int r; +  	if(argc == 2 && !strcmp("-v", argv[1]))  		eprint("std-"VERSION", © 2008 Matthias-Christian Ott\n");  	else if(argc == 1)  		eprint("usage: st [-v]\n");  	getpty();  	shell(); +	FD_ZERO(&rfds); +	FD_SET(STDIN_FILENO, &rfds); +	FD_SET(ptm, &rfds);  	for(;;) { -		c = getch(); -		switch(c) { -		case '\033': -			parseesc(); -			break; -		default: -			putchar(c); +		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);  		}  	}  	return 0;  | 
