chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / libsympathy.c
index 40f8a9d247498b867d1bf21f5116dd2e1d8f3f20..ac2f62112aaeee283722bfc6a77eaf8956c86e01 100644 (file)
@@ -6,10 +6,38 @@
  *
  */
 
-static char rcsid[] = "$Id$";
+static char rcsid[] =
+  "$Id$";
 
 /*
  * $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 ***
+ *
  * Revision 1.1  2008/02/03 16:20:24  james
  * *** empty log message ***
  *
@@ -18,3 +46,98 @@ static char rcsid[] = "$Id$";
 
 #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");
+}