/*
* $Log$
+ * Revision 1.16 2008/02/13 09:12:21 james
+ * *** empty log message ***
+ *
+ * Revision 1.15 2008/02/13 01:08:18 james
+ * *** empty log message ***
+ *
* Revision 1.14 2008/02/12 22:36:46 james
* *** empty log message ***
*
#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)
{
+ fd_set rfd;
struct termios raw = { 0 };
ANSI a = { 0 };
- fd_set rfd;
+ Context c;
+
+#if 0
int fd;
char c;
+
TTY *t;
VT102 *v;
History *h;
int i;
+#endif
- signal (SIGINT, quit);
- {
- struct sigaction sa = { 0 };
-
- sa.sa_handler = winch;
- sa.sa_flags = SA_RESTART;
- sigaction (SIGWINCH, &sa, NULL);
- }
+ ansi_reset (&a);
- tcgetattr (0, &old);
- tcgetattr (0, &raw);
- cfmakeraw (&raw);
- tcsetattr (0, TCSANOW, &raw);
- a.fd = 0;
- ansi_reset (&a);
+ c.t = ptty_open (NULL, NULL);
+ c.v = vt102_new ();
+ c.h = history_new (200);
+ c.l = NULL;
+ terminal_register_handlers ();
+ a.terminal = terminal_open (0, 1);
- 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
+ FD_SET (c.t->rfd, &rfd);
+ FD_SET (a.terminal->rfd, &rfd);
- switch (ansi_dispatch (&a, v, t))
- {
- case -1:
- break;
- case 1:
- ansi_getsize (&a);
- ansi_reset (&a);
- ansi_draw (&a, &v->crt);
- break;
- }
+ select (FD_SETSIZE, &rfd, NULL, NULL, &tv);
- if (FD_ISSET (t->fd, &rfd))
+ ansi_dispatch (&a, &c);
+
+ if (FD_ISSET (c.t->rfd, &rfd))
{
- if (vt102_dispatch_one (v, t, h))
+ if (vt102_dispatch (&c))
break;
}
+#if 0
if (had_winch)
{
had_winch = 0;
ansi_reset (&a);
ansi_draw (&a, &v->crt);
}
- ansi_draw (&a, &v->crt);
+#endif
+ //FIXME history
+ ansi_draw (&a, &c.v->crt);
}
- tcsetattr (0, TCSANOW, &old);
- printf ("QUAT\n");
+
+ terminal_atexit ();
}