sync with OpenBSD -current

This commit is contained in:
purplerain 2024-07-25 20:49:18 +00:00
parent a34e492c6b
commit acb2a22980
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
86 changed files with 12131 additions and 4602 deletions

View file

@ -1,7 +1,7 @@
/* $XTermId: linedata.c,v 1.102 2022/09/18 21:17:43 tom Exp $ */
/* $XTermId: linedata.c,v 1.106 2023/12/31 20:12:06 tom Exp $ */
/*
* Copyright 2009-2021,2022 by Thomas E. Dickey
* Copyright 2009-2022,2023 by Thomas E. Dickey
*
* All Rights Reserved
*
@ -91,6 +91,10 @@ copyLineData(LineData *dst, CLineData *src)
+ sizeof(dst->charData[0])
#if OPT_WIDE_CHARS
+ sizeof(dst->combData[0][0]) * dst->combSize
#endif
#if OPT_DEC_RECTOPS
+ sizeof(dst->charSeen[0])
+ sizeof(dst->charSets[0])
#endif
);
@ -110,6 +114,10 @@ copyLineData(LineData *dst, CLineData *src)
dst->color[col] = src->color[col];
#endif
dst->charData[col] = src->charData[col];
#if OPT_DEC_RECTOPS
dst->charSeen[col] = src->charSeen[col];
dst->charSets[col] = src->charSets[col];
#endif
#if OPT_WIDE_CHARS
for (comb = 0; comb < dst->combSize; ++comb) {
dst->combData[comb][col] = src->combData[comb][col];
@ -122,6 +130,10 @@ copyLineData(LineData *dst, CLineData *src)
dst->color[col] = initCColor;
#endif
dst->charData[col] = 0;
#if OPT_DEC_RECTOPS
dst->charSeen[col] = 0;
dst->charSets[col] = 0;
#endif
#if OPT_WIDE_CHARS
for (comb = 0; comb < dst->combSize; ++comb) {
dst->combData[comb][col] = 0;
@ -174,6 +186,10 @@ initLineData(XtermWidget xw)
TRACE((" offset(bufHead) %lu\n", (unsigned long) offsetof(LineData, bufHead)));
#if OPT_WIDE_CHARS
TRACE((" offset(combSize) %lu\n", (unsigned long) offsetof(LineData, combSize)));
#endif
#if OPT_DEC_RECTOPS
TRACE((" offset(*charSeen) %lu\n", (unsigned long) offsetof(LineData, charSeen)));
TRACE((" offset(*charSets) %lu\n", (unsigned long) offsetof(LineData, charSets)));
#endif
TRACE((" offset(*attribs) %lu\n", (unsigned long) offsetof(LineData, attribs)));
#if OPT_ISO_COLORS
@ -190,6 +206,10 @@ initLineData(XtermWidget xw)
#if OPT_WIDE_CHARS
TRACE((" offset(combSize) %lu\n", (unsigned long) offsetof(CellData, combSize)));
#endif
#if OPT_DEC_RECTOPS
TRACE((" offset(charSeen) %lu\n", (unsigned long) offsetof(CellData, charSeen)));
TRACE((" offset(charSets) %lu\n", (unsigned long) offsetof(CellData, charSets)));
#endif
#if OPT_ISO_COLORS
TRACE((" offset(color) %lu\n", (unsigned long) offsetof(CellData, color)));
#endif
@ -234,7 +254,10 @@ saveCellData(TScreen *screen,
if_OPT_ISO_COLORS(screen, {
item->color = ld->color[column];
});
item->charData = ld->charData[column];
if_OPT_DEC_RECTOPS({
item->charSeen = ld->charSeen[column];
item->charData = ld->charData[column];
});
if_OPT_WIDE_CHARS(screen, {
size_t off;
Bool blank = (((item->charData == HIDDEN_CHAR)
@ -245,9 +268,13 @@ saveCellData(TScreen *screen,
&& (limits == NULL
|| (column + 1) >= limits->right)));
if (blank) {
if_OPT_DEC_RECTOPS(item->charSeen = ' ');
item->charData = (CharData) ' ';
}
item->combSize = blank ? 0 : ld->combSize;
if_OPT_DEC_RECTOPS(item->charSets = (blank
? 0
: ld->charSets[column]));
for_each_combData(off, item) {
item->combData[off] = ld->combData[off][column];
}
@ -273,10 +300,15 @@ restoreCellData(TScreen *screen,
if_OPT_ISO_COLORS(screen, {
ld->color[column] = item->color;
});
if_OPT_DEC_RECTOPS({
ld->charSeen[column] = item->charSeen;
ld->charSets[column] = item->charSets;
});
ld->charData[column] = item->charData;
if_OPT_WIDE_CHARS(screen, {
size_t off;
ld->combSize = item->combSize;
if_OPT_DEC_RECTOPS(ld->charSets[column] = item->charSets);
for_each_combData(off, ld) {
ld->combData[off][column] = item->combData[off];
}