|
@@ -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;
|