chiark / gitweb /
*** empty log message ***
authorjames <james>
Thu, 7 Feb 2008 13:22:51 +0000 (13:22 +0000)
committerjames <james>
Thu, 7 Feb 2008 13:22:51 +0000 (13:22 +0000)
src/ansi.c
src/crt.c
src/crt.h
src/libsympathy.c
src/prototypes.h
src/vt102.c

index d575f62ae2b0c5e73848d0d297a90e3954aa3876..c501ab9ed160b845584cd9ac60e468952f1423f2 100644 (file)
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
 
 /*
  * $Log$
+ * Revision 1.16  2008/02/07 13:22:51  james
+ * *** empty log message ***
+ *
  * Revision 1.15  2008/02/07 13:19:48  james
  * *** empty log message ***
  *
@@ -244,32 +247,39 @@ ansi_set_color (ANSI * a, int color)
   int dif;
   char buf[16];
   int i;
-  int fg,bg;
+  int fg, bg;
 
-   if ((a->color == ANSI_INVAL) || (color!=a->color)) {
-       fg=CRT_COLOR_FG(color);
-       bg=CRT_COLOR_BG(color);
+  if ((a->color == ANSI_INVAL) || (color != a->color))
+    {
+      fg = CRT_COLOR_FG (color);
+      bg = CRT_COLOR_BG (color);
 
-       if (fg & CRT_COLOR_INTENSITY) {
-               fg+=90;
-       } else {
-               fg+=30;
-       }
+      if (fg & CRT_COLOR_INTENSITY)
+        {
+          fg += 90;
+        }
+      else
+        {
+          fg += 30;
+        }
 
-       if (bg & CRT_COLOR_INTENSITY) {
-               bg+=100;
-       } else {
-               bg+=40;
-       }
+      if (bg & CRT_COLOR_INTENSITY)
+        {
+          bg += 100;
+        }
+      else
+        {
+          bg += 40;
+        }
 
-       i=sprintf(buf,"\033[%d;%dm",fg,bg);
+      i = sprintf (buf, "\033[%d;%dm", fg, bg);
 #if 0
-       fprintf(stderr,"Color set to %d %d %x\n",fg,bg,color);
+      fprintf (stderr, "Color set to %d %d %x\n", fg, bg, color);
 #endif
 
-        ansi_write (a,buf,i); 
-       a->color=color;
-   }
+      ansi_write (a, buf, i);
+      a->color = color;
+    }
 }
 
 void
@@ -341,7 +351,7 @@ ansi_render (ANSI * a, CRT_CA ca)
     ca.chr = ' ';
 
   ansi_set_attr (a, ca.attr);
-  ansi_set_color(a,ca.color);
+  ansi_set_color (a, ca.color);
 
   ansi_write (a, &ca.chr, 1);
 
@@ -363,39 +373,48 @@ ansi_cls (ANSI * a)
   crt_cls (&a->crt);
 
   ansi_force_attr_normal (a);
-  ansi_set_color(a,CRT_COLOR_NORMAL);
+  ansi_set_color (a, CRT_COLOR_NORMAL);
   ansi_move (a, p);
   ansi_write (a, "\033[2J", 4);
 /*different emulators leave cursor in different places after cls differently*/
   a->pos.x = ANSI_INVAL;
 }
 
-int ansi_scroll_up(ANSI *a,CRT_Pos s,CRT_Pos e)
+int
+ansi_scroll_up (ANSI * a, CRT_Pos s, CRT_Pos e)
 {
-char buf[16];
-int i;
-if (s.x) return -1;
-if (e.x!=(CRT_COLS-1)) return -1;
-if (s.y) return -1;
-if (s.y>=a->size.y) return -1;
-
-ansi_showhide_cursor (a, 1);
-i=sprintf(buf,"\033[%d;%dr",s.y+1,e.y+1);
-ansi_write(a,buf,i);
-i=sprintf(buf,"\033[%d;%dH",e.y+1,0);
-ansi_write(a,buf,i);
-ansi_write (a, "\033D",2);
-ansi_write(a,"\033[r", 3);
-
-a->pos.x=ANSI_INVAL;
-
-return 0;
+  char buf[16];
+  int i;
+  if (s.x)
+    return -1;
+  if (e.x != (CRT_COLS - 1))
+    return -1;
+  if (s.y)
+    return -1;
+  if (s.y >= a->size.y)
+    return -1;
+
+  ansi_showhide_cursor (a, 1);
+  i = sprintf (buf, "\033[%d;%dr", s.y + 1, e.y + 1);
+  ansi_write (a, buf, i);
+  i = sprintf (buf, "\033[%d;%dH", e.y + 1, 0);
+  ansi_write (a, buf, i);
+  ansi_write (a, "\033D", 2);
+  ansi_write (a, "\033[r", 3);
+
+  s.y = e.y;
+  crt_erase (&a->crt, s, e, 1);
+
+  a->pos.x = ANSI_INVAL;
+
+  return 0;
 }
 
 
-void ansi_spot_scroll_up(ANSI * a, CRT * c)
+void
+ansi_spot_scroll_up (ANSI * a, CRT * c)
 {
-int l,n,p;
+  int l, n, p;
 
   l = c->sh.e.x - c->sh.s.x;
   l++;
@@ -407,11 +426,12 @@ int l,n,p;
   while (n--)
     {
       if (memcmp (&c->screen[p], &a->crt.screen[p + CRT_COLS], l))
-               return;
+        return;
       p += CRT_COLS;
     }
 
-  if (ansi_scroll_up(a,c->sh.s,c->sh.e)) return;
+  if (ansi_scroll_up (a, c->sh.s, c->sh.e))
+    return;
 
   n = c->sh.e.y - c->sh.s.y;
   p = CRT_ADDR_POS (&c->sh.s);
@@ -422,21 +442,23 @@ int l,n,p;
       p += CRT_COLS;
     }
 
-c->sh.dir=0; //FIXME: horrid hack
+  c->sh.dir = 0;                //FIXME: horrid hack
 
 }
 
-void ansi_spot_scroll(ANSI * a, CRT * c)
+void
+ansi_spot_scroll (ANSI * a, CRT * c)
 {
 
- switch(c->sh.dir) {
-case -1:
+  switch (c->sh.dir)
+    {
+    case -1:
 /*we only care about up for the moment */
-ansi_spot_scroll_up(a,c);
-break;
-}
+      ansi_spot_scroll_up (a, c);
+      break;
+    }
 
-return;
+  return;
 }
 
 
@@ -449,7 +471,7 @@ ansi_draw (ANSI * a, CRT * c)
   int o;
   int hidden_cursor = 0;
 
-  ansi_spot_scroll(a,c);
+  ansi_spot_scroll (a, c);
 
   for (p.y = 0; p.y < CRT_ROWS; ++p.y)
     {
@@ -480,7 +502,7 @@ ansi_draw (ANSI * a, CRT * c)
 
       ansi_showhide_cursor (a, 1);
       ansi_set_attr (a, CRT_ATTR_REVERSE);
-      ansi_set_color(a,CRT_MAKE_COLOR(CRT_COLOR_WHITE,CRT_COLOR_RED));
+      ansi_set_color (a, CRT_MAKE_COLOR (CRT_COLOR_WHITE, CRT_COLOR_RED));
       ansi_move (a, p);
 
       ansi_write (a, msg, sizeof (msg));
@@ -521,14 +543,14 @@ ansi_reset (ANSI * a)
 }
 
 void
-ansi_flush_escape (ANSI * a, VT102 * v,TTY *t)
+ansi_flush_escape (ANSI * a, VT102 * v, TTY * t)
 {
   ANSI_Parser *p = &a->parser;
   int i;
 
   for (i = 0; i < p->escape_ptr; ++i)
     {
-      vt102_send (v, p->escape_buf[i],t);
+      vt102_send (v, p->escape_buf[i], t);
     }
 
   p->escape_ptr = 0;
@@ -536,26 +558,26 @@ ansi_flush_escape (ANSI * a, VT102 * v,TTY *t)
 }
 
 void
-ansi_parse_deckey (ANSI * a, VT102 * v,TTY *t)
+ansi_parse_deckey (ANSI * a, VT102 * v, TTY * t)
 {
   ANSI_Parser *p = &a->parser;
   if ((p->escape_buf[1] != '[') && (p->escape_buf[1] != 'O'))
     {
-      ansi_flush_escape (a, v,t);
+      ansi_flush_escape (a, v, t);
       return;
     }
 
   if ((p->escape_buf[2] >= 'A') || (p->escape_buf[2] <= 'Z'))
     {
-      vt102_send (v, KEY_UP + (p->escape_buf[2] - 'A'),t);
+      vt102_send (v, KEY_UP + (p->escape_buf[2] - 'A'), t);
     }
   else if ((p->escape_buf[2] >= 'a') || (p->escape_buf[2] <= 'z'))
     {
-      vt102_send (v, KEY_154 + (p->escape_buf[2] - 'a'),t);
+      vt102_send (v, KEY_154 + (p->escape_buf[2] - 'a'), t);
     }
   else
     {
-      ansi_flush_escape (a, v,t);
+      ansi_flush_escape (a, v, t);
       return;
     }
   p->in_escape = 0;
@@ -563,22 +585,22 @@ ansi_parse_deckey (ANSI * a, VT102 * v,TTY *t)
 }
 
 void
-ansi_parse_ansikey (ANSI * a, VT102 * v,TTY *t)
+ansi_parse_ansikey (ANSI * a, VT102 * v, TTY * t)
 {
   ANSI_Parser *p = &a->parser;
 
   if ((p->escape_buf[1] != '[') || (p->escape_buf[3] != '~'))
     {
-      ansi_flush_escape (a, v,t);
+      ansi_flush_escape (a, v, t);
       return;
     }
   if ((p->escape_buf[2] >= '0') || (p->escape_buf[2] <= '9'))
     {
-      vt102_send (v, KEY_180 + (p->escape_buf[2] - '0'),t);
+      vt102_send (v, KEY_180 + (p->escape_buf[2] - '0'), t);
     }
   else
     {
-      ansi_flush_escape (a, v,t);
+      ansi_flush_escape (a, v, t);
       return;
     }
 
@@ -589,7 +611,7 @@ ansi_parse_ansikey (ANSI * a, VT102 * v,TTY *t)
 
 
 void
-ansi_parse_escape (ANSI * a, VT102 * v,TTY *t)
+ansi_parse_escape (ANSI * a, VT102 * v, TTY * t)
 {
   ANSI_Parser *p = &a->parser;
   switch (p->escape_ptr)
@@ -604,41 +626,41 @@ ansi_parse_escape (ANSI * a, VT102 * v,TTY *t)
         case 'O':
           break;
         default:
-          ansi_flush_escape (a, v,t);
+          ansi_flush_escape (a, v, t);
         }
       break;
     case 3:
       switch (p->escape_buf[1])
         {
         case 'O':
-          ansi_parse_deckey (a, v,t);
+          ansi_parse_deckey (a, v, t);
           break;
         case '[':
           if ((p->escape_buf[2] >= 'A') && (p->escape_buf[2] <= 'Z'))
-            ansi_parse_deckey (a, v,t);
+            ansi_parse_deckey (a, v, t);
           break;
         default:
-          ansi_flush_escape (a, v,t);
+          ansi_flush_escape (a, v, t);
         }
       break;
     case 4:
       switch (p->escape_buf[1])
         {
         case '[':
-          ansi_parse_ansikey (a, v,t);
+          ansi_parse_ansikey (a, v, t);
           break;
         default:
-          ansi_flush_escape (a, v,t);
+          ansi_flush_escape (a, v, t);
         }
       break;
     case 5:
-      ansi_flush_escape (a, v,t);
+      ansi_flush_escape (a, v, t);
     }
 }
 
 
 void
-ansi_check_escape (ANSI * a, VT102 * v,TTY *t)
+ansi_check_escape (ANSI * a, VT102 * v, TTY * t)
 {
   ANSI_Parser *p = &a->parser;
   struct timeval now, diff;
@@ -656,24 +678,24 @@ ansi_check_escape (ANSI * a, VT102 * v,TTY *t)
 
   /*Time up? */
   if (diff.tv_sec || (diff.tv_usec > ANSI_ESCAPE_TIMEOUT))
-    ansi_flush_escape (a, v,t);
+    ansi_flush_escape (a, v, t);
 
 }
 
 
 void
-ansi_parse_char (ANSI * a, int c, VT102 * v,TTY *t)
+ansi_parse_char (ANSI * a, int c, VT102 * v, TTY * t)
 {
   ANSI_Parser *p = &a->parser;
 
 
 /*See if it's time to flush the escape*/
-  ansi_check_escape (a, v,t);
+  ansi_check_escape (a, v, t);
 
   if (c == 033)
     {
       if (p->in_escape)
-        ansi_flush_escape (a, v,t);
+        ansi_flush_escape (a, v, t);
 
       p->in_escape++;
       p->escape_ptr = 0;
@@ -683,29 +705,29 @@ ansi_parse_char (ANSI * a, int c, VT102 * v,TTY *t)
   if (p->in_escape)
     {
       p->escape_buf[p->escape_ptr++] = c;
-      ansi_parse_escape (a, v,t);
+      ansi_parse_escape (a, v, t);
     }
   else
     {
-      vt102_send (v, c,t);
+      vt102_send (v, c, t);
     }
 
 }
 
 void
-ansi_parse (ANSI * a, char *buf, int len, VT102 * v,TTY *t)
+ansi_parse (ANSI * a, char *buf, int len, VT102 * v, TTY * t)
 {
   while (len--)
-    ansi_parse_char (a, *(buf++), v,t);
+    ansi_parse_char (a, *(buf++), v, t);
 }
 
 int
-ansi_dispatch (ANSI * a, VT102 * v,TTY *t)
+ansi_dispatch (ANSI * a, VT102 * v, TTY * t)
 {
   char buf[1024];
   int red;
 
-  ansi_check_escape (a, v,t);
+  ansi_check_escape (a, v, t);
 
 
   red = ansi_read (a, buf, sizeof (buf));
@@ -718,12 +740,12 @@ ansi_dispatch (ANSI * a, VT102 * v,TTY *t)
 #endif
 
 #if 0
-  if (*buf == 1) 
-       return 1;
+  if (*buf == 1)
+    return 1;
 #endif
 
 
-  ansi_parse (a, buf, red, v,t);
+  ansi_parse (a, buf, red, v, t);
 
   return 0;
 }
index 67d883555a8bc3741abfcc5dedb14fdf4dfd7972..a9e6e8637655fb0c273ce55ef8f3538fcd29c200 100644 (file)
--- a/src/crt.c
+++ b/src/crt.c
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
 
 /*
  * $Log$
+ * Revision 1.9  2008/02/07 13:22:51  james
+ * *** empty log message ***
+ *
  * Revision 1.8  2008/02/07 13:19:48  james
  * *** empty log message ***
  *
@@ -47,10 +50,11 @@ crt_erase (CRT * c, CRT_Pos s, CRT_Pos e, int ea)
   while (ps <= pe)
     {
       ps->chr = ' ';
-      if (ea){
-        ps->attr = CRT_ATTR_NORMAL;
-        ps->color = CRT_COLOR_NORMAL;
-       }
+      if (ea)
+        {
+          ps->attr = CRT_ATTR_NORMAL;
+          ps->color = CRT_COLOR_NORMAL;
+        }
       ps++;
     }
 
@@ -64,7 +68,7 @@ crt_cls (CRT * c)
   int i;
 
   crt_erase (c, s, e, 1);
-  c->sh.dir=0;
+  c->sh.dir = 0;
 }
 
 void
@@ -77,9 +81,9 @@ crt_scroll_up (CRT * c, CRT_Pos s, CRT_Pos e, int ea)
   s.x = 0;
   e.x = CRT_COLS - 1;
 
-  c->sh.s=s;
-  c->sh.e=e;
-  c->sh.dir=-1;
+  c->sh.s = s;
+  c->sh.e = e;
+  c->sh.dir = -1;
 
   l = e.x - s.x;
   l++;
@@ -110,9 +114,9 @@ crt_scroll_down (CRT * c, CRT_Pos s, CRT_Pos e, int ea)
   s.x = 0;
   e.x = CRT_COLS - 1;
 
-  c->sh.s=s;
-  c->sh.e=e;
-  c->sh.dir=1;
+  c->sh.s = s;
+  c->sh.e = e;
+  c->sh.dir = 1;
 
   l = e.x - s.x;
   l++;
@@ -142,7 +146,7 @@ crt_reset (CRT * c)
   c->pos.x = 0;
   c->pos.y = 0;
   c->hide_cursor = 1;
-  c->sh.dir=0;
+  c->sh.dir = 0;
 }
 
 void
@@ -159,5 +163,5 @@ crt_insert (CRT * c, CRT_CA ca)
 
   c->screen[CRT_ADDR (c->pos.y, c->pos.x)] = ca;
 
-  c->sh.dir=0;
+  c->sh.dir = 0;
 }
index e73e891eb18e681f06557d832504a42cb5d11e51..da5922c4e10d6f7d261099c4d12fdbacef7e9fe7 100644 (file)
--- a/src/crt.h
+++ b/src/crt.h
@@ -12,6 +12,9 @@
 
 /*
  * $Log$
+ * Revision 1.6  2008/02/07 13:22:51  james
+ * *** empty log message ***
+ *
  * Revision 1.5  2008/02/07 12:41:06  james
  * *** empty log message ***
  *
@@ -46,7 +49,7 @@
 #define CRT_ATTR_BOLD     0x8
 
 
-#define CRT_COLOR_BLACK                0x0     
+#define CRT_COLOR_BLACK                0x0
 #define CRT_COLOR_RED          0x1
 #define CRT_COLOR_GREEN                0x2
 #define CRT_COLOR_YELLOW       0x3
@@ -86,7 +89,8 @@ typedef struct
 } CRT_Pos;
 
 
-typedef struct {
+typedef struct
+{
   CRT_Pos s;
   CRT_Pos e;
   int dir;
index cf70750c446740fb37b7f27f07a76cbc000c0ed7..ffe8d1679cb7654d2d77694f3f030739557ceff6 100644 (file)
@@ -11,6 +11,9 @@ 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 ***
  *
@@ -129,7 +132,7 @@ testy (void)
 
       if (FD_ISSET (t->fd, &rfd))
         {
-          if (vt102_dispatch (v, t))
+          if (vt102_dispatch_one (v, t))
             break;
         }
 
index 7ffe3b2af89160a3745adb85fbaa7c2c5b3cbe14..4468fe8e93fc6b32b96d64b5a1aa0752e53f2e06 100644 (file)
@@ -1,76 +1,80 @@
 /* ansi.c */
-int ansi_read (ANSI * a, void *buf, int n);
-void ansi_write (ANSI * a, char *buf, int n);
-void ansi_getsize (ANSI * a);
-void ansi_move (ANSI * a, CRT_Pos p);
-void ansi_showhide_cursor (ANSI * a, int hide);
-void ansi_force_attr_normal (ANSI * a);
-void ansi_set_color (ANSI * a, int color);
-void ansi_set_attr (ANSI * a, int attr);
-void ansi_render (ANSI * a, CRT_CA ca);
-void ansi_cls (ANSI * a);
-void ansi_draw (ANSI * a, CRT * c);
-void ansi_reset (ANSI * a);
-void ansi_flush_escape (ANSI * a, VT102 * v, TTY * t);
-void ansi_parse_deckey (ANSI * a, VT102 * v, TTY * t);
-void ansi_parse_ansikey (ANSI * a, VT102 * v, TTY * t);
-void ansi_parse_escape (ANSI * a, VT102 * v, TTY * t);
-void ansi_check_escape (ANSI * a, VT102 * v, TTY * t);
-void ansi_parse_char (ANSI * a, int c, VT102 * v, TTY * t);
-void ansi_parse (ANSI * a, char *buf, int len, VT102 * v, TTY * t);
-int ansi_dispatch (ANSI * a, VT102 * v, TTY * t);
+int ansi_read(ANSI *a, void *buf, int n);
+void ansi_write(ANSI *a, char *buf, int n);
+void ansi_getsize(ANSI *a);
+void ansi_move(ANSI *a, CRT_Pos p);
+void ansi_showhide_cursor(ANSI *a, int hide);
+void ansi_force_attr_normal(ANSI *a);
+void ansi_set_color(ANSI *a, int color);
+void ansi_set_attr(ANSI *a, int attr);
+void ansi_render(ANSI *a, CRT_CA ca);
+void ansi_cls(ANSI *a);
+int ansi_scroll_up(ANSI *a, CRT_Pos s, CRT_Pos e);
+void ansi_spot_scroll_up(ANSI *a, CRT *c);
+void ansi_spot_scroll(ANSI *a, CRT *c);
+void ansi_draw(ANSI *a, CRT *c);
+void ansi_reset(ANSI *a);
+void ansi_flush_escape(ANSI *a, VT102 *v, TTY *t);
+void ansi_parse_deckey(ANSI *a, VT102 *v, TTY *t);
+void ansi_parse_ansikey(ANSI *a, VT102 *v, TTY *t);
+void ansi_parse_escape(ANSI *a, VT102 *v, TTY *t);
+void ansi_check_escape(ANSI *a, VT102 *v, TTY *t);
+void ansi_parse_char(ANSI *a, int c, VT102 *v, TTY *t);
+void ansi_parse(ANSI *a, char *buf, int len, VT102 *v, TTY *t);
+int ansi_dispatch(ANSI *a, VT102 *v, TTY *t);
 /* crt.c */
-void crt_erase (CRT * c, CRT_Pos s, CRT_Pos e, int ea);
-void crt_cls (CRT * c);
-void crt_scroll_up (CRT * c, CRT_Pos s, CRT_Pos e, int ea);
-void crt_scroll_down (CRT * c, CRT_Pos s, CRT_Pos e, int ea);
-void crt_reset (CRT * c);
-void crt_insert (CRT * c, CRT_CA ca);
+void crt_erase(CRT *c, CRT_Pos s, CRT_Pos e, int ea);
+void crt_cls(CRT *c);
+void crt_scroll_up(CRT *c, CRT_Pos s, CRT_Pos e, int ea);
+void crt_scroll_down(CRT *c, CRT_Pos s, CRT_Pos e, int ea);
+void crt_reset(CRT *c);
+void crt_insert(CRT *c, CRT_CA ca);
 /* html.c */
-void html_entity (FILE * f, int c);
-void html_render (FILE * f, CRT_CA c);
-void html_draw (FILE * f, CRT * c);
+void html_entity(FILE *f, int c);
+void html_render(FILE *f, CRT_CA c);
+void html_draw(FILE *f, CRT *c);
 /* libsympathy.c */
 struct termios old;
-void testy (void);
+void testy(void);
 /* render.c */
 /* version.c */
 /* vt102.c */
-void vt102_log_line (VT102 * v, int line);
-void vt102_clip_cursor (VT102 * v, CRT_Pos tl, CRT_Pos br);
-void vt102_cursor_normalize (VT102 * v);
-void vt102_cursor_carriage_return (VT102 * v);
-void vt102_cursor_advance_line (VT102 * v);
-void vt102_cursor_advance (VT102 * v);
-void vt102_do_pending_wrap (VT102 * v);
-void vt102_cursor_retard (VT102 * v);
-void vt102_reset_tabs (VT102 * v);
-void vt102_cursor_advance_tab (VT102 * v);
-int vt102_cursor_home (VT102 * v);
-int vt102_cursor_absolute (VT102 * v, int x, int y);
-int vt102_cursor_relative (VT102 * v, int x, int y);
-void vt102_delete_from_line (VT102 * v, CRT_Pos p);
-void vt102_insert_into_line (VT102 * v, CRT_Pos p);
-void vt102_change_mode (VT102 * v, int private, char *ns, int set);
-void vt102_parse_mode_string (VT102 * v, char *buf, int len);
-void vt102_change_attr (VT102 * v, char *na);
-void vt102_parse_attr_string (VT102 * v, char *buf, int len);
-void vt102_save_state (VT102 * v);
-void vt102_restore_state (VT102 * v);
-void vt102_scs (VT102 * c, int g, int s);
-void vt102_parse_esc (VT102 * v, int c);
-void vt102_parse_csi (VT102 * v, char *buf, int len);
-void vt102_status_line (VT102 * v, char *str);
-void vt102_parse_char (VT102 * v, int c, TTY * tty);
-int vt102_parse (VT102 * v, char *buf, int len, TTY * t);
-void vt102_parser_reset (VT102_parser * p);
-void vt102_send (VT102 * v, uint8_t key, TTY * tty);
-void vt102_reset (VT102 * v);
-int vt102_dispatch (VT102 * v, TTY * tty);
-VT102 *vt102_new (void);
-void vt102_free (VT102 * v);
+void vt102_log_line(VT102 *v, int line);
+void vt102_clip_cursor(VT102 *v, CRT_Pos tl, CRT_Pos br);
+void vt102_cursor_normalize(VT102 *v);
+void vt102_cursor_carriage_return(VT102 *v);
+void vt102_cursor_advance_line(VT102 *v);
+void vt102_cursor_advance(VT102 *v);
+void vt102_do_pending_wrap(VT102 *v);
+void vt102_cursor_retard(VT102 *v);
+void vt102_reset_tabs(VT102 *v);
+void vt102_cursor_advance_tab(VT102 *v);
+int vt102_cursor_home(VT102 *v);
+int vt102_cursor_absolute(VT102 *v, int x, int y);
+int vt102_cursor_relative(VT102 *v, int x, int y);
+void vt102_delete_from_line(VT102 *v, CRT_Pos p);
+void vt102_insert_into_line(VT102 *v, CRT_Pos p);
+void vt102_change_mode(VT102 *v, int private, char *ns, int set);
+void vt102_parse_mode_string(VT102 *v, char *buf, int len);
+void vt102_change_attr(VT102 *v, char *na);
+void vt102_parse_attr_string(VT102 *v, char *buf, int len);
+void vt102_save_state(VT102 *v);
+void vt102_restore_state(VT102 *v);
+void vt102_scs(VT102 *c, int g, int s);
+void vt102_parse_esc(VT102 *v, int c);
+void vt102_parse_csi(VT102 *v, char *buf, int len);
+void vt102_status_line(VT102 *v, char *str);
+void vt102_parse_char(VT102 *v, int c, TTY *tty);
+int vt102_parse(VT102 *v, char *buf, int len, TTY *t);
+void vt102_parser_reset(VT102_parser *p);
+void vt102_send(VT102 *v, uint8_t key, TTY *tty);
+void vt102_reset(VT102 *v);
+int vt102_dispatch(VT102 *v, TTY *tty);
+int vt102_dispatch_one(VT102 *v, TTY *tty);
+VT102 *vt102_new(void);
+void vt102_free(VT102 *v);
 /* tty.c */
-TTY *tty_new_test (void);
-int tty_read (TTY * t, void *buf, int len);
-int tty_write (TTY * t, void *buf, int len);
-void tty_free (TTY * t);
+TTY *tty_new_test(void);
+int tty_read(TTY *t, void *buf, int len);
+int tty_write(TTY *t, void *buf, int len);
+void tty_free(TTY *t);
index f120d32167c8d40320e162e8ad3e28867f57cda1..f3101bb6ec7a48e666cfbf10e4af1bc74e02b0a2 100644 (file)
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
 
 /*
  * $Log$
+ * Revision 1.23  2008/02/07 13:26:35  james
+ * *** empty log message ***
+ *
  * Revision 1.22  2008/02/07 13:22:51  james
  * *** empty log message ***
  *
@@ -1393,6 +1396,25 @@ vt102_dispatch (VT102 * v, TTY * tty)
   return 0;
 }
 
+
+int
+vt102_dispatch_one (VT102 * v, TTY * tty)
+{
+  char buf;
+  int red;
+
+  red = tty_read (tty, &buf, sizeof (buf));
+
+  if (red < 0)
+    return -1;
+  if (!red)
+    return 0;
+
+  vt102_parse_char (v, buf, tty);
+
+  return 0;
+}
+
 VT102 *
 vt102_new (void)
 {