chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / libsympathy.c
index e91d08a327bc76bf86d83cbeda5f6964ea6a6bc3..989b664a7f433596a3823cae2214275cc827c4f2 100644 (file)
@@ -11,6 +11,12 @@ static char rcsid[] =
 
 /*
  * $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 ***
  *
@@ -58,91 +64,60 @@ 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)
 {
+  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;
@@ -150,8 +125,10 @@ testy (void)
           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 ();
 }