diff options
author | james <> | 2008-02-04 05:45:55 +0000 |
---|---|---|
committer | james <> | 2008-02-04 05:45:55 +0000 |
commit | 8865ddf602b32113af2899c5ef1046c51aeb972c (patch) | |
tree | 3b90eae60b7fa863499d8a3ec7befd94e246ffcb /src/libsympathy.c | |
parent | c4b7eff58a98590defd94bdbd39a7798521b55a1 (diff) | |
download | sympathy-8865ddf602b32113af2899c5ef1046c51aeb972c.tar.gz sympathy-8865ddf602b32113af2899c5ef1046c51aeb972c.tar.bz2 sympathy-8865ddf602b32113af2899c5ef1046c51aeb972c.zip |
::
Diffstat (limited to 'src/libsympathy.c')
-rw-r--r-- | src/libsympathy.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/libsympathy.c b/src/libsympathy.c index d43bbc5..013afc7 100644 --- a/src/libsympathy.c +++ b/src/libsympathy.c @@ -11,6 +11,9 @@ static char rcsid[] = /* * $Log$ + * Revision 1.3 2008/02/04 05:45:55 james + * :: + * * Revision 1.2 2008/02/04 02:05:06 james * *** empty log message *** * @@ -21,3 +24,67 @@ static char rcsid[] = */ #include "project.h" + +struct termios old={0}; + +static void foo(int not) +{ + tcsetattr(0,TCSANOW,&old); + exit(1); +} + + +void +testy (void) +{ + struct termios raw={0}; + VT102 v = { 0 }; + ANSI a = { 0 }; + fd_set rfd; + int fd; + char c; + + + signal(SIGINT,foo); + + tcgetattr(0,&old); + tcgetattr(0,&raw); + cfmakeraw(&raw); + tcsetattr(0,TCSANOW,&raw); + + a.fd = 1; + +//vt102_reset(&v); + ansi_reset (&a); + + + fd = open_fd_to_bash (); + + FD_ZERO (&rfd); + + + for (;;) + { + FD_SET (fd, &rfd); + FD_SET (0, &rfd); + if (select (fd + 1, &rfd, NULL, NULL, NULL) <= 0) + continue; + if (FD_ISSET (0, &rfd)) + { + read (0, &c, 1); + if (c==3) { + tcsetattr(0,TCSANOW,&old); + exit(1); + } + + write (fd, &c, 1); + } + if (FD_ISSET (fd, &rfd)) + { + read (fd, &c, 1); + //write (1, &c, 1); + vt102_parse_char (&v, c); + ansi_draw (&a, &v.crt); + } + } +} |