/*
* $Log$
+ * 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 ***
+ *
+ * Revision 1.13 2008/02/08 15:06:42 james
+ * *** empty log message ***
+ *
+ * Revision 1.12 2008/02/07 13:26:35 james
+ * *** empty log message ***
+ *
+ * Revision 1.11 2008/02/07 13:22:51 james
+ * *** empty log message ***
+ *
+ * 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 ***
*
#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
{
struct termios raw = { 0 };
ANSI a = { 0 };
+ Context c;
+
+#if 0
fd_set rfd;
int fd;
char c;
- TTY *y;
- VT102 *v;
+ 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 = tty_new_test ();
+ c.v = vt102_new ();
+ a.terminal=terminal_open(0,1);
- t=tty_new_test();
- v=vt102_new(t);
FD_ZERO (&rfd);
for (;;)
FD_SET (t->fd, &rfd);
FD_SET (a.fd, &rfd);
- if (select (t->fd + 1, &rfd, NULL, NULL, &tv) < 0)
- continue;
+ select (t->fd + 1, &rfd, NULL, NULL, &tv);
+#if 0
if (FD_ISSET (a.fd, &rfd))
{
- if (ansi_dispatch(&a,v)) break;
}
+#endif
- if (FD_ISSET (t->fd, &rfd)) {
- if (vt102_dispatch (v)) break;
- }
+ 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_one (v, t, h))
+ break;
+ }
if (had_winch)
{
had_winch = 0;
ansi_getsize (&a);
ansi_reset (&a);
- ansi_draw (&a, &v.crt);
+ ansi_draw (&a, &v->crt);
}
+ ansi_draw (&a, &v->crt);
}
tcsetattr (0, TCSANOW, &old);
printf ("QUAT\n");