aboutsummaryrefslogtreecommitdiff
path: root/std.c
diff options
context:
space:
mode:
Diffstat (limited to 'std.c')
-rw-r--r--std.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/std.c b/std.c
index 961ca55..fbabaa4 100644
--- a/std.c
+++ b/std.c
@@ -263,20 +263,32 @@ ungetch(int c) {
263 263
264int 264int
265main(int argc, char *argv[]) { 265main(int argc, char *argv[]) {
266 fd_set rfds;
267 int r;
268
266 if(argc == 2 && !strcmp("-v", argv[1])) 269 if(argc == 2 && !strcmp("-v", argv[1]))
267 eprint("std-"VERSION", © 2008 Matthias-Christian Ott\n"); 270 eprint("std-"VERSION", © 2008 Matthias-Christian Ott\n");
268 else if(argc == 1) 271 else if(argc == 1)
269 eprint("usage: st [-v]\n"); 272 eprint("usage: st [-v]\n");
270 getpty(); 273 getpty();
271 shell(); 274 shell();
275 FD_ZERO(&rfds);
276 FD_SET(STDIN_FILENO, &rfds);
277 FD_SET(ptm, &rfds);
272 for(;;) { 278 for(;;) {
273 c = getch(); 279 r = select(ptm + 1, &rfds, NULL, NULL, NULL);
274 switch(c) { 280 if(r == -1)
275 case '\033': 281 eprintn("error, cannot select");
276 parseesc(); 282 if(FD_ISSET(ptm, &rfds)) {
277 break; 283 c = getch();
278 default: 284 switch(c) {
279 putchar(c); 285 case '\033':
286 parseesc();
287 break;
288 default:
289 putchar(c);
290 }
291 fflush(stdout);
280 } 292 }
281 } 293 }
282 return 0; 294 return 0;