aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vt102.c94
-rw-r--r--src/vt102.h10
2 files changed, 61 insertions, 43 deletions
diff --git a/src/vt102.c b/src/vt102.c
index 598e4a3..f378c16 100644
--- a/src/vt102.c
+++ b/src/vt102.c
@@ -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:
diff --git a/src/vt102.h b/src/vt102.h
index d12182a..2f7867d 100644
--- a/src/vt102.h
+++ b/src/vt102.h
@@ -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 ***
*
@@ -69,15 +72,20 @@
#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