+
+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))
+ {
+ read (0, &c, 1);
+ if (c==3) {
+ tcsetattr(0,TCSANOW,&old);
+ exit(1);
+ }
+
+ write (fd, &c, 1);
+ }
+ if (FD_ISSET (fd, &rfd))
+ {
+ read (fd, &c, 1);
+ //write (1, &c, 1);
+ vt102_parse_char (&v, c);
+ ansi_draw (&a, &v.crt);
+ }
+ }
+}