X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=std.c;h=fcfead924b3f87d122c68dd5279465ec5101f887;hb=0dedee5de8e35f4bab3d707d63be31943715264e;hp=4808db4a6e7a7545769d8d7103322ab85e448b7d;hpb=a6efc851b6b0fa9befe1f81627c5c5955d48e6f6;p=st.git diff --git a/std.c b/std.c index 4808db4..fcfead9 100644 --- a/std.c +++ b/std.c @@ -6,6 +6,9 @@ #include #include #include +#if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) +#include +#endif #include #include #include @@ -25,7 +28,7 @@ void eprintn(const char *errstr, ...); void getpty(void); void movea(int x, int y); void mover(int x, int y); -void parse(void); +void parseesc(void); void scroll(int l); void shell(void); void sigchld(int n); @@ -306,12 +309,24 @@ unbuffer(void) { int main(int argc, char *argv[]) { - fd_set rd; 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(); + fptm = fdopen(ptm, "r+"); + if(!fptm) + eprintn("cannot open slave pty"); + for(;;) { + c = getc(fptm); + switch(c) { + case '\033': + parseesc(); + break; + default: + putchar(c); + } + } return 0; }