chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / libsympathy.c
index d8eb76fc39962c5f741b5d0d4ffd82e1792a6171..ffe8d1679cb7654d2d77694f3f030739557ceff6 100644 (file)
@@ -11,6 +11,27 @@ static char rcsid[] =
 
 /*
  * $Log$
+ * 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 ***
+ *
  * Revision 1.5  2008/02/06 17:53:28  james
  * *** empty log message ***
  *
@@ -32,15 +53,17 @@ static char rcsid[] =
 #include "project.h"
 
 struct termios old = { 0 };
-static int had_winch=0;
+static int had_winch = 0;
 
-static void quit (int not)
+static void
+quit (int not)
 {
   tcsetattr (0, TCSANOW, &old);
   exit (1);
 }
 
-static void winch (int not)
+static void
+winch (int not)
 {
   had_winch++;
 }
@@ -50,68 +73,77 @@ void
 testy (void)
 {
   struct termios raw = { 0 };
-  VT102 v = { 0 };
   ANSI a = { 0 };
   fd_set rfd;
   int fd;
   char c;
+  TTY *t;
+  VT102 *v;
+  int i;
 
 
   signal (SIGINT, quit);
-{
-struct sigaction sa={0};
+  {
+    struct sigaction sa = { 0 };
+
+    sa.sa_handler = winch;
+    sa.sa_flags = SA_RESTART;
+    sigaction (SIGWINCH, &sa, NULL);
+  }
 
-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 = 1;
-
-  vt102_reset (&v);
+  a.fd = 0;
   ansi_reset (&a);
 
 
-  fd = open_fd_to_bash ();
+  t = tty_new_test ();
+  v = vt102_new ();
 
   FD_ZERO (&rfd);
-
-
   for (;;)
     {
-       struct timeval tv={0,100000};
+      struct timeval tv = { 0, 100000 };
 
-      FD_SET (fd, &rfd);
-      FD_SET (0, &rfd);
-      if (select (fd + 1, &rfd, NULL, NULL, &tv)<0) continue; 
+      FD_SET (t->fd, &rfd);
+      FD_SET (a.fd, &rfd);
+      select (t->fd + 1, &rfd, NULL, NULL, &tv);
 
-      if (FD_ISSET (0, &rfd))
+#if 0
+      if (FD_ISSET (a.fd, &rfd))
         {
-          if ((read (0, &c, 1) <= 0) || (c == 3))
-            break;
+        }
+#endif
 
-          write (fd, &c, 1);
+      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 (fd, &rfd))
+
+      if (FD_ISSET (t->fd, &rfd))
         {
-          if ((read (fd, &c, 1) <= 0))
+          if (vt102_dispatch_one (v, t))
             break;
-          //write (1, &c, 1);
-          vt102_parse_char (&v, c);
-          ansi_draw (&a, &v.crt);
         }
-       if (had_winch) {
-               had_winch=0;
-               ansi_getsize(&a);
-               ansi_reset(&a);
-               ansi_draw (&a, &v.crt);
-       }
+
+      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");