X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsympathy.c;h=5ffd04d01127633467c3ad43b4aa5c1c1d196301;hb=0daf8487b7ce04368a0a8e33231a547161f444e7;hp=d43bbc558c55d88a2aef42591774a08697ac3858;hpb=51d34367859892cb87c8727d93a02ed9f82fe958;p=sympathy.git diff --git a/src/libsympathy.c b/src/libsympathy.c index d43bbc5..5ffd04d 100644 --- a/src/libsympathy.c +++ b/src/libsympathy.c @@ -11,6 +11,24 @@ static char rcsid[] = /* * $Log$ + * Revision 1.8 2008/02/07 00:43:27 james + * *** empty log message *** + * + * Revision 1.7 2008/02/07 00:39:13 james + * *** empty log message *** + * + * Revision 1.6 2008/02/06 20:26:58 james + * *** empty log message *** + * + * Revision 1.5 2008/02/06 17:53:28 james + * *** empty log message *** + * + * Revision 1.4 2008/02/04 20:23:55 james + * *** empty log message *** + * + * 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 +39,90 @@ static char rcsid[] = */ #include "project.h" + +struct termios old = { 0 }; +static int had_winch = 0; + +static void +quit (int not) +{ + tcsetattr (0, TCSANOW, &old); + exit (1); +} + +static void +winch (int not) +{ + had_winch++; +} + + +void +testy (void) +{ + struct termios raw = { 0 }; + ANSI a = { 0 }; + fd_set rfd; + int fd; + char c; + TTY *t; + VT102 *v; + + + signal (SIGINT, quit); + { + struct sigaction sa = { 0 }; + + sa.sa_handler = winch; + sa.sa_flags = SA_RESTART; + sigaction (SIGWINCH, &sa, NULL); + } + + + tcgetattr (0, &old); + tcgetattr (0, &raw); + cfmakeraw (&raw); + tcsetattr (0, TCSANOW, &raw); + + a.fd = 0; + ansi_reset (&a); + + + t = tty_new_test (); + v = vt102_new (t); + + FD_ZERO (&rfd); + for (;;) + { + struct timeval tv = { 0, 100000 }; + + FD_SET (t->fd, &rfd); + FD_SET (a.fd, &rfd); + select (t->fd + 1, &rfd, NULL, NULL, &tv); + +#if 0 + if (FD_ISSET (a.fd, &rfd)) + { + } +#endif + if (ansi_dispatch (&a, v)) + break; + + if (FD_ISSET (t->fd, &rfd)) + { + if (vt102_dispatch (v)) + break; + } + + if (had_winch) + { + had_winch = 0; + ansi_getsize (&a); + ansi_reset (&a); + ansi_draw (&a, &v->crt); + } + ansi_draw (&a, &v->crt); + } + tcsetattr (0, TCSANOW, &old); + printf ("QUAT\n"); +}