X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsympathy.c;h=ac2f62112aaeee283722bfc6a77eaf8956c86e01;hb=3684640e6bdec97cb1b60a34d03e8cde63149215;hp=d43bbc558c55d88a2aef42591774a08697ac3858;hpb=51d34367859892cb87c8727d93a02ed9f82fe958;p=sympathy.git diff --git a/src/libsympathy.c b/src/libsympathy.c index d43bbc5..ac2f621 100644 --- a/src/libsympathy.c +++ b/src/libsympathy.c @@ -11,6 +11,30 @@ static char rcsid[] = /* * $Log$ + * Revision 1.10 2008/02/07 11:32:41 james + * *** empty log message *** + * + * Revision 1.9 2008/02/07 11:11:14 staffcvs + * *** empty log message *** + * + * 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 +45,99 @@ 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; + int i; + + + 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 (); + + 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 + + switch (ansi_dispatch (&a, v,t)) { + case -1: + break; + case 1: + ansi_getsize (&a); + ansi_reset (&a); + ansi_draw (&a, &v->crt); + break; + } + + if (FD_ISSET (t->fd, &rfd)) + { + if (vt102_dispatch (v,t)) + 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"); +}