chiark / gitweb /
*** empty log message ***
authorjames <james>
Sun, 24 Feb 2008 12:22:42 +0000 (12:22 +0000)
committerjames <james>
Sun, 24 Feb 2008 12:22:42 +0000 (12:22 +0000)
src/vt102.c
src/vt102.h

index 598e4a34b26e9f002e820bd54f45706df15e097a..f378c166c407c1292efbd67c33beb352213a0dd7 100644 (file)
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
 
 /*
  * $Log$
+ * Revision 1.37  2008/02/24 12:22:53  james
+ * *** empty log message ***
+ *
  * Revision 1.36  2008/02/24 12:22:42  james
  * *** empty log message ***
  *
@@ -280,7 +283,7 @@ ESC+B
 #include "syslog.h"
 
 //static char terminal_reply[]={033,0133,077,066,0143};
-static char terminal_reply[]={'v','t','1','0','2'};
+static char terminal_reply[] = { 'v', 't', '1', '0', '2' };
 
 static inline int
 safe_ch (int c)
@@ -957,17 +960,17 @@ vt102_parse_esc (Context * c, int ch)
   switch (ch)
     {
     case 'A':
-          vt102_cursor_relative (v, 0, -1);
-       break;
+      vt102_cursor_relative (v, 0, -1);
+      break;
     case 'B':
-          vt102_cursor_relative (v, 0, 1);
-       break;
+      vt102_cursor_relative (v, 0, 1);
+      break;
     case 'C':
-          vt102_cursor_relative (v, 1, 0);
-       break;
+      vt102_cursor_relative (v, 1, 0);
+      break;
     case 'D':
-          vt102_cursor_relative (v, -1, 0);
-       break;
+      vt102_cursor_relative (v, -1, 0);
+      break;
     case 'E':
       if (v->pos.y == v->bottom_margin.y)
         {
@@ -984,18 +987,18 @@ vt102_parse_esc (Context * c, int ch)
     case 'H':
       v->tabs[v->pos.x]++;
       break;
-       case 'I':
-          vt102_cursor_retreat_line (c);
-       break;
-   case 'J':
-              crt_erase (&v->crt, v->pos, v->screen_end, 1, v->color);
-       break;
+    case 'I':
+      vt102_cursor_retreat_line (c);
+      break;
+    case 'J':
+      crt_erase (&v->crt, v->pos, v->screen_end, 1, v->color);
+      break;
     case 'K':
-       {
-            CRT_Pos le = { VT102_COLS - 1, v->pos.y };
-                crt_erase (&v->crt, v->pos, le, 1, v->color);
-       }
-       break;
+      {
+        CRT_Pos le = { VT102_COLS - 1, v->pos.y };
+        crt_erase (&v->crt, v->pos, le, 1, v->color);
+      }
+      break;
     case 'M':
       if (v->pos.y == v->top_margin.y)
         {
@@ -1007,18 +1010,19 @@ vt102_parse_esc (Context * c, int ch)
           vt102_cursor_relative (v, 0, -1);
         }
       break;
-       case 'Y':
-               v->parser.in_dca++;
-               v->parser.dca_ptr=0;
-       break;
-       case 'Z':
-          if (c->t) {
-            c->t->xmit (c->t, terminal_reply,sizeof(terminal_reply));
-       }
-       break;
-       case '<': 
-         /*Set ansi mode - ignored*/
-       break;
+    case 'Y':
+      v->parser.in_dca++;
+      v->parser.dca_ptr = 0;
+      break;
+    case 'Z':
+      if (c->t)
+        {
+          c->t->xmit (c->t, terminal_reply, sizeof (terminal_reply));
+        }
+      break;
+    case '<':
+      /*Set ansi mode - ignored */
+      break;
 
     case '7':
       vt102_save_state (v);
@@ -1389,13 +1393,18 @@ vt102_parse_char (Context * c, int ch)
   if (ch == SYM_CHAR_RESET)
     {
       vt102_reset_state (v);
-    } else if (p->in_dca) {
-       p->dca_buf[p->dca_ptr++]=ch;
-       if (p->dca_ptr==2) {
-          vt102_cursor_absolute (v, p->dca_buf[0] - 040, p->dca_buf[1]-040);
-       p->in_dca=0;
-       }
-    }else if (p->ignore_until_bell) {
+    }
+  else if (p->in_dca)
+    {
+      p->dca_buf[p->dca_ptr++] = ch;
+      if (p->dca_ptr == 2)
+        {
+          vt102_cursor_absolute (v, p->dca_buf[0] - 040, p->dca_buf[1] - 040);
+          p->in_dca = 0;
+        }
+    }
+  else if (p->ignore_until_bell)
+    {
       if (ch == 7)
         p->ignore_until_bell = 0;
     }
@@ -1455,9 +1464,10 @@ vt102_parse_char (Context * c, int ch)
          /*EOT*/ case 4:
           break;
          /*ENQ*/ case 5:
-          if (c->t) { 
-            c->t->xmit (c->t, "vt102", 5);
-         }
+          if (c->t)
+            {
+              c->t->xmit (c->t, "vt102", 5);
+            }
           break;
          /*ACK*/ case 6:
          /*BEL*/ case 7:
index d12182a4aa8cd88bf10c57bdc5689f3b9b74b752..2f7867d76c53da3db31161e332490ced44db2432 100644 (file)
@@ -12,6 +12,9 @@
 
 /*
  * $Log$
+ * Revision 1.16  2008/02/24 12:22:42  james
+ * *** empty log message ***
+ *
  * Revision 1.15  2008/02/24 00:42:53  james
  * *** empty log message ***
  *
 #define VT102_STATUS_ROW       24
 
 #define VT102_NMODES           32
+#define VT102_DCA_LEN          16
 
 
 typedef struct
 {
   int in_escape;
   int in_csi;
-  int csi_ptr;
+  int in_dca;
   int ignore_until_bell;
+  
+  int csi_ptr;
   char csi_buf[VT102_CSI_LEN];
+  int dca_ptr;
+  char dca_buf[VT102_DCA_LEN];
 } VT102_parser;
 
 typedef struct