sync with OpenBSD -current

This commit is contained in:
purplerain 2025-01-10 01:40:29 +00:00
parent 4b49aefbb1
commit 1fd36b57f8
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
945 changed files with 81965 additions and 59988 deletions

View file

@ -1,4 +1,4 @@
/* $XTermId: charproc.c,v 1.2032 2024/07/10 21:09:42 tom Exp $ */
/* $XTermId: charproc.c,v 1.2047 2024/10/03 22:56:45 tom Exp $ */
/*
* Copyright 1999-2023,2024 by Thomas E. Dickey
@ -870,14 +870,7 @@ static void VTResize(Widget w);
static void VTInitI18N(XtermWidget);
#endif
#ifdef VMS
globaldef {
"xtermclassrec"
} noshare
#else
static
#endif /* VMS */
WidgetClassRec xtermClassRec =
{
{
@ -917,12 +910,6 @@ WidgetClassRec xtermClassRec =
}
};
#ifdef VMS
globaldef {
"xtermwidgetclass"
}
noshare
#endif /* VMS */
WidgetClass xtermWidgetClass = (WidgetClass) & xtermClassRec;
/*
@ -1231,7 +1218,7 @@ saveCharsets(TScreen *screen, DECNRCM_codes * target)
}
void
restoreCharsets(TScreen *screen, DECNRCM_codes * source)
restoreCharsets(TScreen *screen, const DECNRCM_codes * source)
{
int g;
for (g = 0; g < NUM_GSETS2; ++g) {
@ -1417,7 +1404,7 @@ set_max_row(TScreen *screen, int rows)
#if OPT_TRACE
#define DATA(name) { name, #name }
static const struct {
Const PARSE_T *table;
const PARSE_T *table;
const char *name;
} all_tables[] = {
@ -1471,7 +1458,7 @@ static const struct {
#define WHICH_TABLE(name) if (table == name) result = #name
static const char *
which_table(Const PARSE_T * table)
which_table(const PARSE_T * table)
{
const char *result = "?";
Cardinal n;
@ -1496,7 +1483,7 @@ check_tables(void)
TRACE(("** check_tables\n"));
for (n = 0; n < XtNumber(all_tables); ++n) {
Const PARSE_T *table = all_tables[n].table;
const PARSE_T *table = all_tables[n].table;
TRACE(("*** %s\n", all_tables[n].name));
/*
* Most of the tables should use the same codes in 0..31, 128..159
@ -1571,7 +1558,7 @@ check_bitmasks(void)
static struct {
int mode;
int code;
Const char *name;
const char *name;
} table[] = {
DATA(DGRP(1), INVERSE),
DATA(DGRP(1), UNDERLINE),
@ -1736,8 +1723,8 @@ struct ParseState {
#if OPT_VT52_MODE
Bool vt52_cup;
#endif
Const PARSE_T *groundtable;
Const PARSE_T *parsestate;
const PARSE_T *groundtable;
const PARSE_T *parsestate;
int scstype;
int scssize;
Bool private_function; /* distinguish private-mode from standard */
@ -1835,9 +1822,13 @@ static const struct {
{ nrc_Norwegian_Danish, 0, '`', 3, 9, 1, 0 },
{ nrc_Portugese, '%', '6', 3, 9, 1, 0 },
{ nrc_ISO_Latin_1_Supp, 0, 'A', 3, 9, 0, 1 },
{ nrc_JIS_Katakana, 0, 'I', 3, 3, 0, 0 },
{ nrc_JIS_Roman, 0, 'J', 3, 3, 0, 0 },
/* VT5xx */
{ nrc_Greek, '"', '>', 5, 9, 1, 0 },
{ nrc_Hebrew, '%', '=', 5, 9, 1, 0 },
{ nrc_Russian, '&', '5', 5, 9, 1, 0 },
{ nrc_SCS_NRCS, '%', '3', 5, 9, 1, 0 },
{ nrc_Turkish, '%', '2', 5, 9, 1, 0 },
{ nrc_DEC_Cyrillic, '&', '4', 5, 9, 0, 0 },
{ nrc_DEC_Greek_Supp, '"', '?', 5, 9, 0, 0 },
@ -1848,11 +1839,6 @@ static const struct {
{ nrc_ISO_Latin_2_Supp, 0, 'B', 5, 9, 0, 1 },
{ nrc_ISO_Latin_5_Supp, 0, 'M', 5, 9, 0, 1 },
{ nrc_ISO_Latin_Cyrillic,0, 'L', 5, 9, 0, 1 },
/* VT5xx (not implemented) */
#if 0
{ nrc_Russian, '&', '5', 5, 9, 1, 0 },
{ nrc_SCS_NRCS, '%', '3', 5, 9, 0, 0 },
#endif
};
/* *INDENT-ON* */
@ -1901,7 +1887,8 @@ xtermDecodeSCS(XtermWidget xw, int which, int sgroup, int prefix, int suffix)
Cardinal n;
DECNRCM_codes result = nrc_Unknown;
suffix &= 0x7f;
prefix = AsciiOf(prefix);
suffix = AsciiOf(suffix);
for (n = 0; n < XtNumber(scs_table); ++n) {
if (prefix == scs_table[n].prefix
&& suffix == scs_table[n].suffix
@ -2205,22 +2192,17 @@ only_default(void)
}
static int
zero_if_default(int which)
use_default_value(int which, int default_value)
{
int result = (nparam > which) ? GetParam(which) : 0;
int result = (nparam > which) ? GetParam(which) : default_value;
if (result <= 0)
result = 0;
result = default_value;
return result;
}
static int
one_if_default(int which)
{
int result = (nparam > which) ? GetParam(which) : 0;
if (result <= 0)
result = 1;
return result;
}
#define zero_if_default(which) use_default_value(which, 0)
#define one_if_default(which) use_default_value(which, 1)
#define BeginString(mode) \
do { \
@ -2319,7 +2301,7 @@ static void
illegal_parse(XtermWidget xw, unsigned c, struct ParseState *sp)
{
ResetState(sp);
sp->nextstate = sp->parsestate[E2A(c)];
sp->nextstate = sp->parsestate[c];
Bell(xw, XkbBI_MinorError, 0);
}
@ -2939,6 +2921,8 @@ update_vt52_vt100_settings(void)
}
#endif
#define TRACE_GSETS(name) TRACE(("CASE_GSETS%s(%d) = '%c'\n", name, sp->scstype, AsciiOf(c)))
static Boolean
doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
{
@ -3047,7 +3031,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
#if OPT_VT52_MODE
if (sp->vt52_cup) {
if (nparam < NPARAM - 1) {
SetParam(nparam++, (int) (c & 0x7f) - 32);
SetParam(nparam++, (int) AsciiOf(c) - 32);
parms.is_sub[nparam] = 0;
}
if (nparam < 2)
@ -3092,7 +3076,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
}
} else
#endif
sp->nextstate = sp->parsestate[E2A(c)];
sp->nextstate = sp->parsestate[c];
#if OPT_BROKEN_OSC
/*
@ -3161,7 +3145,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
&& (c >= 128 && c < 256)) {
sp->nextstate = (sp->parsestate == esc_table
? CASE_ESC_IGNORE
: sp->parsestate[E2A(160)]);
: sp->parsestate[160]);
TRACE(("allowC1Printable %04X %s ->%s\n",
c, which_table(sp->parsestate),
visibleVTparse(sp->nextstate)));
@ -3212,7 +3196,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
* doing this for so long we shouldn't change this behavior.
*/
if (screen->vtXX_level < 1)
c &= 0x7f;
c = AsciiOf(c);
#endif
sp->print_area[sp->print_used++] = (IChar) c;
sp->lastchar = thischar = (int) c;
@ -3256,7 +3240,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
else if (sp->string_args == sa_SIXEL) {
/* avoid adding the string-terminator */
if (sos_table[CharOf(c)] == CASE_IGNORE)
parse_sixel_char((char) c);
parse_sixel_char(AsciiOf(c));
}
#endif
else if (sp->string_skip) {
@ -3279,7 +3263,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
* parameters to the first non-parameter character and
* inspecting it. Since both are DCS, we can also ignore OSC.
*/
sp->string_area[(sp->string_used)++] = CharOf(c);
sp->string_area[(sp->string_used)++] = AsciiOf(c);
if (sp->string_args < sa_LAST) {
switch (c) {
case ':':
@ -3543,16 +3527,20 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
break;
case CASE_DECDHL:
xterm_DECDHL(xw, c == '3');
TRACE(("CASE_DECDHL - double-height line: %s\n",
(AsciiOf(c) == '3') ? "top" : "bottom"));
xterm_DECDHL(xw, AsciiOf(c) == '3');
ResetState(sp);
break;
case CASE_DECSWL:
TRACE(("CASE_DECSWL - single-width line\n"));
xterm_DECSWL(xw);
ResetState(sp);
break;
case CASE_DECDWL:
TRACE(("CASE_DECDWL - double-width line\n"));
xterm_DECDWL(xw);
ResetState(sp);
break;
@ -3606,7 +3594,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
/* digit in csi or dec mode */
if (nparam > 0) {
value = zero_if_default(nparam - 1);
SetParam(nparam - 1, (10 * value) + ((int) c - '0'));
SetParam(nparam - 1, (10 * value) + (int) (AsciiOf(c) - '0'));
if (GetParam(nparam - 1) > MAX_I_PARAM)
SetParam(nparam - 1, MAX_I_PARAM);
if (sp->parsestate == csi_table)
@ -4560,7 +4548,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_GSETS5:
if (screen->vtXX_level >= 5) {
TRACE(("CASE_GSETS5(%d) = '%c'\n", sp->scstype, c));
TRACE_GSETS("5");
xtermDecodeSCS(xw, sp->scstype, 5, 0, (int) c);
}
ResetState(sp);
@ -4568,18 +4556,18 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_GSETS3:
if (screen->vtXX_level >= 3) {
TRACE(("CASE_GSETS3(%d) = '%c'\n", sp->scstype, c));
TRACE_GSETS("3");
xtermDecodeSCS(xw, sp->scstype, 3, 0, (int) c);
}
ResetState(sp);
break;
case CASE_GSETS:
if (strchr("012AB", (int) c) != 0) {
TRACE(("CASE_GSETS(%d) = '%c'\n", sp->scstype, c));
if (strchr("012AB", AsciiOf(c)) != 0) {
TRACE_GSETS("");
xtermDecodeSCS(xw, sp->scstype, 1, 0, (int) c);
} else if (screen->vtXX_level >= 2) {
TRACE(("CASE_GSETS(%d) = '%c'\n", sp->scstype, c));
TRACE_GSETS("");
xtermDecodeSCS(xw, sp->scstype, 2, 0, (int) c);
}
ResetState(sp);
@ -5366,10 +5354,15 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_DECFRA:
if (screen->vtXX_level >= 4) {
value = zero_if_default(0);
value = use_default_value(0, ' ');
TRACE(("CASE_DECFRA - Fill rectangular area\n"));
if (nparam > 0 && CharWidth(screen, value) > 0) {
/* DEC 070, page 5-170 says the fill-character is either
* ASCII or Latin1; xterm allows printable Unicode values.
*/
if (nparam > 0
&& ((value >= 256 && CharWidth(screen, value) > 0)
|| IsLatin1(value))) {
xtermParseRect(xw, ParamPair(1), &myRect);
ScrnFillRectangle(xw, &myRect, value, xw->flags, True);
}
@ -5926,19 +5919,19 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
TRACE(("CASE_UTF8 wide:%d, utf8:%d, req:%s\n",
screen->wide_chars,
screen->utf8_mode,
BtoS(c == 'G')));
if ((!screen->wide_chars) && (c == 'G')) {
BtoS(AsciiOf(c) == 'G')));
if ((!screen->wide_chars) && (AsciiOf(c) == 'G')) {
WriteNow();
ChangeToWide(xw);
}
if (screen->wide_chars
&& !screen->utf8_always) {
switchPtyData(screen, c == 'G');
switchPtyData(screen, AsciiOf(c) == 'G');
TRACE(("UTF8 mode %s\n",
BtoS(screen->utf8_mode)));
} else {
TRACE(("UTF8 mode NOT turned %s (%s)\n",
BtoS(c == 'G'),
BtoS(AsciiOf(c) == 'G'),
(screen->utf8_mode == uAlways)
? "UTF-8 mode set from command-line"
: "wideChars resource was not set"));
@ -5953,7 +5946,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_GSETS_DQUOTE:
if (screen->vtXX_level >= 5) {
TRACE(("CASE_GSETS_DQUOTE(%d) = '%c'\n", sp->scstype, c));
TRACE_GSETS("_DQUOTE");
xtermDecodeSCS(xw, sp->scstype, 5, '"', (int) c);
}
ResetState(sp);
@ -5966,7 +5959,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_GSETS_AMPRSND:
if (screen->vtXX_level >= 5) {
TRACE(("CASE_GSETS_AMPRSND(%d) = '%c'\n", sp->scstype, c));
TRACE_GSETS("_AMPRSND");
xtermDecodeSCS(xw, sp->scstype, 5, '&', (int) c);
}
ResetState(sp);
@ -5979,8 +5972,8 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_GSETS_PERCENT:
if (screen->vtXX_level >= 3) {
TRACE(("CASE_GSETS_PERCENT(%d) = '%c'\n", sp->scstype, c));
switch (c) {
TRACE_GSETS("_PERCENT");
switch (AsciiOf(c)) {
case '0': /* DEC Turkish */
case '2': /* Turkish */
case '=': /* Hebrew */
@ -6221,17 +6214,10 @@ v_write(int f, const Char *data, size_t len)
fprintf(stderr, "\n");
});
#ifdef VMS
if ((1 << f) != pty_mask) {
tt_write((const char *) data, len);
return;
}
#else /* VMS */
if (!FD_ISSET(f, &pty_mask)) {
IGNORE_RC(write(f, (const char *) data, (size_t) len));
return;
}
#endif /* VMS */
/*
* Append to the block we already have.
@ -6305,20 +6291,11 @@ v_write(int f, const Char *data, size_t len)
if (v_bufptr > v_bufstr) {
int riten;
#ifdef VMS
riten = tt_write(v_bufstr,
(size_t) ((v_bufptr - v_bufstr <= VMS_TERM_BUFFER_SIZE)
? v_bufptr - v_bufstr
: VMS_TERM_BUFFER_SIZE));
if (riten == 0)
return (riten);
#else /* VMS */
riten = (int) write(f, v_bufstr,
(size_t) ((v_bufptr - v_bufstr <= MAX_PTY_WRITE)
? v_bufptr - v_bufstr
: MAX_PTY_WRITE));
if (riten < 0)
#endif /* VMS */
{
if_DEBUG({
perror("write");
@ -6414,84 +6391,6 @@ update_the_screen(XtermWidget xw)
}
}
#ifdef VMS
#define ptymask() (v_bufptr > v_bufstr ? pty_mask : 0)
static void
in_put(XtermWidget xw)
{
static PtySelect select_mask;
static PtySelect write_mask;
int update = VTbuffer->update;
int size;
int status;
Dimension replyWidth, replyHeight;
XtGeometryResult stat;
TScreen *screen = TScreenOf(xw);
char *cp;
int i;
select_mask = pty_mask; /* force initial read */
for (;;) {
/* if the terminal changed size, resize the widget */
if (tt_changed) {
tt_changed = False;
stat = REQ_RESIZE((Widget) xw,
((Dimension) FontWidth(screen)
* (tt_width)
+ 2 * screen->border
+ screen->fullVwin.sb_info.width),
((Dimension) FontHeight(screen)
* (tt_length)
+ 2 * screen->border),
&replyWidth, &replyHeight);
if (stat == XtGeometryYes || stat == XtGeometryDone) {
xw->core.width = replyWidth;
xw->core.height = replyHeight;
ScreenResize(xw, replyWidth, replyHeight, &xw->flags);
}
repairSizeHints();
}
if (screen->eventMode == NORMAL
&& readPtyData(xw, &select_mask, VTbuffer)) {
if (screen->scrollWidget
&& screen->scrollttyoutput
&& screen->topline < 0)
/* Scroll to bottom */
WindowScroll(xw, 0, False);
break;
}
update_the_screen(xw);
if (QLength(screen->display)) {
select_mask = X_mask;
} else {
write_mask = ptymask();
XFlush(screen->display);
select_mask = Select_mask;
if (screen->eventMode != NORMAL)
select_mask = X_mask;
}
if (write_mask & ptymask()) {
v_write(screen->respond, 0, 0); /* flush buffer */
}
if (select_mask & X_mask) {
xevents(xw);
if (VTbuffer->update != update)
break;
}
}
}
#else /* VMS */
static void
init_timeval(struct timeval *target, long usecs)
{
@ -6686,7 +6585,6 @@ in_put(XtermWidget xw)
}
}
#endif /* VMS */
static IChar
doinput(XtermWidget xw)
@ -7375,6 +7273,9 @@ dpmodes(XtermWidget xw, BitFunc func)
case srm_RXVT_TOOLBAR:
ShowToolbar(IsSM());
break;
#else
case srm_DECEDM: /* vt330:edit */
break;
#endif
#if OPT_BLINK_CURS
case srm_ATT610_BLINK: /* AT&T 610: Start/stop blinking cursor */
@ -7389,6 +7290,11 @@ dpmodes(XtermWidget xw, BitFunc func)
case srm_XOR_CURSOR_BLINKS:
/* intentionally ignored (this is user-preference) */
break;
#else
case srm_DECKANAM: /* vt382:Katakana shift */
case srm_DECSCFDM: /* vt330:space compression field delimiter */
case srm_DECTEM: /* vt330:transmission execution */
break;
#endif
case srm_DECPFF: /* print form feed */
set_bool_mode(PrinterOf(screen).printer_formfeed);
@ -7739,25 +7645,29 @@ dpmodes(XtermWidget xw, BitFunc func)
}
break;
#endif
case srm_DEC131TM: /* ignore */
case srm_DECAAM: /* ignore */
case srm_DECARSM: /* ignore */
case srm_DECATCBM: /* ignore */
case srm_DECATCUM: /* ignore */
case srm_DECBBSM: /* ignore */
case srm_DECCAAM: /* ignore */
case srm_DECCANSM: /* ignore */
case srm_DECCAPSLK: /* ignore */
case srm_DECCRTSM: /* ignore */
case srm_DECECM: /* ignore */
case srm_DECEKEM: /* ignore */
case srm_DECESKM: /* ignore */
case srm_DECFWM: /* ignore */
case srm_DECHCCM: /* ignore */
case srm_DECHDPXM: /* ignore */
case srm_DECHEM: /* ignore */
case srm_DECHCCM: /* ignore */
case srm_DECHWUM: /* ignore */
case srm_DECIPEM: /* ignore */
case srm_DECKBUM: /* ignore */
case srm_DECKLHIM: /* ignore */
case srm_DECKKDM: /* ignore */
case srm_DECKPM: /* ignore */
case srm_DECRLM: /* ignore */
case srm_DECLTM: /* ignore */
case srm_DECMCM: /* ignore */
case srm_DECNAKB: /* ignore */
case srm_DECNULM: /* ignore */
@ -7765,6 +7675,7 @@ dpmodes(XtermWidget xw, BitFunc func)
case srm_DECOSCNM: /* ignore */
case srm_DECPCCM: /* ignore */
case srm_DECRLCM: /* ignore */
case srm_DECRLM: /* ignore */
case srm_DECRPL: /* ignore */
case srm_DECVCCM: /* ignore */
case srm_DECXRLM: /* ignore */
@ -7824,6 +7735,9 @@ savemodes(XtermWidget xw)
case srm_RXVT_TOOLBAR:
DoSM(DP_TOOLBAR, resource.toolBar);
break;
#else
case srm_DECEDM: /* vt330:edit */
break;
#endif
#if OPT_BLINK_CURS
case srm_ATT610_BLINK: /* AT&T 610: Start/stop blinking cursor */
@ -7837,6 +7751,11 @@ savemodes(XtermWidget xw)
case srm_XOR_CURSOR_BLINKS:
/* intentionally ignored (this is user-preference) */
break;
#else
case srm_DECKANAM: /* vt382:Katakana shift */
case srm_DECSCFDM: /* vt330:space compression field delimiter */
case srm_DECTEM: /* vt330:transmission execution */
break;
#endif
case srm_DECPFF: /* print form feed */
DoSM(DP_PRN_FORMFEED, PrinterOf(screen).printer_formfeed);
@ -8067,15 +7986,18 @@ savemodes(XtermWidget xw)
DoSM(DP_SIXEL_SCROLLS_RIGHT, screen->sixel_scrolls_right);
break;
#endif
case srm_DEC131TM: /* ignore */
case srm_DECAAM: /* ignore */
case srm_DECARSM: /* ignore */
case srm_DECATCBM: /* ignore */
case srm_DECATCUM: /* ignore */
case srm_DECBBSM: /* ignore */
case srm_DECCAAM: /* ignore */
case srm_DECCANSM: /* ignore */
case srm_DECCAPSLK: /* ignore */
case srm_DECCRTSM: /* ignore */
case srm_DECECM: /* ignore */
case srm_DECEKEM: /* ignore */
case srm_DECESKM: /* ignore */
case srm_DECFWM: /* ignore */
case srm_DECHCCM: /* ignore */
case srm_DECHDPXM: /* ignore */
@ -8083,9 +8005,10 @@ savemodes(XtermWidget xw)
case srm_DECHWUM: /* ignore */
case srm_DECIPEM: /* ignore */
case srm_DECKBUM: /* ignore */
case srm_DECKKDM: /* ignore */
case srm_DECKLHIM: /* ignore */
case srm_DECKPM: /* ignore */
case srm_DECRLM: /* ignore */
case srm_DECLTM: /* ignore */
case srm_DECMCM: /* ignore */
case srm_DECNAKB: /* ignore */
case srm_DECNULM: /* ignore */
@ -8093,6 +8016,7 @@ savemodes(XtermWidget xw)
case srm_DECOSCNM: /* ignore */
case srm_DECPCCM: /* ignore */
case srm_DECRLCM: /* ignore */
case srm_DECRLM: /* ignore */
case srm_DECRPL: /* ignore */
case srm_DECVCCM: /* ignore */
case srm_DECXRLM: /* ignore */
@ -8181,6 +8105,9 @@ restoremodes(XtermWidget xw)
DoRM(DP_TOOLBAR, resource.toolBar);
ShowToolbar(resource.toolBar);
break;
#else
case srm_DECEDM: /* vt330:edit */
break;
#endif
#if OPT_BLINK_CURS
case srm_ATT610_BLINK: /* Start/stop blinking cursor */
@ -8195,6 +8122,11 @@ restoremodes(XtermWidget xw)
case srm_XOR_CURSOR_BLINKS:
/* intentionally ignored (this is user-preference) */
break;
#else
case srm_DECKANAM: /* vt382:Katakana shift */
case srm_DECSCFDM: /* vt330:space compression field delimiter */
case srm_DECTEM: /* vt330:transmission execution */
break;
#endif
case srm_DECPFF: /* print form feed */
DoRM(DP_PRN_FORMFEED, PrinterOf(screen).printer_formfeed);
@ -8488,15 +8420,18 @@ restoremodes(XtermWidget xw)
BtoS(screen->sixel_scrolls_right)));
break;
#endif
case srm_DEC131TM: /* ignore */
case srm_DECAAM: /* ignore */
case srm_DECARSM: /* ignore */
case srm_DECATCBM: /* ignore */
case srm_DECATCUM: /* ignore */
case srm_DECBBSM: /* ignore */
case srm_DECCAAM: /* ignore */
case srm_DECCANSM: /* ignore */
case srm_DECCAPSLK: /* ignore */
case srm_DECCRTSM: /* ignore */
case srm_DECECM: /* ignore */
case srm_DECEKEM: /* ignore */
case srm_DECESKM: /* ignore */
case srm_DECFWM: /* ignore */
case srm_DECHCCM: /* ignore */
case srm_DECHDPXM: /* ignore */
@ -8504,9 +8439,10 @@ restoremodes(XtermWidget xw)
case srm_DECHWUM: /* ignore */
case srm_DECIPEM: /* ignore */
case srm_DECKBUM: /* ignore */
case srm_DECKKDM: /* ignore */
case srm_DECKLHIM: /* ignore */
case srm_DECKPM: /* ignore */
case srm_DECRLM: /* ignore */
case srm_DECLTM: /* ignore */
case srm_DECMCM: /* ignore */
case srm_DECNAKB: /* ignore */
case srm_DECNULM: /* ignore */
@ -8514,6 +8450,7 @@ restoremodes(XtermWidget xw)
case srm_DECOSCNM: /* ignore */
case srm_DECPCCM: /* ignore */
case srm_DECRLCM: /* ignore */
case srm_DECRLM: /* ignore */
case srm_DECRPL: /* ignore */
case srm_DECVCCM: /* ignore */
case srm_DECXRLM: /* ignore */
@ -9027,8 +8964,8 @@ unparseputc1(XtermWidget xw, int c)
{
if (c >= 0x80 && c <= 0x9F) {
if (!TScreenOf(xw)->control_eight_bits) {
unparseputc(xw, A2E(ANSI_ESC));
c = A2E(c - 0x40);
unparseputc(xw, ANSI_ESC);
c = c - 0x40;
}
}
unparseputc(xw, c);
@ -9181,11 +9118,7 @@ unparse_end(XtermWidget xw)
TRACE(("unparse_end %u:%s\n",
screen->unparse_len,
visibleIChars(screen->unparse_bfr, (size_t) screen->unparse_len)));
#ifdef VMS
tt_write(screen->unparse_bfr, screen->unparse_len);
#else /* VMS */
writePtyData(screen->respond, screen->unparse_bfr, (size_t) screen->unparse_len);
#endif /* VMS */
screen->unparse_len = 0;
}
}
@ -9313,7 +9246,7 @@ VTRun(XtermWidget xw)
TRACE(("VTRun ...\n"));
if (!screen->Vshow) {
if (!screen->Vshow && !resource.notMapped) {
set_vt_visibility(True);
}
update_vttekmode();