aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile6
-rw-r--r--parser.h6
-rw-r--r--parser.l (renamed from vt100.l)208
-rw-r--r--pty-unix.c2
-rw-r--r--runes.h2
-rw-r--r--vt100.h6
7 files changed, 116 insertions, 116 deletions
diff --git a/.gitignore b/.gitignore
index e9f6a48..c4aa6ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
*.o
runes
-vt100.c
+parser.c
diff --git a/Makefile b/Makefile
index e84d562..889371c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,17 +1,17 @@
OUT = runes
-OBJ = runes.o display.o term.o vt100.o window-xlib.o pty-unix.o
+OBJ = runes.o display.o term.o parser.o window-xlib.o pty-unix.o
LIBS = cairo cairo-xlib libuv
CFLAGS ?= -g -Wall -Wextra -Werror
LDFLAGS ?= -g -Wall -Wextra -Werror
-GENERATED = vt100.c
+GENERATED = parser.c
build: $(OUT)
$(OUT): $(OBJ)
$(CC) $(shell pkg-config --libs $(LIBS)) $(LDFLAGS) -o $@ $^
-vt100.o: vt100.c
+parser.o: parser.c
$(CC) $(shell pkg-config --cflags $(LIBS)) $(CFLAGS) -Wno-unused-parameter -Wno-unused-function -Wno-unused-variable -Wno-unused-value -c -o $@ $^
%.o: %.c
diff --git a/parser.h b/parser.h
new file mode 100644
index 0000000..ea449a8
--- /dev/null
+++ b/parser.h
@@ -0,0 +1,6 @@
+#ifndef _RUNES_PARSER_H
+#define _RUNES_PARSER_H
+
+void runes_parser_process_string(RunesTerm *t, char *buf, size_t len);
+
+#endif
diff --git a/vt100.l b/parser.l
index 24bd8df..b24ad53 100644
--- a/vt100.l
+++ b/parser.l
@@ -3,11 +3,11 @@
#include "runes.h"
-#define RUNES_VT100_CSI_MAX_PARAMS 256
+#define RUNES_PARSER_CSI_MAX_PARAMS 256
%}
%option reentrant noyywrap nodefault batch
-%option prefix="runes_vt100_yy"
+%option prefix="runes_parser_yy"
%option extra-type="RunesTerm *"
CTRL [\000-\037\177]
@@ -52,65 +52,65 @@ OSC1 {OSC}1;{TEXT}*{ST}
OSC2 {OSC}2;{TEXT}*{ST}
%{
-static void runes_vt100_handle_text(RunesTerm *t, char *text, size_t len);
-static void runes_vt100_handle_bel(RunesTerm *t);
-static void runes_vt100_handle_bs(RunesTerm *t);
-static void runes_vt100_handle_tab(RunesTerm *t);
-static void runes_vt100_handle_lf(RunesTerm *t);
-static void runes_vt100_handle_cr(RunesTerm *t);
-static void runes_vt100_handle_ri(RunesTerm *t);
-static void runes_vt100_extract_csi_params(
+static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len);
+static void runes_parser_handle_bel(RunesTerm *t);
+static void runes_parser_handle_bs(RunesTerm *t);
+static void runes_parser_handle_tab(RunesTerm *t);
+static void runes_parser_handle_lf(RunesTerm *t);
+static void runes_parser_handle_cr(RunesTerm *t);
+static void runes_parser_handle_ri(RunesTerm *t);
+static void runes_parser_extract_csi_params(
char *buf, size_t len, int *params, int *nparams);
-static void runes_vt100_extract_sm_params(
+static void runes_parser_extract_sm_params(
char *buf, size_t len, char *modes, int *params, int *nparams);
-static void runes_vt100_handle_cuu(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_cud(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_cuf(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_cub(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_cup(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_ed(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_el(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_sm(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_rm(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_sgr(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_decsed(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_decsel(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_osc0(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_osc1(RunesTerm *t, char *buf, size_t len);
-static void runes_vt100_handle_osc2(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_cuu(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_cud(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_cuf(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_cub(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_cup(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_ed(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_el(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_sm(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_rm(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_sgr(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_decsed(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_decsel(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_osc0(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_osc1(RunesTerm *t, char *buf, size_t len);
+static void runes_parser_handle_osc2(RunesTerm *t, char *buf, size_t len);
%}
%%
-{TEXT}+ runes_vt100_handle_text(yyextra, yytext, yyleng);
+{TEXT}+ runes_parser_handle_text(yyextra, yytext, yyleng);
-{BEL} runes_vt100_handle_bel(yyextra);
-{BS} runes_vt100_handle_bs(yyextra);
-{TAB} runes_vt100_handle_tab(yyextra);
+{BEL} runes_parser_handle_bel(yyextra);
+{BS} runes_parser_handle_bs(yyextra);
+{TAB} runes_parser_handle_tab(yyextra);
{LF} |
{VT} |
-{FF} runes_vt100_handle_lf(yyextra);
-{CR} runes_vt100_handle_cr(yyextra);
+{FF} runes_parser_handle_lf(yyextra);
+{CR} runes_parser_handle_cr(yyextra);
-{RI} runes_vt100_handle_ri(yyextra);
+{RI} runes_parser_handle_ri(yyextra);
-{CUU} runes_vt100_handle_cuu(yyextra, yytext, yyleng);
-{CUD} runes_vt100_handle_cud(yyextra, yytext, yyleng);
-{CUF} runes_vt100_handle_cuf(yyextra, yytext, yyleng);
-{CUB} runes_vt100_handle_cub(yyextra, yytext, yyleng);
-{CUP} runes_vt100_handle_cup(yyextra, yytext, yyleng);
-{ED} runes_vt100_handle_ed(yyextra, yytext, yyleng);
-{EL} runes_vt100_handle_el(yyextra, yytext, yyleng);
-{SM} runes_vt100_handle_sm(yyextra, yytext, yyleng);
-{RM} runes_vt100_handle_rm(yyextra, yytext, yyleng);
-{SGR} runes_vt100_handle_sgr(yyextra, yytext, yyleng);
+{CUU} runes_parser_handle_cuu(yyextra, yytext, yyleng);
+{CUD} runes_parser_handle_cud(yyextra, yytext, yyleng);
+{CUF} runes_parser_handle_cuf(yyextra, yytext, yyleng);
+{CUB} runes_parser_handle_cub(yyextra, yytext, yyleng);
+{CUP} runes_parser_handle_cup(yyextra, yytext, yyleng);
+{ED} runes_parser_handle_ed(yyextra, yytext, yyleng);
+{EL} runes_parser_handle_el(yyextra, yytext, yyleng);
+{SM} runes_parser_handle_sm(yyextra, yytext, yyleng);
+{RM} runes_parser_handle_rm(yyextra, yytext, yyleng);
+{SGR} runes_parser_handle_sgr(yyextra, yytext, yyleng);
-{DECSED} runes_vt100_handle_decsed(yyextra, yytext, yyleng);
-{DECSEL} runes_vt100_handle_decsel(yyextra, yytext, yyleng);
+{DECSED} runes_parser_handle_decsed(yyextra, yytext, yyleng);
+{DECSEL} runes_parser_handle_decsel(yyextra, yytext, yyleng);
-{OSC0} runes_vt100_handle_osc0(yyextra, yytext, yyleng);
-{OSC1} runes_vt100_handle_osc1(yyextra, yytext, yyleng);
-{OSC2} runes_vt100_handle_osc2(yyextra, yytext, yyleng);
+{OSC0} runes_parser_handle_osc0(yyextra, yytext, yyleng);
+{OSC1} runes_parser_handle_osc1(yyextra, yytext, yyleng);
+{OSC2} runes_parser_handle_osc2(yyextra, yytext, yyleng);
{CSI}[<=?]?{CSIPARAMS}(?s:.) {
fprintf(
@@ -140,60 +140,60 @@ static void runes_vt100_handle_osc2(RunesTerm *t, char *buf, size_t len);
%%
-void runes_vt100_process_string(RunesTerm *t, char *buf, size_t len)
+void runes_parser_process_string(RunesTerm *t, char *buf, size_t len)
{
YY_BUFFER_STATE state;
yyscan_t scanner;
yylex_init_extra(t, &scanner);
- state = runes_vt100_yy_scan_bytes(buf, len, scanner);
- runes_vt100_yylex(scanner);
- runes_vt100_yy_delete_buffer(state, scanner);
+ state = runes_parser_yy_scan_bytes(buf, len, scanner);
+ runes_parser_yylex(scanner);
+ runes_parser_yy_delete_buffer(state, scanner);
yylex_destroy(scanner);
}
-static void runes_vt100_handle_text(RunesTerm *t, char *text, size_t len)
+static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len)
{
runes_display_show_string(t, text, len);
}
-static void runes_vt100_handle_bel(RunesTerm *t)
+static void runes_parser_handle_bel(RunesTerm *t)
{
/* XXX */
}
-static void runes_vt100_handle_bs(RunesTerm *t)
+static void runes_parser_handle_bs(RunesTerm *t)
{
runes_display_move_to(t, t->row, t->col - 1);
}
-static void runes_vt100_handle_tab(RunesTerm *t)
+static void runes_parser_handle_tab(RunesTerm *t)
{
runes_display_move_to(t, t->row, t->col - (t->col % 8) + 8);
}
-static void runes_vt100_handle_lf(RunesTerm *t)
+static void runes_parser_handle_lf(RunesTerm *t)
{
runes_display_move_to(t, t->row + 1, t->col);
}
-static void runes_vt100_handle_cr(RunesTerm *t)
+static void runes_parser_handle_cr(RunesTerm *t)
{
runes_display_move_to(t, t->row, 0);
}
-static void runes_vt100_handle_ri(RunesTerm *t)
+static void runes_parser_handle_ri(RunesTerm *t)
{
runes_display_move_to(t, t->row - 1, t->col);
}
-static void runes_vt100_extract_csi_params(
+static void runes_parser_extract_csi_params(
char *buf, size_t len, int *params, int *nparams)
{
- runes_vt100_extract_sm_params(buf, len, NULL, params, nparams);
+ runes_parser_extract_sm_params(buf, len, NULL, params, nparams);
}
-static void runes_vt100_extract_sm_params(
+static void runes_parser_extract_sm_params(
char *buf, size_t len, char *modes, int *params, int *nparams)
{
char tmp = buf[len];
@@ -207,7 +207,7 @@ static void runes_vt100_extract_sm_params(
buf[len] = '\0';
*nparams = 0;
while ((size_t)(pos - buf) < len) {
- if (*nparams >= RUNES_VT100_CSI_MAX_PARAMS) {
+ if (*nparams >= RUNES_PARSER_CSI_MAX_PARAMS) {
fprintf(stderr, "max CSI parameter length exceeded\n");
break;
}
@@ -233,43 +233,43 @@ static void runes_vt100_extract_sm_params(
}
}
-static void runes_vt100_handle_cuu(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_cuu(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 1 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
runes_display_move_to(t, t->row - params[0], t->col);
}
-static void runes_vt100_handle_cud(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_cud(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 1 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
runes_display_move_to(t, t->row + params[0], t->col);
}
-static void runes_vt100_handle_cuf(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_cuf(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 1 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
runes_display_move_to(t, t->row, t->col + params[0]);
}
-static void runes_vt100_handle_cub(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_cub(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 1 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
runes_display_move_to(t, t->row, t->col - params[0]);
}
-static void runes_vt100_handle_cup(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_cup(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 0, 0 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0, 0 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
if (params[0] == 0) {
params[0] = 1;
}
@@ -279,11 +279,11 @@ static void runes_vt100_handle_cup(RunesTerm *t, char *buf, size_t len)
runes_display_move_to(t, params[0] - 1, params[1] - 1);
}
-static void runes_vt100_handle_ed(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_ed(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 0 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
switch (params[0]) {
case 0:
runes_display_clear_screen_forward(t);
@@ -301,11 +301,11 @@ static void runes_vt100_handle_ed(RunesTerm *t, char *buf, size_t len)
}
}
-static void runes_vt100_handle_el(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_el(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 0 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
switch (params[0]) {
case 0:
runes_display_kill_line_forward(t);
@@ -324,12 +324,12 @@ static void runes_vt100_handle_el(RunesTerm *t, char *buf, size_t len)
}
}
-static void runes_vt100_handle_sm(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_sm(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS], nparams, i;
- char modes[RUNES_VT100_CSI_MAX_PARAMS] = { 0 };
+ int params[RUNES_PARSER_CSI_MAX_PARAMS], nparams, i;
+ char modes[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 };
- runes_vt100_extract_sm_params(buf + 2, len - 3, modes, params, &nparams);
+ runes_parser_extract_sm_params(buf + 2, len - 3, modes, params, &nparams);
for (i = 0; i < nparams; ++i) {
switch (modes[i]) {
case '?':
@@ -353,12 +353,12 @@ static void runes_vt100_handle_sm(RunesTerm *t, char *buf, size_t len)
}
}
-static void runes_vt100_handle_rm(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_rm(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS], nparams, i;
- char modes[RUNES_VT100_CSI_MAX_PARAMS] = { 0 };
+ int params[RUNES_PARSER_CSI_MAX_PARAMS], nparams, i;
+ char modes[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 };
- runes_vt100_extract_sm_params(buf + 2, len - 3, modes, params, &nparams);
+ runes_parser_extract_sm_params(buf + 2, len - 3, modes, params, &nparams);
for (i = 0; i < nparams; ++i) {
switch (modes[i]) {
case '?':
@@ -382,11 +382,11 @@ static void runes_vt100_handle_rm(RunesTerm *t, char *buf, size_t len)
}
}
-static void runes_vt100_handle_sgr(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_sgr(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 0 }, nparams, i;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams, i;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
if (nparams < 1) {
nparams = 1;
}
@@ -434,11 +434,11 @@ static void runes_vt100_handle_sgr(RunesTerm *t, char *buf, size_t len)
}
}
-static void runes_vt100_handle_decsed(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_decsed(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 0 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
switch (params[0]) {
case 0:
/* XXX not quite correct */
@@ -458,11 +458,11 @@ static void runes_vt100_handle_decsed(RunesTerm *t, char *buf, size_t len)
}
}
-static void runes_vt100_handle_decsel(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_decsel(RunesTerm *t, char *buf, size_t len)
{
- int params[RUNES_VT100_CSI_MAX_PARAMS] = { 0 }, nparams;
+ int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams;
- runes_vt100_extract_csi_params(buf + 2, len - 3, params, &nparams);
+ runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
switch (params[0]) {
case 0:
/* XXX not quite correct */
@@ -482,18 +482,18 @@ static void runes_vt100_handle_decsel(RunesTerm *t, char *buf, size_t len)
}
}
-static void runes_vt100_handle_osc0(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_osc0(RunesTerm *t, char *buf, size_t len)
{
runes_window_backend_set_icon_name(t, buf + 4, len - 5);
runes_window_backend_set_window_title(t, buf + 4, len - 5);
}
-static void runes_vt100_handle_osc1(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_osc1(RunesTerm *t, char *buf, size_t len)
{
runes_window_backend_set_icon_name(t, buf + 4, len - 5);
}
-static void runes_vt100_handle_osc2(RunesTerm *t, char *buf, size_t len)
+static void runes_parser_handle_osc2(RunesTerm *t, char *buf, size_t len)
{
runes_window_backend_set_window_title(t, buf + 4, len - 5);
}
diff --git a/pty-unix.c b/pty-unix.c
index 6eda780..a5264f9 100644
--- a/pty-unix.c
+++ b/pty-unix.c
@@ -117,7 +117,7 @@ static void runes_pty_backend_got_data(uv_work_t *req, int status)
t = data->data.t;
if (data->len > 0) {
- runes_vt100_process_string(t, data->buf, data->len);
+ runes_parser_process_string(t, data->buf, data->len);
uv_queue_work(
t->loop, req, runes_pty_backend_read, runes_pty_backend_got_data);
}
diff --git a/runes.h b/runes.h
index 7ba6be2..3291f7a 100644
--- a/runes.h
+++ b/runes.h
@@ -24,7 +24,7 @@ struct runes_loop_data {
#include "term.h"
#include "display.h"
-#include "vt100.h"
+#include "parser.h"
#define UNUSED(x) ((void)x)
diff --git a/vt100.h b/vt100.h
deleted file mode 100644
index 3a692a4..0000000
--- a/vt100.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _RUNES_VT100_H
-#define _RUNES_VT100_H
-
-void runes_vt100_process_string(RunesTerm *t, char *buf, size_t len);
-
-#endif