chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / libsympathy.c
index 40f8a9d247498b867d1bf21f5116dd2e1d8f3f20..e86c088098a87a4b78860bf40d64be0e723a88b1 100644 (file)
@@ -6,10 +6,20 @@
  *
  */
 
-static char rcsid[] = "$Id$";
+static char rcsid[] =
+  "$Id$";
 
 /*
  * $Log$
+ * 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 +28,67 @@ static char rcsid[] = "$Id$";
 
 #include "project.h"
 
+struct termios old = { 0 };
+
+static void
+foo (int not)
+{
+  tcsetattr (0, TCSANOW, &old);
+  exit (1);
+}
+
+
+void
+testy (void)
+{
+  struct termios raw = { 0 };
+  VT102 v = { 0 };
+  ANSI a = { 0 };
+  fd_set rfd;
+  int fd;
+  char c;
+
+
+  signal (SIGINT, foo);
+
+  tcgetattr (0, &old);
+  tcgetattr (0, &raw);
+  cfmakeraw (&raw);
+  tcsetattr (0, TCSANOW, &raw);
+
+  a.fd = 1;
+
+  vt102_reset (&v);
+  ansi_reset (&a);
+
+
+  fd = open_fd_to_bash ();
+
+  FD_ZERO (&rfd);
+
+
+  for (;;)
+    {
+      FD_SET (fd, &rfd);
+      FD_SET (0, &rfd);
+      if (select (fd + 1, &rfd, NULL, NULL, NULL) <= 0)
+        continue;
+      if (FD_ISSET (0, &rfd))
+        {
+          if ((read (0, &c, 1) <= 0) || (c == 3))
+            break;
+
+          write (fd, &c, 1);
+        }
+      if (FD_ISSET (fd, &rfd))
+        {
+          if ((read (fd, &c, 1) <= 0))
+            break;
+          //write (1, &c, 1);
+          vt102_parse_char (&v, c);
+          ansi_draw (&a, &v.crt);
+        }
+    }
+  tcsetattr (0, TCSANOW, &old);
+  printf ("QUAT\n");
+}