aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.l')
-rw-r--r--src/parser.l794
1 files changed, 0 insertions, 794 deletions
diff --git a/src/parser.l b/src/parser.l
deleted file mode 100644
index e45d642..0000000
--- a/src/parser.l
+++ /dev/null
@@ -1,794 +0,0 @@
-%{
-#include <string.h>
-
-#include "runes.h"
-
-#define RUNES_PARSER_CSI_MAX_PARAMS 256
-
-#define YY_EXIT_FAILURE (UNUSED(yyscanner), 2)
-%}
-
-%option reentrant nodefault batch
-%option noyywrap nounput noinput noyyalloc noyyrealloc noyyfree
-%option prefix="runes_parser_yy"
-%option extra-type="RunesTerm *"
-
-CTRL [\000-\037\177]
-ASCII [\040-\176]
-LEAD2 [\300-\337]
-LEAD3 [\340-\357]
-LEAD4 [\360-\367]
-CONT [\200-\277]
-UNICHAR ({LEAD2}{CONT}|{LEAD3}{CONT}{CONT}|{LEAD4}{CONT}{CONT}{CONT})
-CHAR ({ASCII}|{UNICHAR})
-
-ST \007
-BEL \007
-BS \010
-TAB \011
-LF \012
-VT \013
-FF \014
-CR \015
-SI \017
-ESC \033
-
-DECKPAM {ESC}=
-DECKPNM {ESC}>
-CSI {ESC}\[
-OSC {ESC}\]
-RI {ESC}M
-RIS {ESC}c
-VB {ESC}g
-DECSC {ESC}7
-DECRC {ESC}8
-
-DECCSI {CSI}\?
-CSIPARAM1 ([0-9]+)?
-CSIPARAM2 ([0-9]+(;[0-9]+)?)?
-CSIPARAM24 ([0-9]+(;[0-9]+){1,3})?
-CSIPARAMS ([0-9]+(;[0-9]+)*)?
-SMPARAMS ([<=?]?[0-9]+(;[<=?]?[0-9]+)*)?
-
-ICH {CSI}{CSIPARAM1}@
-CUU {CSI}{CSIPARAM1}A
-CUD {CSI}{CSIPARAM1}B
-CUF {CSI}{CSIPARAM1}C
-CUB {CSI}{CSIPARAM1}D
-CUP {CSI}{CSIPARAM2}H
-ED {CSI}{CSIPARAM1}J
-EL {CSI}{CSIPARAM1}K
-IL {CSI}{CSIPARAM1}L
-DL {CSI}{CSIPARAM1}M
-DCH {CSI}{CSIPARAM1}P
-SM {CSI}{SMPARAMS}h
-RM {CSI}{SMPARAMS}l
-SGR {CSI}{CSIPARAMS}m
-CSR {CSI}{CSIPARAM24}r
-
-DECSED {DECCSI}{CSIPARAM1}J
-DECSEL {DECCSI}{CSIPARAM1}K
-
-OSC0 {OSC}0;{CHAR}*{ST}
-OSC1 {OSC}1;{CHAR}*{ST}
-OSC2 {OSC}2;{CHAR}*{ST}
-
-GZD4 {ESC}\([\040-\057]*[\060-\176]
-G1D4 {ESC}\)[\040-\057]*[\060-\176]
-G2D4 {ESC}\*[\040-\057]*[\060-\176]
-G3D4 {ESC}\+[\040-\057]*[\060-\176]
-
-%{
-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_deckpam(RunesTerm *t);
-static void runes_parser_handle_deckpnm(RunesTerm *t);
-static void runes_parser_handle_ri(RunesTerm *t);
-static void runes_parser_handle_ris(RunesTerm *t);
-static void runes_parser_handle_vb(RunesTerm *t);
-static void runes_parser_handle_decsc(RunesTerm *t);
-static void runes_parser_handle_decrc(RunesTerm *t);
-static void runes_parser_extract_csi_params(
- char *buf, size_t len, int *params, int *nparams);
-static void runes_parser_extract_sm_params(
- char *buf, size_t len, char *modes, int *params, int *nparams);
-static void runes_parser_handle_ich(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_il(RunesTerm *t, char *buf, size_t len);
-static void runes_parser_handle_dl(RunesTerm *t, char *buf, size_t len);
-static void runes_parser_handle_dch(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_csr(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);
-static void runes_parser_handle_ascii(RunesTerm *t, char *text, size_t len);
-static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len);
-%}
-
-%%
-
-{BEL} runes_parser_handle_bel(yyextra);
-{BS} runes_parser_handle_bs(yyextra);
-{TAB} runes_parser_handle_tab(yyextra);
-{LF} |
-{VT} |
-{FF} runes_parser_handle_lf(yyextra);
-{CR} runes_parser_handle_cr(yyextra);
-{SI}
-
-{DECKPAM} runes_parser_handle_deckpam(yyextra);
-{DECKPNM} runes_parser_handle_deckpnm(yyextra);
-{RI} runes_parser_handle_ri(yyextra);
-{RIS} runes_parser_handle_ris(yyextra);
-{VB} runes_parser_handle_vb(yyextra);
-{DECSC} runes_parser_handle_decsc(yyextra);
-{DECRC} runes_parser_handle_decrc(yyextra);
-
-{ICH} runes_parser_handle_ich(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);
-{IL} runes_parser_handle_il(yyextra, yytext, yyleng);
-{DL} runes_parser_handle_dl(yyextra, yytext, yyleng);
-{DCH} runes_parser_handle_dch(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);
-{CSR} runes_parser_handle_csr(yyextra, yytext, yyleng);
-
-{DECSED} runes_parser_handle_decsed(yyextra, yytext, yyleng);
-{DECSEL} runes_parser_handle_decsel(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);
-
-{GZD4} |
-{G1D4} |
-{G2D4} |
-{G3D4}
-
-{ASCII}+ runes_parser_handle_ascii(yyextra, yytext, yyleng);
-{CHAR}+ runes_parser_handle_text(yyextra, yytext, yyleng);
-
-{LEAD2} |
-{LEAD3}{CONT}? |
-{LEAD4}{CONT}?{CONT}? |
-{CSI}[<=?]?{CSIPARAMS}[0-9;] |
-{CSI} |
-{OSC} |
-{ESC} return yyleng;
-
-<<EOF>> return 0;
-
-{CSI}[<=?]?{CSIPARAMS}{CTRL} {
- runes_warn(
- "unhandled CSI sequence: \\033%*s\\%hho\n",
- (int)yyleng - 2, yytext + 1, yytext[yyleng - 1]);
-}
-
-{CSI}[<=?]?{CSIPARAMS}{CHAR} {
- runes_warn(
- "unhandled CSI sequence: \\033%*s\n",
- (int)yyleng - 1, yytext + 1);
-}
-
-{OSC}{CTRL} {
- runes_warn(
- "unhandled OSC sequence: \\033%*s\\%hho\n",
- (int)yyleng - 2, yytext + 1, yytext[yyleng - 1]);
-}
-
-{OSC}{CHAR} {
- runes_warn(
- "unhandled OSC sequence: \\033%*s\n",
- (int)yyleng - 1, yytext + 1);
-}
-
-{ESC}{CTRL} {
- runes_warn("unhandled escape sequence: \\%hho\n", yytext[1]);
-}
-
-{ESC}{CHAR} {
- runes_warn(
- "unhandled escape sequence: %*s\n",
- (int)yyleng - 1, yytext + 1);
-}
-
-{CTRL} {
- runes_warn("unhandled control character: \\%hho\n", yytext[0]);
-}
-
-(?s:.) {
- runes_warn("invalid utf8 byte: \\%hho\n", yytext[0]);
-}
-
-%%
-
-static void runes_parser_handle_bel(RunesTerm *t)
-{
- if (t->config.audible_bell) {
- runes_screen_audible_bell(t);
- }
- else {
- runes_screen_visual_bell(t);
- }
-}
-
-static void runes_parser_handle_bs(RunesTerm *t)
-{
- runes_screen_move_to(t, t->scr.grid->cur.row, t->scr.grid->cur.col - 1);
-}
-
-static void runes_parser_handle_tab(RunesTerm *t)
-{
- runes_screen_move_to(
- t, t->scr.grid->cur.row,
- t->scr.grid->cur.col - (t->scr.grid->cur.col % 8) + 8);
-}
-
-static void runes_parser_handle_lf(RunesTerm *t)
-{
- runes_screen_move_to(t, t->scr.grid->cur.row + 1, t->scr.grid->cur.col);
-}
-
-static void runes_parser_handle_cr(RunesTerm *t)
-{
- runes_screen_move_to(t, t->scr.grid->cur.row, 0);
-}
-
-static void runes_parser_handle_deckpam(RunesTerm *t)
-{
- runes_screen_set_application_keypad(t);
-}
-
-static void runes_parser_handle_deckpnm(RunesTerm *t)
-{
- runes_screen_reset_application_keypad(t);
-}
-
-static void runes_parser_handle_ri(RunesTerm *t)
-{
- runes_screen_move_to(t, t->scr.grid->cur.row - 1, t->scr.grid->cur.col);
-}
-
-static void runes_parser_handle_ris(RunesTerm *t)
-{
- runes_screen_use_normal_buffer(t);
- runes_screen_set_scroll_region(
- t, 0, t->scr.grid->max.row - 1, 0, t->scr.grid->max.col - 1);
- runes_screen_clear_screen(t);
- runes_screen_save_cursor(t);
- runes_screen_reset_text_attributes(t);
- runes_screen_show_cursor(t);
- runes_screen_reset_application_keypad(t);
- runes_screen_reset_application_cursor(t);
- runes_screen_reset_mouse_reporting_press(t);
- runes_screen_reset_mouse_reporting_press_release(t);
-}
-
-static void runes_parser_handle_vb(RunesTerm *t)
-{
- runes_screen_visual_bell(t);
-}
-
-static void runes_parser_handle_decsc(RunesTerm *t)
-{
- runes_screen_save_cursor(t);
-}
-
-static void runes_parser_handle_decrc(RunesTerm *t)
-{
- runes_screen_restore_cursor(t);
-}
-
-static void runes_parser_extract_csi_params(
- char *buf, size_t len, int *params, int *nparams)
-{
- runes_parser_extract_sm_params(buf, len, NULL, params, nparams);
-}
-
-static void runes_parser_extract_sm_params(
- char *buf, size_t len, char *modes, int *params, int *nparams)
-{
- char *pos = buf;
-
- /* this assumes that it will only ever be called on a fully matched CSI
- * sequence: accessing one character beyond the end is safe because CSI
- * sequences always have one character after the parameters (to determine
- * the type of sequence), and the parameters can only ever be digits,
- * separated by semicolons. */
- buf[len] = '\0';
- *nparams = 0;
- while ((size_t)(pos - buf) < len) {
- if (*nparams >= RUNES_PARSER_CSI_MAX_PARAMS) {
- runes_warn("max CSI parameter length exceeded\n");
- break;
- }
-
- if (modes && (size_t)(pos - buf) < len) {
- if (strspn(pos, "0123456789")) {
- modes[*nparams] = '\0';
- }
- else {
- modes[*nparams] = *pos++;
- }
- }
-
- params[(*nparams)++] = atoi(pos);
-
- pos = strchr(pos, ';');
- if (pos) {
- pos++;
- }
- else {
- break;
- }
- }
-}
-
-static void runes_parser_handle_ich(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_insert_characters(t, params[0]);
-}
-
-static void runes_parser_handle_cuu(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_move_to(
- t, t->scr.grid->cur.row - params[0], t->scr.grid->cur.col);
-}
-
-static void runes_parser_handle_cud(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_move_to(
- t, t->scr.grid->cur.row + params[0], t->scr.grid->cur.col);
-}
-
-static void runes_parser_handle_cuf(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_move_to(
- t, t->scr.grid->cur.row, t->scr.grid->cur.col + params[0]);
-}
-
-static void runes_parser_handle_cub(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_move_to(
- t, t->scr.grid->cur.row, t->scr.grid->cur.col - params[0]);
-}
-
-static void runes_parser_handle_cup(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0, 0 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- if (params[0] == 0) {
- params[0] = 1;
- }
- if (params[1] == 0) {
- params[1] = 1;
- }
- runes_screen_move_to(t, params[0] - 1, params[1] - 1);
-}
-
-static void runes_parser_handle_ed(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- switch (params[0]) {
- case 0:
- runes_screen_clear_screen_forward(t);
- break;
- case 1:
- runes_screen_clear_screen_backward(t);
- break;
- case 2:
- runes_screen_clear_screen(t);
- break;
- default:
- runes_warn("unknown ED parameter %d\n", params[0]);
- break;
- }
-}
-
-static void runes_parser_handle_el(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- switch (params[0]) {
- case 0:
- runes_screen_kill_line_forward(t);
- break;
- case 1:
- runes_screen_kill_line_backward(t);
- break;
- case 2:
- runes_screen_kill_line(t);
- break;
- default:
- runes_warn("unknown EL parameter %d\n", params[0]);
- break;
- }
-}
-
-static void runes_parser_handle_il(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_insert_lines(t, params[0]);
- runes_screen_move_to(t, t->scr.grid->cur.row, 0);
-}
-
-static void runes_parser_handle_dl(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_delete_lines(t, params[0]);
- runes_screen_move_to(t, t->scr.grid->cur.row, 0);
-}
-
-static void runes_parser_handle_dch(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- runes_screen_delete_characters(t, params[0]);
-}
-
-static void runes_parser_handle_sm(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS], nparams, i;
- char modes[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 };
-
- runes_parser_extract_sm_params(buf + 2, len - 3, modes, params, &nparams);
- for (i = 0; i < nparams; ++i) {
- switch (modes[i]) {
- case 0:
- switch (params[i]) {
- case 34:
- /* do nothing, no idea what this is even for */
- break;
- default:
- runes_warn("unknown SM parameter: %d\n", params[i]);
- break;
- }
- break;
- case '?':
- switch (params[i]) {
- case 1:
- runes_screen_set_application_cursor(t);
- break;
- case 9:
- runes_screen_set_mouse_reporting_press(t);
- break;
- case 25:
- runes_screen_show_cursor(t);
- break;
- case 1000:
- runes_screen_set_mouse_reporting_press_release(t);
- break;
- case 47:
- case 1049:
- runes_screen_use_alternate_buffer(t);
- break;
- case 2004:
- runes_screen_set_bracketed_paste(t);
- break;
- default:
- runes_warn(
- "unknown SM parameter: %c%d\n", modes[i], params[i]);
- break;
- }
- break;
- default:
- runes_warn("unknown SM parameter: %c%d\n", modes[i], params[i]);
- break;
- }
- }
-}
-
-static void runes_parser_handle_rm(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS], nparams, i;
- char modes[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 };
-
- runes_parser_extract_sm_params(buf + 2, len - 3, modes, params, &nparams);
- for (i = 0; i < nparams; ++i) {
- switch (modes[i]) {
- case 0:
- switch (params[i]) {
- case 34:
- /* do nothing, no idea what this is even for */
- break;
- default:
- runes_warn("unknown RM parameter: %d\n", params[i]);
- break;
- }
- break;
- case '?':
- switch (params[i]) {
- case 1:
- runes_screen_set_application_cursor(t);
- break;
- case 9:
- runes_screen_set_mouse_reporting_press(t);
- break;
- case 25:
- runes_screen_hide_cursor(t);
- break;
- case 1000:
- runes_screen_set_mouse_reporting_press_release(t);
- break;
- case 47:
- case 1049:
- runes_screen_use_normal_buffer(t);
- break;
- case 2004:
- runes_screen_reset_bracketed_paste(t);
- break;
- default:
- runes_warn(
- "unknown RM parameter: %c%d\n", modes[i], params[i]);
- break;
- }
- break;
- default:
- runes_warn("unknown RM parameter: %c%d\n", modes[i], params[i]);
- break;
- }
- }
-}
-
-static void runes_parser_handle_sgr(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 0 }, nparams, i;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
- if (nparams < 1) {
- nparams = 1;
- }
- for (i = 0; i < nparams; ++i) {
- switch (params[i]) {
- case 0:
- runes_screen_reset_text_attributes(t);
- break;
- case 1:
- runes_screen_set_bold(t);
- break;
- case 3:
- runes_screen_set_italic(t);
- break;
- case 4:
- runes_screen_set_underline(t);
- break;
- case 7:
- runes_screen_set_inverse(t);
- break;
- case 22:
- runes_screen_reset_bold(t);
- break;
- case 23:
- runes_screen_reset_italic(t);
- break;
- case 24:
- runes_screen_reset_underline(t);
- break;
- case 27:
- runes_screen_reset_inverse(t);
- break;
- case 30: case 31: case 32: case 33:
- case 34: case 35: case 36: case 37:
- runes_screen_set_fg_color(t, params[i] - 30);
- break;
- case 38: {
- i++;
- if (i >= nparams) {
- runes_warn(
- "unknown SGR parameter: %d (too few parameters)\n",
- params[i - 1]);
- break;
- }
-
- switch (params[i]) {
- case 2:
- i += 3;
- if (i >= nparams) {
- runes_warn(
- "unknown SGR parameter: %d;%d (too few parameters)\n",
- params[i - 4], params[i - 3]);
- break;
- }
- runes_screen_set_fg_color_rgb(
- t, params[i - 2], params[i - 1], params[i]);
- break;
- case 5:
- i++;
- if (i >= nparams) {
- runes_warn(
- "unknown SGR parameter: %d;%d (too few parameters)\n",
- params[i - 2], params[i - 1]);
- break;
- }
- runes_screen_set_fg_color(t, params[i]);
- break;
- default:
- i++;
- runes_warn(
- "unknown SGR parameter: %d;%d\n",
- params[i - 2], params[i - 1]);
- break;
- }
- break;
- }
- case 39:
- runes_screen_reset_fg_color(t);
- break;
- case 40: case 41: case 42: case 43:
- case 44: case 45: case 46: case 47:
- runes_screen_set_bg_color(t, params[i] - 40);
- break;
- case 48: {
- i++;
- if (i >= nparams) {
- runes_warn(
- "unknown SGR parameter: %d (too few parameters)\n",
- params[i - 1]);
- break;
- }
-
- switch (params[i]) {
- case 2:
- i += 3;
- if (i >= nparams) {
- runes_warn(
- "unknown SGR parameter: %d;%d (too few parameters)\n",
- params[i - 4], params[i - 3]);
- break;
- }
- runes_screen_set_bg_color_rgb(
- t, params[i - 2], params[i - 1], params[i]);
- break;
- case 5:
- i++;
- if (i >= nparams) {
- runes_warn(
- "unknown SGR parameter: %d;%d (too few parameters)\n",
- params[i - 2], params[i - 1]);
- break;
- }
- runes_screen_set_bg_color(t, params[i]);
- break;
- default:
- i++;
- runes_warn(
- "unknown SGR parameter: %d;%d\n",
- params[i - 2], params[i - 1]);
- break;
- }
- break;
- }
- case 49:
- runes_screen_reset_bg_color(t);
- break;
- case 90: case 91: case 92: case 93:
- case 94: case 95: case 96: case 97:
- runes_screen_set_fg_color(t, params[i] - 82);
- break;
- case 100: case 101: case 102: case 103:
- case 104: case 105: case 106: case 107:
- runes_screen_set_bg_color(t, params[i] - 92);
- break;
- default:
- runes_warn("unknown SGR parameter: %d\n", params[i]);
- break;
- }
- }
-}
-
-static void runes_parser_handle_csr(RunesTerm *t, char *buf, size_t len)
-{
- int params[RUNES_PARSER_CSI_MAX_PARAMS] = {
- 1, t->scr.grid->max.row, 1, t->scr.grid->max.col };
- int nparams;
-
- runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams);
-
- runes_screen_set_scroll_region(
- t, params[0] - 1, params[1] - 1, params[2] - 1, params[3] - 1);
-}
-
-static void runes_parser_handle_decsed(RunesTerm *t, char *buf, size_t len)
-{
- /* XXX not quite correct, but i don't think programs really use anything
- * that would show a difference */
- runes_parser_handle_ed(t, buf, len);
-}
-
-static void runes_parser_handle_decsel(RunesTerm *t, char *buf, size_t len)
-{
- /* XXX not quite correct, but i don't think programs really use anything
- * that would show a difference */
- runes_parser_handle_el(t, buf, len);
-}
-
-static void runes_parser_handle_osc0(RunesTerm *t, char *buf, size_t len)
-{
- runes_screen_set_icon_name(t, buf + 4, len - 5);
- runes_screen_set_window_title(t, buf + 4, len - 5);
-}
-
-static void runes_parser_handle_osc1(RunesTerm *t, char *buf, size_t len)
-{
- runes_screen_set_icon_name(t, buf + 4, len - 5);
-}
-
-static void runes_parser_handle_osc2(RunesTerm *t, char *buf, size_t len)
-{
- runes_screen_set_window_title(t, buf + 4, len - 5);
-}
-
-static void runes_parser_handle_ascii(RunesTerm *t, char *text, size_t len)
-{
- runes_screen_show_string_ascii(t, text, len);
-}
-
-static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len)
-{
- runes_screen_show_string_utf8(t, text, len);
-}
-
-/* XXX these are copied from the generated file so that I can add the UNUSED
- * declarations, otherwise we get compilation errors */
-void *runes_parser_yyalloc(yy_size_t size, yyscan_t yyscanner)
-{
- UNUSED(yyscanner);
- return (void *)malloc(size);
-}
-
-void *runes_parser_yyrealloc(void *ptr, yy_size_t size, yyscan_t yyscanner)
-{
- UNUSED(yyscanner);
- return (void *)realloc((char *)ptr, size);
-}
-
-void runes_parser_yyfree(void *ptr, yyscan_t yyscanner)
-{
- UNUSED(yyscanner);
- free((char *) ptr);
-}