Module Name: xsrc
Committed By: mrg
Date: Sun Mar 9 23:18:49 UTC 2025
Modified Files:
xsrc/external/mit/xterm/dist: fontutils.c graphics_sixel.c linedata.c
misc.c ptyx.h resize.c scrollback.c xterm.h xterm.man
xsrc/external/mit/xterm/include: xtermcfg.h
Removed Files:
xsrc/external/mit/xterm/dist: AAA_README_VMS.txt README.os390
link_axp.com make.com vms.c vms.h xterm.dat xterm_axp.opt
xsrc/external/mit/xterm/dist/package/freebsd: pkg-message
Log Message:
merge xterm 397.
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/xterm/dist/AAA_README_VMS.txt \
xsrc/external/mit/xterm/dist/README.os390 \
xsrc/external/mit/xterm/dist/link_axp.com \
xsrc/external/mit/xterm/dist/make.com \
xsrc/external/mit/xterm/dist/xterm_axp.opt
cvs rdiff -u -r1.14 -r1.15 xsrc/external/mit/xterm/dist/fontutils.c
cvs rdiff -u -r1.5 -r1.6 xsrc/external/mit/xterm/dist/graphics_sixel.c
cvs rdiff -u -r1.11 -r1.12 xsrc/external/mit/xterm/dist/linedata.c
cvs rdiff -u -r1.26 -r1.27 xsrc/external/mit/xterm/dist/misc.c
cvs rdiff -u -r1.21 -r1.22 xsrc/external/mit/xterm/dist/ptyx.h
cvs rdiff -u -r1.6 -r1.7 xsrc/external/mit/xterm/dist/resize.c
cvs rdiff -u -r1.9 -r1.10 xsrc/external/mit/xterm/dist/scrollback.c \
xsrc/external/mit/xterm/dist/xterm.h
cvs rdiff -u -r1.1.1.6 -r0 xsrc/external/mit/xterm/dist/vms.c
cvs rdiff -u -r1.1.1.4 -r0 xsrc/external/mit/xterm/dist/vms.h
cvs rdiff -u -r1.1.1.3 -r0 xsrc/external/mit/xterm/dist/xterm.dat
cvs rdiff -u -r1.23 -r1.24 xsrc/external/mit/xterm/dist/xterm.man
cvs rdiff -u -r1.1.1.1 -r0 \
xsrc/external/mit/xterm/dist/package/freebsd/pkg-message
cvs rdiff -u -r1.21 -r1.22 xsrc/external/mit/xterm/include/xtermcfg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: xsrc/external/mit/xterm/dist/fontutils.c
diff -u xsrc/external/mit/xterm/dist/fontutils.c:1.14 xsrc/external/mit/xterm/dist/fontutils.c:1.15
--- xsrc/external/mit/xterm/dist/fontutils.c:1.14 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/fontutils.c Sun Mar 9 23:18:48 2025
@@ -1,4 +1,4 @@
-/* $XTermId: fontutils.c,v 1.782 2024/05/17 19:54:51 tom Exp $ */
+/* $XTermId: fontutils.c,v 1.787 2024/12/01 20:29:42 tom Exp $ */
/*
* Copyright 1998-2023,2024 by Thomas E. Dickey
@@ -74,20 +74,20 @@
#define CI_GET_CHAR_INFO_1D(fs,col,cs) \
{ \
- cs = 0; \
+ cs = NULL; \
if (col >= fs->min_char_or_byte2 && col <= fs->max_char_or_byte2) { \
if (fs->per_char == NULL) { \
cs = &fs->min_bounds; \
} else { \
cs = &fs->per_char[(col - fs->min_char_or_byte2)]; \
} \
- if (CI_NONEXISTCHAR(cs)) cs = 0; \
+ if (CI_NONEXISTCHAR(cs)) cs = NULL; \
} \
}
#define CI_GET_CHAR_INFO_2D(fs,row,col,cs) \
{ \
- cs = 0; \
+ cs = NULL; \
if (row >= fs->min_byte1 && row <= fs->max_byte1 && \
col >= fs->min_char_or_byte2 && col <= fs->max_char_or_byte2) { \
if (fs->per_char == NULL) { \
@@ -98,14 +98,14 @@
fs->min_char_or_byte2 + 1)) + \
(col - fs->min_char_or_byte2)]; \
} \
- if (CI_NONEXISTCHAR(cs)) cs = 0; \
+ if (CI_NONEXISTCHAR(cs)) cs = NULL; \
} \
}
#define FREE_FNAME(field) \
- if (fonts == 0 || new_fnames.field != fonts->field) { \
+ if (fonts == NULL || new_fnames.field != fonts->field) { \
FREE_STRING(new_fnames.field); \
- new_fnames.field = 0; \
+ new_fnames.field = NULL; \
}
/*
@@ -217,7 +217,7 @@ countGlyphs(XFontStruct *fp)
{
unsigned count = 0;
- if (fp != 0) {
+ if (fp != NULL) {
if (fp->min_byte1 == 0 && fp->max_byte1 == 0) {
count = fp->max_char_or_byte2 - fp->min_char_or_byte2 + 1;
} else if (fp->min_char_or_byte2 < 256
@@ -266,7 +266,7 @@ setupPackedFonts(XtermWidget xw)
for (e = 0; e < fMAX; ++e) {
XTermXftFonts *data = getMyXftFont(xw, e, screen->menu_font_number);
- if (data != 0) {
+ if (data != NULL) {
if (data->font_info.mixed) {
screen->allow_packing = True;
break;
@@ -295,7 +295,7 @@ is_derived_font_name(const char *name)
Boolean result = False;
NameList *list;
if (!IsEmpty(name)) {
- for (list = derived_fonts; list != 0; list = list->next) {
+ for (list = derived_fonts; list != NULL; list = list->next) {
if (!x_strcasecmp(name, list->name)) {
result = True;
break;
@@ -333,16 +333,16 @@ n_fields(char **source, int start, int s
* find the start-1th dash
*/
for (i = start - 1, str = *source; i; i--, str++) {
- if ((str = strchr(str, '-')) == 0)
- return 0;
+ if ((str = strchr(str, '-')) == NULL)
+ return NULL;
}
/*
* find the stopth dash
*/
for (i = stop - start + 1, str1 = str; i; i--, str1++) {
- if ((str1 = strchr(str1, '-')) == 0)
- return 0;
+ if ((str1 = strchr(str1, '-')) == NULL)
+ return NULL;
}
/*
@@ -393,7 +393,7 @@ get_font_name_props(Display *dpy, XFontS
/*
* first get the full font name
*/
- name = 0;
+ name = NULL;
fontatom = CachedInternAtom(dpy, "FONT");
if (fontatom != 0) {
XFontProp *fp;
@@ -407,8 +407,8 @@ get_font_name_props(Display *dpy, XFontS
}
}
- if (name == 0)
- return 0;
+ if (name == NULL)
+ return NULL;
/*
* XGetAtomName allocates memory - don't leak
@@ -416,9 +416,9 @@ get_font_name_props(Display *dpy, XFontS
XFree(last_name);
last_name = name;
- if (result != 0) {
+ if (result != NULL) {
if (!check_fontname(name))
- return 0;
+ return NULL;
free(*result);
*result = x_strdup(name);
}
@@ -430,56 +430,56 @@ get_font_name_props(Display *dpy, XFontS
*/
/* registry, foundry, family */
- if ((props.beginning = n_fields(&name, 1, 3)) == 0)
- return 0;
+ if ((props.beginning = n_fields(&name, 1, 3)) == NULL)
+ return NULL;
/* weight is the next */
- if ((props.weight = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((props.weight = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
/* slant */
- if ((props.slant = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((props.slant = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
/* width */
- if ((props.wideness = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((props.wideness = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
/* add style */
- if ((props.add_style = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((props.add_style = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
/* pixel size */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((str = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
if ((props.pixel_size = atoi(str)) == 0)
- return 0;
+ return NULL;
/* point size */
- if ((props.point_size = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((props.point_size = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
/* res_x */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((str = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
if ((props.res_x = atoi(str)) == 0)
- return 0;
+ return NULL;
/* res_y */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((str = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
if ((props.res_y = atoi(str)) == 0)
- return 0;
+ return NULL;
/* spacing */
- if ((props.spacing = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((props.spacing = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
/* average width */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
+ if ((str = n_fields(&name, 1, 1)) == NULL)
+ return NULL;
if ((props.average_width = atoi(str)) == 0)
- return 0;
+ return NULL;
/* the rest: charset registry and charset encoding */
props.end = name;
@@ -492,8 +492,8 @@ get_font_name_props(Display *dpy, XFontS
static void
alloca_fontname(char **result, size_t next)
{
- size_t last = (*result != 0) ? strlen(*result) : 0;
- size_t have = (*result != 0) ? ALLOCHUNK(last) : 0;
+ size_t last = (*result != NULL) ? strlen(*result) : 0;
+ size_t have = (*result != NULL) ? ALLOCHUNK(last) : 0;
size_t want = last + next + 2;
if (want >= have) {
@@ -501,10 +501,10 @@ alloca_fontname(char **result, size_t ne
want = ALLOCHUNK(want);
if (last != 0) {
*result = TypeRealloc(char, want, *result);
- if (*result == 0)
+ if (*result == NULL)
free(save);
} else {
- if ((*result = TypeMallocN(char, want)) != 0) {
+ if ((*result = TypeMallocN(char, want)) != NULL) {
free(save);
**result = '\0';
}
@@ -515,10 +515,10 @@ alloca_fontname(char **result, size_t ne
static void
append_fontname_str(char **result, const char *value)
{
- if (value == 0)
+ if (value == NULL)
value = "*";
alloca_fontname(result, strlen(value));
- if (*result != 0) {
+ if (*result != NULL) {
if (**result != '\0')
strcat(*result, "-");
strcat(*result, value);
@@ -549,13 +549,13 @@ derive_font_name(FontNameProperties *pro
int use_average_width,
const char *use_encoding)
{
- char *result = 0;
+ char *result = NULL;
append_fontname_str(&result, props->beginning);
append_fontname_str(&result, use_weight);
append_fontname_str(&result, props->slant);
- append_fontname_str(&result, 0);
- append_fontname_str(&result, 0);
+ append_fontname_str(&result, NULL);
+ append_fontname_str(&result, NULL);
append_fontname_num(&result, props->pixel_size);
append_fontname_str(&result, props->point_size);
append_fontname_num(&result, props->res_x);
@@ -597,11 +597,11 @@ open_italic_font(XtermWidget xw, int n,
NoFontWarning(data);
for (pass = 0; pass < XtNumber(slant); ++pass) {
char *name;
- if ((name = italic_font_name(fp, slant[pass])) != 0) {
+ if ((name = italic_font_name(fp, slant[pass])) != NULL) {
TRACE(("open_italic_font %s %s\n",
whichFontEnum((VTFontEnum) n), name));
if (xtermOpenFont(xw, name, data, NULL, False)) {
- result = (data->fs != 0);
+ result = (data->fs != NULL);
#if OPT_REPORT_FONTS
if (resource.reportFonts) {
ReportFonts("opened italic version of %s:\n\t%s\n",
@@ -618,7 +618,7 @@ open_italic_font(XtermWidget xw, int n,
#if OPT_TRACE
if (result) {
XFontStruct *fs = data->fs;
- if (fs != 0) {
+ if (fs != NULL) {
TRACE(("...actual size %dx%d (ascent %d, descent %d)\n",
fs->ascent +
fs->descent,
@@ -666,15 +666,15 @@ xtermSpecialFont(XTermDraw * params)
static FontNameProperties old_props;
#endif
FontNameProperties *props;
- char *result = 0;
+ char *result = NULL;
const char *weight;
int pixel_size;
int res_x;
int res_y;
props = get_font_name_props(screen->display,
- GetNormalFont(screen, fNorm)->fs, 0);
- if (props == 0)
+ GetNormalFont(screen, fNorm)->fs, NULL);
+ if (props == NULL)
return result;
pixel_size = props->pixel_size;
@@ -723,7 +723,7 @@ xtermSpecialFont(XTermDraw * params)
append_fontname_num(&result, (params->draw_flags & NORESOLUTION) ? -1 : res_x);
append_fontname_num(&result, (params->draw_flags & NORESOLUTION) ? -1 : res_y);
append_fontname_str(&result, props->spacing);
- append_fontname_str(&result, 0);
+ append_fontname_str(&result, NULL);
append_fontname_str(&result, props->end);
xtermDerivedFont(result);
@@ -779,10 +779,10 @@ same_font_name(const char *pattern, cons
static int
got_bold_font(Display *dpy, XFontStruct *fs, String requested)
{
- char *actual = 0;
+ char *actual = NULL;
int got;
- if (get_font_name_props(dpy, fs, &actual) == 0)
+ if (get_font_name_props(dpy, fs, &actual) == NULL)
got = 0;
else
got = same_font_name(requested, actual);
@@ -800,7 +800,7 @@ comparable_metrics(XFontStruct *normal,
#define DATA "comparable_metrics: "
int result = 0;
- if (normal == 0 || bold == 0) {
+ if (normal == NULL || bold == NULL) {
;
} else if (normal->all_chars_exist) {
if (bold->all_chars_exist) {
@@ -808,8 +808,8 @@ comparable_metrics(XFontStruct *normal,
} else {
TRACE((DATA "all chars exist in normal font, but not in bold\n"));
}
- } else if (normal->per_char != 0) {
- if (bold->per_char != 0) {
+ } else if (normal->per_char != NULL) {
+ if (bold->per_char != NULL) {
result = 1;
} else {
TRACE((DATA "normal font has per-char metrics, but not bold\n"));
@@ -833,7 +833,7 @@ same_font_size(XtermWidget xw, XFontStru
TScreen *screen = TScreenOf(xw);
int result = 0;
- if (nfs != 0 && bfs != 0) {
+ if (nfs != NULL && bfs != NULL) {
TRACE(("same_font_size height %d/%d, min %d/%d max %d/%d\n",
nfs->ascent + nfs->descent,
bfs->ascent + bfs->descent,
@@ -950,7 +950,7 @@ is_double_width_font_xft(Display *dpy, X
#define is_double_width_font_xft(dpy, xftfont) 0
#endif
-#define EmptyFont(fs) (fs != 0 \
+#define EmptyFont(fs) (fs != NULL \
&& ((fs)->ascent + (fs)->descent == 0 \
|| (fs)->max_bounds.width == 0))
@@ -985,9 +985,9 @@ defaultVTFontNames(XtermWidget xw)
static void
cache_menu_font_name(TScreen *screen, int fontnum, int which, const char *name)
{
- if (name != 0) {
+ if (name != NULL) {
String last = screen->menu_font_names[fontnum][which];
- if (last != 0) {
+ if (last != NULL) {
if (strcmp(last, name)) {
FREE_STRING(last);
TRACE(("caching menu fontname %d.%d %s\n", fontnum, which, name));
@@ -1016,12 +1016,12 @@ cannotFont(XtermWidget xw, const char *w
case fwAlways:
break;
}
- for (list = reported; list != 0; list = list->next) {
+ for (list = reported; list != NULL; list = list->next) {
if (!x_strcasecmp(name, list->name)) {
return;
}
}
- if ((list = TypeMalloc(NameList)) != 0) {
+ if ((list = TypeMalloc(NameList)) != NULL) {
list->name = x_strdup(name);
list->next = reported;
reported = list;
@@ -1084,7 +1084,7 @@ xtermOpenFont(XtermWidget xw,
&& current->fs != NULL
&& current->fn != NULL);
- if ((result->fs = xtermLoadQueryFont(xw, name)) != 0) {
+ if ((result->fs = xtermLoadQueryFont(xw, name)) != NULL) {
code = True;
if (EmptyFont(result->fs)) {
xtermCloseFont(xw, result);
@@ -1122,7 +1122,7 @@ xtermOpenFont(XtermWidget xw,
void
xtermCloseFont(XtermWidget xw, XTermFonts * fnt)
{
- if (fnt != 0 && fnt->fs != 0) {
+ if (fnt != NULL && fnt->fs != NULL) {
TScreen *screen = TScreenOf(xw);
clrCgsFonts(xw, WhichVWin(screen), fnt);
@@ -1139,7 +1139,7 @@ xtermCloseFont2(XtermWidget xw, XTermFon
{
XFontStruct *thisFont = fnts[which].fs;
- if (thisFont != 0) {
+ if (thisFont != NULL) {
int k;
xtermCloseFont(xw, &fnts[which]);
@@ -1187,7 +1187,7 @@ xtermFreeFontInfo(XTermFonts * target)
target->chrset = 0;
target->flags = 0;
FreeAndNull(target->fn);
- target->fs = 0;
+ target->fs = NULL;
}
#if OPT_REPORT_FONTS
@@ -1203,10 +1203,95 @@ reportXCharStruct(const char *tag, XChar
}
static void
+fillXCharStruct(XCharStruct * cs, short value)
+{
+ cs->lbearing = value;
+ cs->rbearing = value;
+ cs->width = value;
+ cs->ascent = value;
+ cs->descent = value;
+}
+
+/* if the per-character data differs from the summary, that is a problem */
+static void
+compareXCharStruct(const char *tag, XCharStruct * actual, XCharStruct * expect)
+{
+#define CompareXCharStruct(field) \
+ if (actual->field != expect->field) \
+ ReportFonts("\t\t%s %s differs: %d\n", tag, #field, actual->field)
+ CompareXCharStruct(lbearing);
+ CompareXCharStruct(rbearing);
+ CompareXCharStruct(width);
+ CompareXCharStruct(ascent);
+ CompareXCharStruct(descent);
+}
+
+static void
+reportXPerChar(XFontStruct *fs)
+{
+ XCharStruct *cs = fs->per_char;
+
+ if (cs != NULL) {
+ XCharStruct min_bounds;
+ XCharStruct max_bounds;
+ int valid = 0;
+ int total = 0;
+ unsigned first_char = 0;
+ unsigned last_char = 0;
+ unsigned ch;
+
+ if (fs->max_byte1 == 0) {
+ first_char = fs->min_char_or_byte2;
+ last_char = fs->max_char_or_byte2;
+ } else {
+ first_char = (fs->min_byte1 * 256) + fs->min_char_or_byte2;
+ last_char = (fs->max_byte1 * 256) + fs->max_char_or_byte2;
+ }
+
+ fillXCharStruct(&max_bounds, -32768);
+ fillXCharStruct(&min_bounds, 32767);
+ TRACE2(("\t\tCells: %d..%d\n", first_char, last_char));
+ for (ch = first_char; ch < last_char; ++ch) {
+ XCharStruct *item = cs + ch - first_char;
+ ++total;
+ if (!CI_NONEXISTCHAR(item)) {
+ ++valid;
+#define MIN_BOUNDS(field) min_bounds.field = Min(min_bounds.field, item->field)
+ MIN_BOUNDS(lbearing);
+ MIN_BOUNDS(rbearing);
+ MIN_BOUNDS(width);
+ MIN_BOUNDS(ascent);
+ MIN_BOUNDS(descent);
+#define MAX_BOUNDS(field) max_bounds.field = Max(max_bounds.field, item->field)
+ MAX_BOUNDS(lbearing);
+ MAX_BOUNDS(rbearing);
+ MAX_BOUNDS(width);
+ MAX_BOUNDS(ascent);
+ MAX_BOUNDS(descent);
+ TRACE2(("\t\t\t%d: cell [%d .. %d] wide %d high %d / %d\n",
+ ch,
+ item->lbearing,
+ item->rbearing,
+ item->width,
+ item->ascent,
+ item->descent));
+ } else {
+ TRACE(("\t\t\t%d: cell missing\n", ch));
+ }
+ }
+ ReportFonts("\t\tPer-character: %d/%d\n", valid, total);
+ compareXCharStruct("Max", &max_bounds, &(fs->max_bounds));
+ compareXCharStruct("Min", &min_bounds, &(fs->min_bounds));
+ } else {
+ ReportFonts("\t\tPer-character: none\n");
+ }
+}
+
+static void
reportOneVTFont(const char *tag,
XTermFonts * fnt)
{
- if (!IsEmpty(fnt->fn) && fnt->fs != 0) {
+ if (!IsEmpty(fnt->fn) && fnt->fs != NULL) {
XFontStruct *fs = fnt->fs;
unsigned first_char = 0;
unsigned last_char = 0;
@@ -1249,7 +1334,8 @@ reportOneVTFont(const char *tag,
ReportFonts("\t\tproperties: %d\n", fs->n_properties);
reportXCharStruct("min_bounds", &(fs->min_bounds));
reportXCharStruct("max_bounds", &(fs->max_bounds));
- /* TODO: report fs->properties and fs->per_char */
+ reportXPerChar(fs);
+ /* TODO: report fs->properties */
}
}
@@ -1265,11 +1351,12 @@ reportVTFontInfo(XtermWidget xw, int fon
ReportFonts("Loaded VTFonts(default)\n");
}
- reportOneVTFont("fNorm", GetNormalFont(screen, fNorm));
- reportOneVTFont("fBold", GetNormalFont(screen, fBold));
+#define ReportOneVTFont(name) reportOneVTFont(#name, screen->fnts + name)
+ ReportOneVTFont(fNorm);
+ ReportOneVTFont(fBold);
#if OPT_WIDE_CHARS
- reportOneVTFont("fWide", GetNormalFont(screen, fWide));
- reportOneVTFont("fWBold", GetNormalFont(screen, fWBold));
+ ReportOneVTFont(fWide);
+ ReportOneVTFont(fWBold);
#endif
}
}
@@ -1300,8 +1387,8 @@ xtermUpdateFontGCs(XtermWidget xw, MyGet
if_OPT_WIDE_CHARS(screen, {
XTermFonts *wide_xx = myfunc(screen, fWide);
XTermFonts *bold_xx = myfunc(screen, fWBold);
- if (wide_xx->fs != 0
- && bold_xx->fs != 0) {
+ if (wide_xx->fs != NULL
+ && bold_xx->fs != NULL) {
setCgsFore(xw, win, gcWide, new_normal);
setCgsBack(xw, win, gcWide, new_revers);
setCgsFont(xw, win, gcWide, wide_xx);
@@ -1342,7 +1429,7 @@ xtermUpdateItalics(XtermWidget xw, unsig
static void
show_font_misses(const char *name, XTermFonts * fp)
{
- if (fp->fs != 0) {
+ if (fp->fs != NULL) {
if (FontLacksMetrics(fp)) {
TRACE(("%s font lacks metrics\n", name));
} else if (FontIsIncomplete(fp)) {
@@ -1402,7 +1489,7 @@ loadBoldFP(XtermWidget xw,
char *normal = x_strdup(nameRef);
fp = get_font_name_props(screen->display, infoRef->fs, &normal);
- if (fp != 0) {
+ if (fp != NULL) {
NoFontWarning(infoOut);
*nameOutP = bold_font_name(fp, fp->average_width);
if (!xtermOpenFont(xw, *nameOutP, infoOut, NULL, False)) {
@@ -1412,7 +1499,7 @@ loadBoldFP(XtermWidget xw,
}
TRACE(("...derived bold '%s'\n", NonNull(*nameOutP)));
}
- if (fp == 0 || infoOut->fs == 0) {
+ if (fp == NULL || infoOut->fs == NULL) {
xtermCopyFontInfo(infoOut, infoRef);
TRACE(("...cannot load a matching bold font\n"));
} else if (comparable_metrics(infoRef->fs, infoOut->fs)
@@ -1472,7 +1559,7 @@ loadWideFP(XtermWidget xw,
char *normal = x_strdup(nameRef);
FontNameProperties *fp = get_font_name_props(screen->display,
infoRef->fs, &normal);
- if (fp != 0) {
+ if (fp != NULL) {
*nameOutP = wide_font_name(fp);
NoFontWarning(infoOut);
}
@@ -1485,7 +1572,7 @@ loadWideFP(XtermWidget xw,
&& EmptyFont(infoOut->fs)) {
xtermCloseFont2(xw, infoOut - fWide, fWide);
}
- if (infoOut->fs == 0) {
+ if (infoOut->fs == NULL) {
xtermCopyFontInfo(infoOut, infoRef);
} else {
TRACE(("...%s wide %s\n",
@@ -1525,7 +1612,7 @@ loadWBoldFP(XtermWidget xw,
if (!check_fontname(*nameOutP)) {
FontNameProperties *fp;
fp = get_font_name_props(screen->display, boldInfoRef->fs, &bold);
- if (fp != 0) {
+ if (fp != NULL) {
*nameOutP = widebold_font_name(fp);
NoFontWarning(infoOut);
}
@@ -1539,7 +1626,7 @@ loadWBoldFP(XtermWidget xw,
xtermCloseFont2(xw, infoOut - fWBold, fWBold);
}
- if (infoOut->fs == 0) {
+ if (infoOut->fs == NULL) {
if (is_derived_font_name(*nameOutP))
free(*nameOutP);
if (IsEmpty(wideNameRef)) {
@@ -1611,14 +1698,14 @@ xtermLoadFont(XtermWidget xw,
memset(new_fonts, 0, sizeof(new_fonts));
memcpy(&old_fonts, screen->fnts, sizeof(old_fonts));
- if (fonts != 0)
+ if (fonts != NULL)
new_fnames = *fonts;
if (!check_fontname(new_fnames.f_n))
return code;
if (fontnum == fontMenu_fontescape
&& new_fnames.f_n != screen->MenuFontName(fontnum)) {
- if ((tmpname = x_strdup(new_fnames.f_n)) == 0)
+ if ((tmpname = x_strdup(new_fnames.f_n)) == NULL)
return code;
}
@@ -1683,8 +1770,8 @@ xtermLoadFont(XtermWidget xw,
* Normal/bold fonts should be the same width. Also, the min/max
* values should be the same.
*/
- if (new_fonts[fNorm].fs != 0
- && new_fonts[fBold].fs != 0
+ if (new_fonts[fNorm].fs != NULL
+ && new_fonts[fBold].fs != NULL
&& (!is_fixed_font(new_fonts[fNorm].fs)
|| !is_fixed_font(new_fonts[fBold].fs)
|| differing_widths(new_fonts[fNorm].fs, new_fonts[fBold].fs))) {
@@ -1697,8 +1784,8 @@ xtermLoadFont(XtermWidget xw,
}
if_OPT_WIDE_CHARS(screen, {
- if (new_fonts[fWide].fs != 0
- && new_fonts[fWBold].fs != 0
+ if (new_fonts[fWide].fs != NULL
+ && new_fonts[fWBold].fs != NULL
&& (!is_fixed_font(new_fonts[fWide].fs)
|| !is_fixed_font(new_fonts[fWBold].fs)
|| differing_widths(new_fonts[fWide].fs, new_fonts[fWBold].fs))) {
@@ -1931,11 +2018,11 @@ xtermLoadItalics(XtermWidget xw)
/*
* FIXME - need to handle font-leaks
*/
- data->fs = 0;
- if (getNormalFont(screen, n)->fs != 0 &&
+ data->fs = NULL;
+ if (getNormalFont(screen, n)->fs != NULL &&
(fp = get_font_name_props(screen->display,
getNormalFont(screen, n)->fs,
- 0)) != 0) {
+ NULL)) != NULL) {
if (!open_italic_font(xw, n, fp, data)) {
if (n > 0) {
xtermCopyFontInfo(data,
@@ -1987,7 +2074,7 @@ xtermLoadItalics(XtermWidget xw)
for (n = fontMenu_default; n <= fontMenu_lastBuiltin; ++n) { \
for (m = 0; m < fMAX; ++m) { \
FREE_STRING(dst.menu_font_names[n][m]); \
- dst.menu_font_names[n][m] = 0; \
+ dst.menu_font_names[n][m] = NULL; \
} \
}
@@ -2341,7 +2428,7 @@ HandleLoadVTFonts(Widget w,
{
XtermWidget xw;
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
static char empty[] = ""; /* appease strict compilers */
TScreen *screen = TScreenOf(xw);
@@ -2350,13 +2437,13 @@ HandleLoadVTFonts(Widget w,
char *myName = MyStackAlloc(strlen(name) + 1, name_buf);
TRACE(("HandleLoadVTFonts(%d)\n", *param_count));
- if (myName != 0) {
+ if (myName != NULL) {
char class_buf[80];
String convert = (String) ((*param_count > 1) ? params[1] : myName);
char *myClass = MyStackAlloc(strlen(convert) + 1, class_buf);
strcpy(myName, name);
- if (myClass != 0) {
+ if (myClass != NULL) {
strcpy(myClass, convert);
if (*param_count == 1)
myClass[0] = x_toupper(myClass[0]);
@@ -2576,7 +2663,7 @@ static Boolean
isBogusXft(XftFont *font)
{
Boolean result = False;
- if (font != 0) {
+ if (font != NULL) {
FcBool fcbogus;
if (GetFcBool(font->pattern, FC_COLOR) && fcbogus) {
TRACE(("...matched color-bitmap font\n"));
@@ -2747,7 +2834,7 @@ nameOfXftFont(XftFont *fp)
if (XftNameUnparse(fp->pattern, buffer, (int) sizeof(buffer))) {
char *target;
char *source = buffer;
- if ((target = strtok(source, ":")) != 0) {
+ if ((target = strtok(source, ":")) != NULL) {
result = x_strdup(target);
}
}
@@ -2788,9 +2875,9 @@ reportXftFonts(XtermWidget xw,
if (XftNameUnparse(match, buffer, (int) sizeof(buffer))) {
char *target;
char *source = buffer;
- while ((target = strtok(source, ":")) != 0) {
+ while ((target = strtok(source, ":")) != NULL) {
ReportFonts("\t%s\n", target);
- source = 0;
+ source = NULL;
}
}
fflush(stdout);
@@ -2858,13 +2945,13 @@ maybeXftCache(XtermWidget xw, XftFont *f
void
closeCachedXft(TScreen *screen, XftFont *font)
{
- if (font != 0) {
+ if (font != NULL) {
ListXftFonts *p, *q;
- for (p = screen->list_xft_fonts, q = 0; p != 0; q = p, p = p->next) {
+ for (p = screen->list_xft_fonts, q = NULL; p != NULL; q = p, p = p->next) {
if (p->font == font) {
XftFontClose(screen->display, font);
- if (q != 0) {
+ if (q != NULL) {
q->next = p->next;
} else {
screen->list_xft_fonts = p->next;
@@ -2887,17 +2974,17 @@ xtermOpenXft(XtermWidget xw,
TScreen *screen = TScreenOf(xw);
Display *dpy = screen->display;
XftResult status;
- XftFont *result = 0;
+ XftFont *result = NULL;
TRACE(("xtermOpenXft(name=%s, tag=%s)\n", name, tag));
- if (pat != 0 && (fontNum <= MaxXftCache)) {
+ if (pat != NULL && (fontNum <= MaxXftCache)) {
XftPattern *match;
FcConfigSubstitute(NULL, pat, FcMatchPattern);
XftDefaultSubstitute(dpy, DefaultScreen(dpy), pat);
match = FcFontMatch(NULL, pat, &status);
- if (match != 0) {
+ if (match != NULL) {
Boolean maybeReopened = False;
result = XftFontOpenPattern(dpy, match);
#ifdef FC_COLOR
@@ -3235,7 +3322,7 @@ setRenderFontsize(XtermWidget xw, VTwin
TRACE(("...reduce width from %d to %d\n", width, width >> 1));
width >>= 1;
}
- if (tag == 0) {
+ if (tag == NULL) {
SetFontWidth(screen, win, width);
SetFontHeight(screen, win, height);
win->f_ascent = ascent;
@@ -3259,7 +3346,7 @@ setRenderFontsize(XtermWidget xw, VTwin
TRACE(("setRenderFontsize %s unchanged\n", tag));
}
#if OPT_BOX_CHARS
- if (!screen->broken_box_chars && (tag == 0)) {
+ if (!screen->broken_box_chars && (tag == NULL)) {
linedrawing_gaps(xw, data);
}
#endif
@@ -3333,7 +3420,7 @@ void
setFaceName(XtermWidget xw, const char *value)
{
TScreen *screen = TScreenOf(xw);
- Boolean changed = (Boolean) ((CurrentXftFont(xw) == 0)
+ Boolean changed = (Boolean) ((CurrentXftFont(xw) == NULL)
|| strcmp(CurrentXftFont(xw), value));
if (changed) {
@@ -3389,7 +3476,7 @@ xtermComputeFontInfo(XtermWidget xw,
XTermXftFonts *wbtal = &(screen->renderWideBtal[fontnum]);
#endif
- if (XftFp(norm) == 0 && !IsEmpty(face_name)) {
+ if (XftFp(norm) == NULL && !IsEmpty(face_name)) {
Work *work = &(xw->work);
XftPattern *pat;
double face_size;
@@ -3467,7 +3554,7 @@ xtermComputeFontInfo(XtermWidget xw,
#if OPT_WIDE_ATTRS
#define HAVE_ITALICS 1
-#define FIND_ITALICS ((pat = XftNameParse(face_name)) != 0)
+#define FIND_ITALICS ((pat = XftNameParse(face_name)) != NULL)
#elif OPT_ISO_COLORS
#define HAVE_ITALICS 1
#define FIND_ITALICS (screen->italicULMode && (pat = XftNameParse(face_name)) != 0)
@@ -3478,7 +3565,7 @@ xtermComputeFontInfo(XtermWidget xw,
#if OPT_DEC_CHRSET
freeall_DoubleFT(xw);
#endif
- if ((pat = XftNameParse(face_name)) != 0) {
+ if ((pat = XftNameParse(face_name)) != NULL) {
#define OPEN_XFT(data, tag) xtermOpenXft(xw, data, 0, face_name, data->pattern, tag)
norm->pattern = XftPatternDuplicate(pat);
XftPatternBuild(norm->pattern,
@@ -3486,7 +3573,7 @@ xtermComputeFontInfo(XtermWidget xw,
(void *) 0);
OPEN_XFT(norm, "normal");
- if (XftFp(norm) != 0) {
+ if (XftFp(norm) != NULL) {
bold->pattern = XftPatternDuplicate(pat);
XftPatternBuild(bold->pattern,
NormXftPattern,
@@ -3524,7 +3611,7 @@ xtermComputeFontInfo(XtermWidget xw,
CACHE_XFT(norm);
CACHE_XFT(bold);
- if (XftFp(norm) != 0 && !XftFp(bold)) {
+ if (XftFp(norm) != NULL && !XftFp(bold)) {
noUsableXft(xw, "bold");
XftPatternDestroy(bold->pattern);
bold->pattern = XftPatternDuplicate(pat);
@@ -3537,7 +3624,7 @@ xtermComputeFontInfo(XtermWidget xw,
}
#if HAVE_ITALICS
CACHE_XFT(ital);
- if (XftFp(norm) != 0 && !XftFp(ital)) {
+ if (XftFp(norm) != NULL && !XftFp(ital)) {
noUsableXft(xw, "italic");
XftPatternDestroy(ital->pattern);
ital->pattern = XftPatternDuplicate(pat);
@@ -3549,7 +3636,7 @@ xtermComputeFontInfo(XtermWidget xw,
CACHE_XFT(ital);
}
CACHE_XFT(btal);
- if (XftFp(norm) != 0 && !XftFp(btal)) {
+ if (XftFp(norm) != NULL && !XftFp(btal)) {
noUsableXft(xw, "bold italic");
XftPatternDestroy(btal->pattern);
btal->pattern = XftPatternDuplicate(pat);
@@ -3571,7 +3658,7 @@ xtermComputeFontInfo(XtermWidget xw,
* to have, but not essential.
*/
#if OPT_RENDERWIDE
- if (XftFp(norm) != 0 && screen->wide_chars) {
+ if (XftFp(norm) != NULL && screen->wide_chars) {
int char_width = XftFp(norm)->max_advance_width * 2;
double aspect = ((FirstItemOf(xw->work.fonts.xft.list_w)
|| screen->renderFontNorm[fontnum].font_info.mixed)
@@ -3591,14 +3678,14 @@ xtermComputeFontInfo(XtermWidget xw,
FC_ASPECT, XftTypeDouble, aspect
if (!IsEmpty(face_name) && (pat = XftNameParse(face_name))
- != 0) {
+ != NULL) {
wnorm->pattern = XftPatternDuplicate(pat);
XftPatternBuild(wnorm->pattern,
WideXftPattern,
(void *) 0);
OPEN_XFT(wnorm, "wide");
- if (XftFp(wnorm) != 0) {
+ if (XftFp(wnorm) != NULL) {
wbold->pattern = XftPatternDuplicate(pat);
XftPatternBuild(wbold->pattern,
WideXftPattern,
@@ -3633,7 +3720,7 @@ xtermComputeFontInfo(XtermWidget xw,
CACHE_XFT(wnorm);
CACHE_XFT(wbold);
- if (XftFp(wnorm) != 0 && !XftFp(wbold)) {
+ if (XftFp(wnorm) != NULL && !XftFp(wbold)) {
noUsableXft(xw, "wide-bold");
XftPatternDestroy(wbold->pattern);
wbold->pattern = XftPatternDuplicate(pat);
@@ -3646,7 +3733,7 @@ xtermComputeFontInfo(XtermWidget xw,
}
CACHE_XFT(wital);
- if (XftFp(wnorm) != 0 && !XftFp(wital)) {
+ if (XftFp(wnorm) != NULL && !XftFp(wital)) {
noUsableXft(xw, "wide-italic");
XftPatternDestroy(wital->pattern);
wital->pattern = XftPatternDuplicate(pat);
@@ -3664,7 +3751,7 @@ xtermComputeFontInfo(XtermWidget xw,
}
#endif /* OPT_RENDERWIDE */
}
- if (XftFp(norm) == 0) {
+ if (XftFp(norm) == NULL) {
TRACE(("...no TrueType font found for number %d, disable menu entry\n", fontnum));
xw->work.render_font = False;
update_font_renderfont();
@@ -3786,7 +3873,7 @@ xtermMissingChar(unsigned ch, XTermFonts
{
Bool result = False;
XFontStruct *fs = font->fs;
- XCharStruct *pc = 0;
+ XCharStruct *pc = NULL;
if (fs == NULL) {
result = True;
@@ -3795,7 +3882,7 @@ xtermMissingChar(unsigned ch, XTermFonts
if (ch < 256)
#endif
{
- CI_GET_CHAR_INFO_1D(fs, E2A(ch), pc);
+ CI_GET_CHAR_INFO_1D(fs, ch, pc);
}
}
#if OPT_WIDE_CHARS
@@ -3806,7 +3893,7 @@ xtermMissingChar(unsigned ch, XTermFonts
}
#endif
- if (pc == 0 || CI_NONEXISTCHAR(pc)) {
+ if (pc == NULL || CI_NONEXISTCHAR(pc)) {
TRACE2(("xtermMissingChar %#04x (!exists)\n", ch));
result = True;
}
@@ -4031,14 +4118,14 @@ xtermDrawBoxChar(XTermDraw * params,
const short *const data;
} lines[] =
{
- { 0, 0 }, /* 00 (unused) */
- { 0, 0 }, /* 01 diamond */
- { 0, 0 }, /* 02 box */
+ { 0, NULL }, /* 00 (unused) */
+ { 0, NULL }, /* 01 diamond */
+ { 0, NULL }, /* 02 box */
{ 0, glyph_ht }, /* 03 HT */
{ 0, glyph_ff }, /* 04 FF */
- { 0, 0 }, /* 05 CR */
+ { 0, NULL }, /* 05 CR */
{ 0, glyph_lf }, /* 06 LF */
- { 0, 0 }, /* 07 degrees (small circle) */
+ { 0, NULL }, /* 07 degrees (small circle) */
{ 3, plus_or_minus }, /* 08 */
{ 0, glyph_nl }, /* 09 */
{ 0, glyph_vt }, /* 0A */
@@ -4061,9 +4148,9 @@ xtermDrawBoxChar(XTermDraw * params,
{ 0, greater_than_or_equal }, /* 1B */
{ 0, greek_pi }, /* 1C */
{ 0, not_equal_to }, /* 1D */
- { 0, 0 }, /* 1E LB */
- { 0, 0 }, /* 1F bullet */
- { 0, 0 }, /* 20 space */
+ { 0, NULL }, /* 1E LB */
+ { 0, NULL }, /* 1F bullet */
+ { 0, NULL }, /* 20 space */
{ 3, sigma_1 }, /* PUA(0) */
{ 3, sigma_2 }, /* PUA(1) */
{ 3, sigma_3 }, /* PUA(2) */
@@ -4101,7 +4188,7 @@ xtermDrawBoxChar(XTermDraw * params,
int which = (params->attr_flags & BOLD) ? fBold : fNorm;
unsigned n;
for (n = 1; n < 32; n++) {
- if (xtermMissingChar(n, getNormalFont(screen, which)))
+ if (xtermMissingChar(n, XTermFontsRef(screen->fnts, which)))
continue;
if (dec2ucs(screen, n) != ch)
continue;
@@ -4240,7 +4327,7 @@ xtermDrawBoxChar(XTermDraw * params,
0,
360 * 64);
} else if (ch < XtNumber(lines)
- && (p = lines[ch].data) != 0) {
+ && (p = lines[ch].data) != NULL) {
int coord[4];
int n = 0;
while (*p >= 0) {
@@ -4339,7 +4426,7 @@ foundXftGlyph(XtermWidget xw, XTermXftFo
XftFont *font = XftFpN(data, fontNum);
int result = 0;
- if (font != 0) {
+ if (font != NULL) {
if (!xtermXftMissing(xw, data, fontNum, font, wc)) {
if (XftIsN(data, fontNum) == xcBogus) {
@@ -4361,7 +4448,7 @@ markXftOpened(XtermWidget xw, XTermXftFo
which->opened++;
XftIsN(which, n) = xcOpened;
/* XFT_DEBUG=3 will show useful context for this */
- if (getenv("XFT_DEBUG") != 0) {
+ if (getenv("XFT_DEBUG") != NULL) {
printf("%s: matched U+%04X in fontset #%d [%u:%u]\n",
ProgramName,
wc, n + 1,
@@ -4372,7 +4459,7 @@ markXftOpened(XtermWidget xw, XTermXftFo
}
static char **
-xftData2List(XtermWidget xw, XTermXftFonts *fontData)
+xftData2List(XtermWidget xw, const XTermXftFonts *fontData)
{
TScreen *screen = TScreenOf(xw);
VTFontList *lists = &xw->work.fonts.xft;
@@ -4496,7 +4583,9 @@ findXftGlyph(XtermWidget xw, XTermXftFon
fontData->fontset = FcFontSetCreate();
- if (fontData->fontset == 0 || !sortedFonts || sortedFonts->nfont <= 0) {
+ if (fontData->fontset == NULL
+ || !sortedFonts
+ || sortedFonts->nfont <= 0) {
xtermWarning("did not find any usable TrueType font\n");
return 0;
}
@@ -4509,7 +4598,7 @@ findXftGlyph(XtermWidget xw, XTermXftFon
&& *++my_list != NULL) {
for (j = 0; my_list[j] != NULL; ++j) {
FcPattern *extraPattern;
- if ((extraPattern = XftNameParse(my_list[j])) != 0) {
+ if ((extraPattern = XftNameParse(my_list[j])) != NULL) {
FcPattern *match;
match = mergeXftStyle(xw, extraPattern, fontData);
@@ -4737,7 +4826,7 @@ ucs2dec(TScreen *screen, unsigned ch)
if ((ch > 127)
&& !is_UCS_SPECIAL(ch)) {
#if OPT_VT52_MODE
- if (screen != 0 && !(screen->vtXX_level)) {
+ if (screen != NULL && !(screen->vtXX_level)) {
/*
* Intentionally empty: it would be possible to use the built-in
* line-drawing fallback in xtermDrawBoxChar(), but for testing
@@ -4795,7 +4884,7 @@ dec2ucs(TScreen *screen, unsigned ch)
(void) screen;
if (xtermIsDecGraphic(ch)) {
#if OPT_VT52_MODE
- if (screen != 0 && !(screen->vtXX_level)) {
+ if (screen != NULL && !(screen->vtXX_level)) {
switch (ch) {
MY_UCS(0x0020, 0); /* nbsp, treat as blank */
MY_UCS(0x0020, 1); /* reserved, treat as blank */
@@ -5134,7 +5223,7 @@ HandleLargerFont(Widget w,
XtermWidget xw;
TRACE(("Handle larger-vt-font for %p\n", (void *) w));
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
if (xw->misc.shift_fonts) {
TScreen *screen = TScreenOf(xw);
int m;
@@ -5159,7 +5248,7 @@ HandleSmallerFont(Widget w,
XtermWidget xw;
TRACE(("Handle smaller-vt-font for %p\n", (void *) w));
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
if (xw->misc.shift_fonts) {
TScreen *screen = TScreenOf(xw);
int m;
@@ -5235,7 +5324,7 @@ HandleSetFont(Widget w,
{
XtermWidget xw;
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
int fontnum;
VTFontNames fonts;
@@ -5318,7 +5407,7 @@ SetVTFont(XtermWidget xw,
VTFontNames new_fnames;
memset(&new_fnames, 0, sizeof(new_fnames));
- if (fonts != 0)
+ if (fonts != NULL)
new_fnames = *fonts;
if (which == fontMenu_fontsel) { /* go get the selection */
@@ -5384,7 +5473,7 @@ static void
trimSizeFromFace(char *face_name, float *face_size)
{
char *first = strstr(face_name, ":size=");
- if (first == 0) {
+ if (first == NULL) {
first = face_name;
} else {
first++;
@@ -5395,13 +5484,13 @@ trimSizeFromFace(char *face_name, float
float value;
char extra;
TRACE(("...before trimming, font = \"%s\"\n", face_name));
- if (last == 0)
+ if (last == NULL)
last = first + strlen(first);
mark = *last;
*last = '\0';
if (sscanf(first, "size=%g%c", &value, &extra) == 1) {
TRACE(("...trimmed size from font: %g\n", value));
- if (face_size != 0)
+ if (face_size != NULL)
*face_size = value;
}
if (mark) {
@@ -5437,7 +5526,7 @@ save2FontList(XtermWidget xw,
(void) xw;
- if (source == 0)
+ if (source == NULL)
source = "";
while (isspace(CharOf(*source)))
++source;
@@ -5488,7 +5577,7 @@ save2FontList(XtermWidget xw,
if (!marked)
plen = 0;
value = x_strtrim(source + plen);
- if (value != 0) {
+ if (value != NULL) {
Bool success = False;
#if OPT_RENDERFONT
VTFontList *target = (use_ttf
@@ -5497,8 +5586,8 @@ save2FontList(XtermWidget xw,
#else
VTFontList *target = &(fontnames->x11);
#endif
- char ***list = 0;
- char **next = 0;
+ char ***list = NULL;
+ char **next = NULL;
size_t count = 0;
(void) use_ttf;
@@ -5532,14 +5621,14 @@ save2FontList(XtermWidget xw,
break;
#endif
case fMAX:
- list = 0;
+ list = NULL;
break;
}
- if (list != 0) {
+ if (list != NULL) {
success = True;
- if (*list != 0) {
- while ((*list)[count] != 0) {
+ if (*list != NULL) {
+ while ((*list)[count] != NULL) {
if (IsEmpty((*list)[count])) {
TRACE(("... initial %s\n", value));
free((*list)[count]);
@@ -5554,7 +5643,7 @@ save2FontList(XtermWidget xw,
}
if (success) {
next = (char **) realloc(*list, sizeof(char *) * (count + 2));
- if (next != 0) {
+ if (next != NULL) {
#if OPT_RENDERFONT
if (use_ttf) {
trimSizeFromFace(value,
@@ -5564,7 +5653,7 @@ save2FontList(XtermWidget xw,
}
#endif
next[count++] = value;
- next[count] = 0;
+ next[count] = NULL;
*list = next;
TRACE(("... saved \"%s\" \"%s\" %lu:\"%s\"\n",
whichFontList(xw, target),
@@ -5592,7 +5681,7 @@ save2FontList(XtermWidget xw,
}
if (list && *list) {
free((*list)[limit]);
- (*list)[limit] = 0;
+ (*list)[limit] = NULL;
}
}
} else {
@@ -5618,10 +5707,10 @@ allocFontList(XtermWidget xw,
char *blob;
blob = x_strdup(source);
- if (blob != 0) {
+ if (blob != NULL) {
int n;
int pass;
- char **list = 0;
+ char **list = NULL;
TRACE(("allocFontList %s name=\"%s\" source=\"%s\"\n",
whichFontEnum(which), name, blob));
@@ -5643,12 +5732,12 @@ allocFontList(XtermWidget xw,
if (count == 0 && *blob == '\0')
break;
list = TypeCallocN(char *, count + 2);
- if (list == 0)
+ if (list == NULL)
break;
}
}
if (list) {
- for (n = 0; list[n] != 0; ++n) {
+ for (n = 0; list[n] != NULL; ++n) {
if (*list[n]) {
save2FontList(xw, name, target, which, list[n], True, ttf);
}
@@ -5692,12 +5781,12 @@ copyFontList(char ***targetp, char **sou
{
freeFontList(targetp);
- if (source != 0) {
+ if (source != NULL) {
int pass;
size_t count;
for (pass = 0; pass < 2; ++pass) {
- for (count = 0; source[count] != 0; ++count) {
+ for (count = 0; source[count] != NULL; ++count) {
if (pass)
(*targetp)[count] = x_strdup(source[count]);
}
@@ -5717,7 +5806,7 @@ static Boolean
merge_sublist(char ***targetp, char **source)
{
Boolean result = False;
- if ((*targetp == 0 || IsEmpty(**targetp)) && !IsEmpty(*source)) {
+ if ((*targetp == NULL || IsEmpty(**targetp)) && !IsEmpty(*source)) {
copyFontList(targetp, source);
result = True;
}
@@ -5728,15 +5817,15 @@ merge_sublist(char ***targetp, char **so
void
freeFontList(char ***targetp)
{
- if (targetp != 0) {
+ if (targetp != NULL) {
char **target = *targetp;
- if (target != 0) {
+ if (target != NULL) {
int n;
- for (n = 0; target[n] != 0; ++n) {
+ for (n = 0; target[n] != NULL; ++n) {
free(target[n]);
}
free(target);
- *targetp = 0;
+ *targetp = NULL;
}
}
}
@@ -5748,7 +5837,7 @@ freeFontLists(VTFontList * lists)
TRACE(("freeFontLists\n"));
for (which = 0; which < fMAX; ++which) {
- char ***target = 0;
+ char ***target = NULL;
switch (which) {
case fNorm:
target = &(lists->list_n);
@@ -5779,7 +5868,7 @@ freeFontLists(VTFontList * lists)
break;
#endif
default:
- target = 0;
+ target = NULL;
break;
}
freeFontList(target);
@@ -5793,7 +5882,7 @@ freeFontLists(VTFontList * lists)
XTermFonts *
getNormalFont(TScreen *screen, int which)
{
- XTermFonts *result = 0;
+ XTermFonts *result = NULL;
if (which >= 0 && which < fMAX)
result = GetNormalFont(screen, which);
return result;
@@ -5803,7 +5892,7 @@ getNormalFont(TScreen *screen, int which
XTermFonts *
getDoubleFont(TScreen *screen, int which)
{
- XTermFonts *result = 0;
+ XTermFonts *result = NULL;
if ((int) which >= 0 && which < NUM_CHRSET)
result = GetDoubleFont(screen, which);
return result;
@@ -5820,7 +5909,7 @@ getDoubleXftFont(XTermDraw * params, XTe
const char *face_name = getFaceName(xw, False);
if (chrset != CSET_SWL
- && (top_pattern = XftNameParse(face_name)) != 0) {
+ && (top_pattern = XftNameParse(face_name)) != NULL) {
double face_size = (double) xw->misc.face_size[fontnum];
XftPattern *sub_pattern = XftPatternDuplicate(top_pattern);
const char *category = "doublesize";
@@ -5861,7 +5950,7 @@ getDoubleXftFont(XTermDraw * params, XTe
XTermFonts *
getItalicFont(TScreen *screen, int which)
{
- XTermFonts *result = 0;
+ XTermFonts *result = NULL;
#if OPT_WIDE_ATTRS
if (which >= 0 && which < fMAX)
result = GetItalicFont(screen, which);
@@ -5882,7 +5971,7 @@ XTermXftFonts *
getMyXftFont(XtermWidget xw, int which, int fontnum)
{
TScreen *screen = TScreenOf(xw);
- XTermXftFonts *result = 0;
+ XTermXftFonts *result = NULL;
if (fontnum >= 0 && fontnum < NMENUFONTS) {
switch ((VTFontEnum) which) {
case fNorm:
@@ -5921,7 +6010,7 @@ getMyXftFont(XtermWidget xw, int which,
}
const char *
-whichXftFonts(XtermWidget xw, XTermXftFonts *data)
+whichXftFonts(XtermWidget xw, const XTermXftFonts *data)
{
TScreen *screen = TScreenOf(xw);
const char *result = "?";
@@ -5966,8 +6055,8 @@ XftFont *
getXftFont(XtermWidget xw, VTFontEnum which, int fontnum)
{
XTermXftFonts *data = getMyXftFont(xw, (int) which, fontnum);
- XftFont *result = 0;
- if (data != 0)
+ XftFont *result = NULL;
+ if (data != NULL)
result = XftFp(data);
return result;
}
@@ -5998,7 +6087,7 @@ whichFontEnum(VTFontEnum value)
}
const char *
-whichFontList(XtermWidget xw, VTFontList * value)
+whichFontList(XtermWidget xw, const VTFontList * value)
{
const char *result = "?";
if (value == &(xw->work.fonts.x11))
@@ -6017,7 +6106,7 @@ whichFontList(XtermWidget xw, VTFontList
static const char *
whichFontList2s(VTFontList * list, char **value)
{
- const char *result = 0;
+ const char *result = NULL;
#define DATA(name) if (value == (list->name)) result = #name
DATA(list_n);
DATA(list_b);
@@ -6038,14 +6127,14 @@ whichFontList2s(VTFontList * list, char
const char *
whichFontList2(XtermWidget xw, char **value)
{
- const char *result = 0;
+ const char *result = NULL;
#define DATA(name) (result = whichFontList2s(&(xw->name), value))
- if (DATA(work.fonts.x11) == 0) {
+ if (DATA(work.fonts.x11) == NULL) {
#if OPT_RENDERFONT
- if (DATA(work.fonts.xft) == 0)
+ if (DATA(work.fonts.xft) == NULL)
#endif
#if OPT_LOAD_VTFONTS || OPT_WIDE_CHARS
- if (DATA(screen.cacheVTFonts.fonts.x11) == 0)
+ if (DATA(screen.cacheVTFonts.fonts.x11) == NULL)
#endif
result = "?";
}
Index: xsrc/external/mit/xterm/dist/graphics_sixel.c
diff -u xsrc/external/mit/xterm/dist/graphics_sixel.c:1.5 xsrc/external/mit/xterm/dist/graphics_sixel.c:1.6
--- xsrc/external/mit/xterm/dist/graphics_sixel.c:1.5 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/graphics_sixel.c Sun Mar 9 23:18:48 2025
@@ -1,4 +1,4 @@
-/* $XTermId: graphics_sixel.c,v 1.57 2024/05/16 20:03:50 tom Exp $ */
+/* $XTermId: graphics_sixel.c,v 1.63 2024/12/01 15:41:40 tom Exp $ */
/*
* Copyright 2014-2023,2024 by Thomas E. Dickey
@@ -272,18 +272,18 @@ update_sixel_aspect(SixelContext * conte
#endif
}
-static int
-finished_parsing(XtermWidget xw, Graphic *graphic)
+static void
+finished_parsing(Graphic *graphic)
{
- TScreen *screen = TScreenOf(xw);
+ TScreen *screen = TScreenOf(s_xw);
/* Update the screen scrolling and do a refresh.
* The refresh may not cover the whole graphic.
*/
if (screen->scroll_amt)
- FlushScroll(xw);
+ FlushScroll(s_xw);
- if (SixelScrolling(xw)) {
+ if (SixelScrolling(s_xw)) {
int new_row, new_col;
/* Note: XTerm follows the VT340 behavior in text cursor placement
@@ -327,7 +327,7 @@ finished_parsing(XtermWidget xw, Graphic
}
while (new_row > screen->bot_marg) {
- xtermScroll(xw, 1);
+ xtermScroll(s_xw, 1);
new_row--;
TRACE(("bottom row was past screen. new start row=%d, cursor row=%d\n",
graphic->charrow, new_row));
@@ -344,16 +344,15 @@ finished_parsing(XtermWidget xw, Graphic
}
graphic->dirty = True;
- refresh_modified_displayed_graphics(xw);
+ refresh_modified_displayed_graphics(s_xw);
dump_graphic(graphic);
- return 0;
}
/*
* Handle Sixel protocol selector: Ps1 ; Ps2 ; Ps3 q
* Refer to EK-PPLV2-PM, Table 5-1 "Macro Parameter Selections"
*/
-int
+void
parse_sixel_init(XtermWidget xw, ANSI *params)
{
s_xw = xw;
@@ -455,8 +454,6 @@ parse_sixel_init(XtermWidget xw, ANSI *p
}
update_sixel_aspect(&s_context, s_graphic);
-
- return 0;
}
#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC)
@@ -537,26 +534,26 @@ parse_sixel_incremental_display(void)
s_prev_col = dirty_col;
}
-int
+void
parse_sixel_char(char cp)
{
/* s_* variables are static state, defined above */
- if (cp == '\0' || isspace(cp)) {
+ if (cp == '\0' || isspace(CharOf(cp))) {
if (s_repeating && cp == '\0') {
TRACE(("DATA_ERROR: sixel data string terminated in the middle of a repeat operator\n"));
s_repeating = False;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
}
- return 0;
+ return;
}
- if (isdigit(cp)) {
+ if (isdigit(CharOf(cp))) {
if (s_accumulator == -1)
s_accumulator = 0;
s_accumulator *= 10;
s_accumulator += cp - '0';
- return 0;
+ return;
}
if (s_repeating) { /* '!' ... */
@@ -580,7 +577,6 @@ parse_sixel_char(char cp)
set_sixel(s_graphic, &s_context, sixel)) {
s_context.col++;
} else {
- s_context.col = 0;
break;
}
}
@@ -596,7 +592,7 @@ parse_sixel_char(char cp)
s_repeating = False;
if (s_screen->incremental_graphics)
parse_sixel_incremental_display();
- return 0;
+ return;
}
/* FIXME: Raster attributes (") can occur repeatedly and at any time. */
@@ -633,7 +629,8 @@ parse_sixel_char(char cp)
TRACE(("DATA_ERROR: raster " #field " %d > max %d\n", \
s_raster_params[state], s_graphic->max_ ## field)); \
s_raster_state = s_NOTRASTER; \
- return finished_parsing(s_xw, s_graphic); \
+ finished_parsing(s_graphic); \
+ return; \
} \
s_context.declared_ ## field = s_raster_params[state]; \
break
@@ -649,7 +646,8 @@ parse_sixel_char(char cp)
TRACE(("DATA_ERROR: raster operator ('\"') with too many parameters (%d)\n, next char %c (%d)\n",
s_raster_state, cp, cp));
s_raster_state = s_NOTRASTER;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
/* Save data from Raster Attributes */
@@ -664,7 +662,7 @@ parse_sixel_char(char cp)
s_raster_state++;
if (cp == ';') {
- return 0;
+ return;
}
/* cp (next character to consume) is not digit, space, or semicolon, so finish up with raster */
@@ -692,7 +690,8 @@ parse_sixel_char(char cp)
/* FIXME: What does VT340 do with default register? */
TRACE(("DATA_ERROR: sixel data string uses default color register, next char %c (%d)\n",
cp, cp));
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
s_Pregister = (RegisterNum) s_color_params[s_GETTINGREGISTER];
/* The DEC terminals wrapped register indices. */
@@ -705,7 +704,8 @@ parse_sixel_char(char cp)
/* FIXME: Default VT340 colorspace is HSL, right? */
TRACE(("DATA_ERROR: sixel data string uses default colorspace \n"));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
break;
case s_GETTINGPC1:
@@ -713,7 +713,8 @@ parse_sixel_char(char cp)
/* FIXME: Does VT340 sixel do the same as ReGIS and use the previous value for unspecified color components? */
TRACE(("DATA_ERROR: sixel data string uses default color component 1 \n"));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
break;
case s_GETTINGPC2:
@@ -721,7 +722,8 @@ parse_sixel_char(char cp)
/* FIXME: unspecified color components? */
TRACE(("DATA_ERROR: sixel data string uses default color component 2 \n"));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
break;
case s_GETTINGPC3:
@@ -729,7 +731,8 @@ parse_sixel_char(char cp)
/* FIXME: unspecified color components? */
TRACE(("DATA_ERROR: sixel data string uses default color component 3 \n"));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
break;
case s_COLORINGDONE:
@@ -741,20 +744,22 @@ parse_sixel_char(char cp)
TRACE(("DATA_ERROR: sixel switch color operator ('#') with too many parameters\n, next char %c (%d)\n",
cp, cp));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
s_accumulator = -1;
s_color_state++;
if (cp == ';') {
- return 0;
+ return;
} else {
/* cp (next character to consume) is not digit, space, or semicolon, so finish up with color */
if (s_color_state != s_COLORINGDONE && s_color_state != s_GETTINGCOLORSPACE) {
TRACE(("DATA_ERROR: sixel switch color operator with wrong number of parameters (%d)\n", s_color_state));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
if (s_color_state == s_COLORINGDONE) {
@@ -775,7 +780,8 @@ parse_sixel_char(char cp)
TRACE(("DATA_ERROR: sixel set color operator uses out-of-range HLS color coordinates %d,%d,%d\n",
Pc1, Pc2, Pc3));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
hls2rgb(Pc1, Pc2, Pc3, &r, &g, &b);
break;
@@ -784,7 +790,8 @@ parse_sixel_char(char cp)
TRACE(("DATA_ERROR: sixel set color operator uses out-of-range RGB color coordinates %d,%d,%d\n",
Pc1, Pc2, Pc3));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
r = (short) Pc1;
g = (short) Pc2;
@@ -793,7 +800,8 @@ parse_sixel_char(char cp)
default: /* unknown */
TRACE(("DATA_ERROR: sixel set color operator uses unknown color space %d\n", Pspace));
s_color_state = s_NOTCOLORING;
- return finished_parsing(s_xw, s_graphic);
+ finished_parsing(s_graphic);
+ return;
}
update_color_register(s_graphic,
s_Pregister,
@@ -815,8 +823,7 @@ parse_sixel_char(char cp)
if (sixel) {
if (!ValidColumn(s_graphic, &s_context) ||
!set_sixel(s_graphic, &s_context, sixel)) {
- s_context.col = 0;
- return 0;
+ return;
}
}
s_context.col++;
@@ -877,14 +884,11 @@ parse_sixel_char(char cp)
TRACE(("DATA_ERROR: skipping unknown sixel command %04x (%c)\n",
(int) cp, cp));
}
-
- return 0;
}
-/* Just like finished_parsing, but called from do_dcs in misc.c */
-int
-parse_sixel_finished(XtermWidget xw)
+/* Just like finished_parsing, but called from charproc.c */
+void
+parse_sixel_finished(void)
{
- /* FIXME: should use s_xw */
- return finished_parsing(xw, s_graphic);
+ finished_parsing(s_graphic);
}
Index: xsrc/external/mit/xterm/dist/linedata.c
diff -u xsrc/external/mit/xterm/dist/linedata.c:1.11 xsrc/external/mit/xterm/dist/linedata.c:1.12
--- xsrc/external/mit/xterm/dist/linedata.c:1.11 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/linedata.c Sun Mar 9 23:18:48 2025
@@ -1,7 +1,7 @@
-/* $XTermId: linedata.c,v 1.106 2023/12/31 20:12:06 tom Exp $ */
+/* $XTermId: linedata.c,v 1.107 2024/12/01 20:27:00 tom Exp $ */
/*
- * Copyright 2009-2022,2023 by Thomas E. Dickey
+ * Copyright 2009-2023,2024 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -44,14 +44,14 @@
LineData *
getLineData(TScreen *screen, int row)
{
- LineData *result = 0;
+ LineData *result = NULL;
ScrnBuf buffer;
int max_row = LastRowNumber(screen);
if (row >= 0) {
buffer = screen->visbuf;
} else {
- buffer = 0;
+ buffer = NULL;
result = getScrollback(screen, row);
}
if (row >= 0 && row <= max_row) {
Index: xsrc/external/mit/xterm/dist/misc.c
diff -u xsrc/external/mit/xterm/dist/misc.c:1.26 xsrc/external/mit/xterm/dist/misc.c:1.27
--- xsrc/external/mit/xterm/dist/misc.c:1.26 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/misc.c Sun Mar 9 23:18:48 2025
@@ -1,4 +1,4 @@
-/* $XTermId: misc.c,v 1.1092 2024/05/21 00:28:28 tom Exp $ */
+/* $XTermId: misc.c,v 1.1107 2024/12/01 20:06:49 tom Exp $ */
/*
* Copyright 1999-2023,2024 by Thomas E. Dickey
@@ -105,13 +105,6 @@
#define MakeTemp(f) mktemp(f)
#endif
-#ifdef VMS
-#define XTERM_VMS_LOGFILE "SYS$SCRATCH:XTERM_LOG.TXT"
-#ifdef ALLOWLOGFILEEXEC
-#undef ALLOWLOGFILEEXEC
-#endif
-#endif /* VMS */
-
#if USE_DOUBLE_BUFFER
#include <X11/extensions/Xdbe.h>
#endif
@@ -179,7 +172,7 @@ Sleep(int msec)
select_timeout.tv_sec = 0;
select_timeout.tv_usec = msec * 1000;
- select(0, 0, 0, 0, &select_timeout);
+ select(0, NULL, NULL, NULL, &select_timeout);
}
static void
@@ -289,7 +282,7 @@ setXUrgency(XtermWidget xw, Bool enable)
if (screen->bellIsUrgent) {
XWMHints *h = XGetWMHints(screen->display, VShellWindow(xw));
- if (h != 0) {
+ if (h != NULL) {
if (enable && !(screen->select & FOCUS)) {
h->flags |= XUrgencyHint;
} else {
@@ -411,7 +404,7 @@ mergeExposeEvents(XEvent *target)
XExposeEvent *q = (XExposeEvent *) (&next_event);
XtAppNextEvent(app_con, &next_event);
- TRACE_EVENT("pending", &next_event, (String *) 0, 0);
+ TRACE_EVENT("pending", &next_event, (String *) 0, NULL);
/*
* If either window is contained within the other, merge the events.
@@ -466,7 +459,7 @@ mergeConfigureEvents(XEvent *target)
XConfigureEvent *q = (XConfigureEvent *) (&next_event);
XtAppNextEvent(app_con, &next_event);
- TRACE_EVENT("pending", &next_event, (String *) 0, 0);
+ TRACE_EVENT("pending", &next_event, (String *) 0, NULL);
if (p->window == q->window) {
TRACE(("pending Configure...merged\n"));
@@ -519,7 +512,7 @@ mergeButtonEvents(XEvent *target)
XButtonEvent *q = (XButtonEvent *) (&next_event);
XtAppNextEvent(app_con, &next_event);
- TRACE_EVENT("pending", &next_event, (String *) 0, 0);
+ TRACE_EVENT("pending", &next_event, (String *) 0, NULL);
if (p->window == q->window) {
TRACE(("pending ButtonEvent...merged\n"));
@@ -553,7 +546,7 @@ xtermAppPending(void)
while (result && XtAppPeekEvent(app_con, &this_event)) {
found = True;
- TRACE_EVENT("pending", &this_event, (String *) 0, 0);
+ TRACE_EVENT("pending", &this_event, (String *) 0, NULL);
if (this_event.type == Expose) {
result = mergeExposeEvents(&this_event);
} else if (this_event.type == ConfigureNotify) {
@@ -715,12 +708,12 @@ make_hidden_cursor(XtermWidget xw)
* server insists on drawing _something_.
*/
TRACE(("Ask for nil2 font\n"));
- if ((fn = xtermLoadQueryFont(xw, "nil2")) == 0) {
+ if ((fn = xtermLoadQueryFont(xw, "nil2")) == NULL) {
TRACE(("...Ask for fixed font\n"));
fn = xtermLoadQueryFont(xw, DEFFONT);
}
- if (fn != None) {
+ if (fn != NULL) {
/* a space character seems to work as a cursor (dots are not needed) */
c = XCreateGlyphCursor(dpy, fn->fid, fn->fid, 'X', ' ', &dummy, &dummy);
XFreeFont(dpy, fn);
@@ -745,7 +738,7 @@ init_colored_cursor(Display *dpy)
static const char pattern[] = "xtermXXXXXXXX";
char *env = getenv("XCURSOR_THEME");
- xterm_cursor_theme = 0;
+ xterm_cursor_theme = NULL;
/*
* The environment variable overrides a (possible) resource Xcursor.theme
*/
@@ -766,11 +759,11 @@ init_colored_cursor(Display *dpy)
TRACE(("init_colored_cursor will make an empty Xcursor theme\n"));
- if ((tmp_dir = getenv("TMPDIR")) == 0) {
+ if ((tmp_dir = getenv("TMPDIR")) == NULL) {
tmp_dir = P_tmpdir;
}
needed = strlen(tmp_dir) + 4 + strlen(theme) + strlen(pattern);
- if ((filename = malloc(needed)) != 0) {
+ if ((filename = malloc(needed)) != NULL) {
sprintf(filename, "%s/%s", tmp_dir, pattern);
#ifdef HAVE_MKDTEMP
@@ -788,14 +781,14 @@ init_colored_cursor(Display *dpy)
* search path away from home. We are setting up the complete
* theme just in case the library ever acquires a maintainer.
*/
- if (xterm_cursor_theme != 0) {
+ if (xterm_cursor_theme != NULL) {
char *leaf = xterm_cursor_theme + strlen(xterm_cursor_theme);
FILE *fp;
strcat(leaf, "/");
strcat(leaf, theme);
- if ((fp = fopen(xterm_cursor_theme, "w")) != 0) {
+ if ((fp = fopen(xterm_cursor_theme, "w")) != NULL) {
fprintf(fp, "[Icon Theme]\n");
fclose(fp);
*leaf = '\0';
@@ -821,7 +814,7 @@ void
cleanup_colored_cursor(void)
{
#ifdef HAVE_LIB_XCURSOR
- if (xterm_cursor_theme != 0) {
+ if (xterm_cursor_theme != NULL) {
char *my_path = getenv("XCURSOR_PATH");
struct stat sb;
if (!IsEmpty(my_path)
@@ -1076,7 +1069,7 @@ HandleStringEvent(Widget w GCC_UNUSED,
value *= 16;
if (c >= '0' && c <= '9')
value += (unsigned) (c - '0');
- else if ((xxxxxx = (strchr) (abcdef, c)) != 0)
+ else if ((xxxxxx = (strchr) (abcdef, c)) != NULL)
value += (unsigned) (xxxxxx - abcdef) + 10;
else
break;
@@ -1628,7 +1621,7 @@ dabbrev_prev_word(XtermWidget xw, CELL *
char *abword;
int c;
char *ab_end = (xw->work.dabbrev_data + MAX_DABBREV - 1);
- char *result = 0;
+ char *result = NULL;
abword = ab_end;
*abword = '\0'; /* end of string marker */
@@ -1645,7 +1638,7 @@ dabbrev_prev_word(XtermWidget xw, CELL *
result = abword;
}
- if (result != 0) {
+ if (result != NULL) {
while ((c = dabbrev_prev_char(screen, cell, ld)) >= 0 &&
!IS_WORD_CONSTITUENT(c)) {
; /* skip preceding spaces */
@@ -1662,7 +1655,7 @@ dabbrev_expand(XtermWidget xw)
int pty = screen->respond; /* file descriptor of pty */
static CELL cell;
- static char *dabbrev_hint = 0, *lastexpansion = 0;
+ static char *dabbrev_hint = NULL, *lastexpansion = NULL;
static unsigned int expansions;
char *expansion;
@@ -1677,14 +1670,14 @@ dabbrev_expand(XtermWidget xw)
free(dabbrev_hint);
- if ((dabbrev_hint = dabbrev_prev_word(xw, &cell, &ld)) != 0) {
+ if ((dabbrev_hint = dabbrev_prev_word(xw, &cell, &ld)) != NULL) {
free(lastexpansion);
- if ((lastexpansion = strdup(dabbrev_hint)) != 0) {
+ if ((lastexpansion = strdup(dabbrev_hint)) != NULL) {
/* make own copy */
- if ((dabbrev_hint = strdup(dabbrev_hint)) != 0) {
+ if ((dabbrev_hint = strdup(dabbrev_hint)) != NULL) {
screen->dabbrev_working = True;
/* we are in the middle of dabbrev process */
}
@@ -1696,17 +1689,17 @@ dabbrev_expand(XtermWidget xw)
}
if (!screen->dabbrev_working) {
free(lastexpansion);
- lastexpansion = 0;
+ lastexpansion = NULL;
return result;
}
}
- if (dabbrev_hint == 0)
+ if (dabbrev_hint == NULL)
return result;
hint_len = strlen(dabbrev_hint);
for (;;) {
- if ((expansion = dabbrev_prev_word(xw, &cell, &ld)) == 0) {
+ if ((expansion = dabbrev_prev_word(xw, &cell, &ld)) == NULL) {
if (expansions >= 2) {
expansions = 0;
cell.col = screen->cur_col;
@@ -1721,12 +1714,12 @@ dabbrev_expand(XtermWidget xw)
break;
}
- if (expansion != 0) {
+ if (expansion != NULL) {
Char *copybuffer;
size_t del_cnt = strlen(lastexpansion) - hint_len;
size_t buf_cnt = del_cnt + strlen(expansion) - hint_len;
- if ((copybuffer = TypeMallocN(Char, buf_cnt)) != 0) {
+ if ((copybuffer = TypeMallocN(Char, buf_cnt)) != NULL) {
/* delete previous expansion */
memset(copybuffer, screen->dabbrev_erase_char, del_cnt);
memmove(copybuffer + del_cnt,
@@ -1739,7 +1732,7 @@ dabbrev_expand(XtermWidget xw)
free(lastexpansion);
- if ((lastexpansion = strdup(expansion)) != 0) {
+ if ((lastexpansion = strdup(expansion)) != NULL) {
result = 1;
expansions++;
}
@@ -1759,7 +1752,7 @@ HandleDabbrevExpand(Widget w,
XtermWidget xw;
TRACE(("Handle dabbrev-expand for %p\n", (void *) w));
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
if (!dabbrev_expand(xw))
Bell(xw, XkbBI_TerminalBell, 0);
}
@@ -1824,7 +1817,7 @@ xtermIsIconified(XtermWidget xw)
int actual_format_return = 0;
unsigned long nitems_return = 0;
unsigned long bytes_after_return = 0;
- unsigned char *prop_return = 0;
+ unsigned char *prop_return = NULL;
long long_length = 1024;
Atom requested_type = XA_ATOM;
Atom is_hidden = CachedInternAtom(dpy, "_NET_WM_STATE_HIDDEN");
@@ -1845,7 +1838,7 @@ xtermIsIconified(XtermWidget xw)
&nitems_return,
&bytes_after_return,
&prop_return)) {
- if (prop_return != 0
+ if (prop_return != NULL
&& actual_return_type == requested_type
&& actual_format_return == 32) {
unsigned long n;
@@ -1877,7 +1870,7 @@ HandleDeIconify(Widget w,
{
XtermWidget xw;
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
xtermDeiconify(xw);
}
}
@@ -1891,7 +1884,7 @@ HandleIconify(Widget w,
{
XtermWidget xw;
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
xtermIconify(xw);
}
}
@@ -2058,7 +2051,7 @@ HandleMaximize(Widget w,
{
XtermWidget xw;
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
RequestMaximize(xw, 1);
}
}
@@ -2072,7 +2065,7 @@ HandleRestoreSize(Widget w,
{
XtermWidget xw;
- if ((xw = getXtermWidget(w)) != 0) {
+ if ((xw = getXtermWidget(w)) != NULL) {
RequestMaximize(xw, 0);
}
}
@@ -2116,11 +2109,7 @@ Redraw(void)
#endif
}
-#ifdef VMS
-#define TIMESTAMP_FMT "%s%d-%02d-%02d-%02d-%02d-%02d"
-#else
#define TIMESTAMP_FMT "%s%d-%02d-%02d.%02d:%02d:%02d"
-#endif
void
timestamp_filename(char *dst, const char *src)
@@ -2149,9 +2138,7 @@ create_printfile(XtermWidget xw, const c
int fd;
FILE *fp;
-#ifdef VMS
- sprintf(fname, "sys$scratch:xterm%s", suffix);
-#elif defined(HAVE_STRFTIME)
+#if defined(HAVE_STRFTIME)
{
char format[1024];
time_t now;
@@ -2181,17 +2168,6 @@ open_userfile(uid_t uid, gid_t gid, char
int fd;
struct stat sb;
-#ifdef VMS
- if ((fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) {
- int the_error = errno;
- xtermWarning("cannot open %s: %d:%s\n",
- path,
- the_error,
- SysErrorMsg(the_error));
- return -1;
- }
- chown(path, uid, gid);
-#else
if ((access(path, F_OK) != 0 && (errno != ENOENT))
|| (creat_as(uid, gid, append, path, 0644) <= 0)
|| ((fd = open(path, O_WRONLY | O_APPEND)) < 0)) {
@@ -2202,7 +2178,6 @@ open_userfile(uid_t uid, gid_t gid, char
SysErrorMsg(the_error));
return -1;
}
-#endif
/*
* Doublecheck that the user really owns the file that we've opened before
@@ -2218,7 +2193,6 @@ open_userfile(uid_t uid, gid_t gid, char
return fd;
}
-#ifndef VMS
/*
* Create a file only if we could with the permissions of the real user id.
* We could emulate this with careful use of access() and following
@@ -2321,7 +2295,6 @@ creat_as(uid_t uid, gid_t gid, Bool appe
return retval;
}
}
-#endif /* !VMS */
#endif /* OPT_SCREEN_DUMPS || defined(ALLOWLOGGING) */
int
@@ -2386,7 +2359,7 @@ StartLogExec(TScreen *screen)
}
}
- if (shell == 0) {
+ if (shell == NULL) {
static char dummy[] = "/bin/sh";
shell = dummy;
}
@@ -2496,13 +2469,6 @@ StartLog(XtermWidget xw)
if (screen->logging || (screen->inhibit & I_LOG))
return;
-#ifdef VMS /* file name is fixed in VMS variant */
- screen->logfd = open(XTERM_VMS_LOGFILE,
- O_CREAT | O_TRUNC | O_APPEND | O_RDWR,
- 0640);
- if (screen->logfd < 0)
- return; /* open failed */
-#else /*VMS */
/* if we weren't supplied with a logfile path, generate one */
if (IsEmpty(screen->logfile))
@@ -2529,7 +2495,6 @@ StartLog(XtermWidget xw)
True)) < 0)
return;
}
-#endif /*VMS */
screen->logstart = VTbuffer->next;
screen->logging = True;
update_logging();
@@ -2557,14 +2522,8 @@ FlushLog(XtermWidget xw)
Char *cp;
size_t i;
-#ifdef VMS /* avoid logging output loops which otherwise occur sometimes
- when there is no output and cp/screen->logstart are 1 apart */
- if (!tt_new_output)
- return;
- tt_new_output = False;
-#endif /* VMS */
cp = VTbuffer->next;
- if (screen->logstart != 0
+ if (screen->logstart != NULL
&& (i = (size_t) (cp - screen->logstart)) > 0) {
IGNORE_RC(write(screen->logfd, screen->logstart, i));
}
@@ -2622,13 +2581,13 @@ rgb masks (%04lx/%04lx/%04lx)\n"
Display *dpy = screen->display;
XVisualInfo myTemplate;
- if (xw->visInfo == 0 && xw->numVisuals == 0) {
+ if (xw->visInfo == NULL && xw->numVisuals == 0) {
myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(dpy,
XDefaultScreen(dpy)));
xw->visInfo = XGetVisualInfo(dpy, (long) VisualIDMask,
&myTemplate, &xw->numVisuals);
- if ((xw->visInfo != 0) && (xw->numVisuals > 0)) {
+ if ((xw->visInfo != NULL) && (xw->numVisuals > 0)) {
XVisualInfo *vi = xw->visInfo;
xw->rgb_widths[0] = maskToWidth(vi->red_mask);
xw->rgb_widths[1] = maskToWidth(vi->green_mask);
@@ -2663,7 +2622,7 @@ rgb masks (%04lx/%04lx/%04lx)\n"
xw->rgb_widths[2]));
}
}
- return (xw->visInfo != 0) && (xw->numVisuals > 0) ? xw->visInfo : NULL;
+ return (xw->visInfo != NULL) && (xw->numVisuals > 0) ? xw->visInfo : NULL;
#undef MYFMT
#undef MYARG
}
@@ -2717,14 +2676,14 @@ loadColorTable(XtermWidget xw, unsigned
{
Colormap cmap = xw->core.colormap;
TScreen *screen = TScreenOf(xw);
- Boolean result = (screen->cmap_data != 0);
+ Boolean result = (screen->cmap_data != NULL);
if (!result
&& length != 0
&& length < MAX_COLORTABLE) {
screen->cmap_data = TypeMallocN(XColor, (size_t) length);
- if (screen->cmap_data != 0) {
+ if (screen->cmap_data != NULL) {
unsigned i;
unsigned shift;
@@ -2848,7 +2807,7 @@ allocateClosestRGB(XtermWidget xw, XColo
if (loadColorTable(xw, cmap_size)) {
char *tried = TypeCallocN(char, (size_t) cmap_size);
- if (tried != 0) {
+ if (tried != NULL) {
unsigned attempts;
/*
@@ -3099,8 +3058,8 @@ ResetAnsiColorRequest(XtermWidget xw, ch
color = (int) (strtol) (buf, &next, 10);
if (!PartS2L(buf, next) || (color < 0))
break; /* no number at all */
- if (next != 0) {
- if (strchr(";", *next) == 0)
+ if (next != NULL) {
+ if (strchr(";", *next) == NULL)
break; /* unexpected delimiter */
++next;
}
@@ -3373,8 +3332,6 @@ ManipulateSelectionData(XtermWidget xw,
PDATA('7', CUT_BUFFER7),
};
char target_used[XtNumber(table)];
- char select_code[XtNumber(table) + 1];
- String select_args[XtNumber(table) + 1];
const char *base = buf;
Cardinal j;
@@ -3388,6 +3345,8 @@ ManipulateSelectionData(XtermWidget xw,
}
if (*buf == ';') {
+ char select_code[XtNumber(table) + 1];
+ String select_args[XtNumber(table) + 1];
*buf++ = '\0';
if (*base == '\0')
@@ -3458,10 +3417,6 @@ ManipulateSelectionData(XtermWidget xw,
/***====================================================================***/
-#define IsSetUtf8Title(xw) (IsTitleMode(xw, tmSetUtf8) \
- || (xw->screen.utf8_title) \
- || (xw->screen.c1_printable))
-
static Bool
xtermIsPrintable(XtermWidget xw, Char **bufp, Char *last)
{
@@ -3748,7 +3703,7 @@ ChangeColorsRequest(XtermWidget xw,
if (names != NULL) {
*names++ = '\0';
}
- if (thisName != 0) {
+ if (thisName != NULL) {
if (!strcmp(thisName, "?")) {
if (ReportColorRequest(xw, ndx, final))
++queried;
@@ -3794,8 +3749,8 @@ ResetColorsRequest(XtermWidget xw,
newColors.which = 0;
newColors.names[ndx] = NULL;
- if (thisName != 0
- && xw->work.oldColors->names[ndx] != 0
+ if (thisName != NULL
+ && xw->work.oldColors->names[ndx] != NULL
&& strcmp(thisName, xw->work.oldColors->names[ndx])) {
AllocateTermColor(xw, &newColors, ndx, thisName, False);
@@ -3859,7 +3814,7 @@ QueryFontRequest(XtermWidget xw, String
Bool success = True;
int num;
String base = buf + 1;
- const char *name = 0;
+ const char *name = NULL;
num = ParseShiftedFont(xw, buf, &buf);
if (num < 0
@@ -3872,7 +3827,7 @@ QueryFontRequest(XtermWidget xw, String
name = getFaceName(xw, False);
} else
#endif
- if ((name = screen->MenuFontName(num)) == 0) {
+ if ((name = screen->MenuFontName(num)) == NULL) {
success = False;
}
}
@@ -3950,7 +3905,7 @@ ChangeFontRequest(XtermWidget xw, String
* But if there is, simply overwrite the font entry.
*/
if (*buf == '\0') {
- if ((buf = screen->MenuFontName(num)) == 0) {
+ if ((buf = screen->MenuFontName(num)) == NULL) {
success = False;
}
}
@@ -3962,7 +3917,7 @@ ChangeFontRequest(XtermWidget xw, String
name = x_strtrim(buf);
if (screen->EscapeFontName()) {
FREE_STRING(screen->EscapeFontName());
- screen->EscapeFontName() = 0;
+ screen->EscapeFontName() = NULL;
}
if (success && !IsEmpty(name)) {
#if OPT_RENDERFONT
@@ -4013,6 +3968,7 @@ report_allowed_ops(XtermWidget xw, int f
CASE(allowTcapOps);
CASE(allowTitleOps);
CASE(allowWindowOps);
+ (void) delimiter;
#undef CASE
unparseputc1(xw, final);
@@ -4036,7 +3992,7 @@ do_osc(XtermWidget xw, Char *oscbuf, siz
int mode;
Char *cp;
int state = 0;
- char *buf = 0;
+ char *buf = NULL;
char temp[20];
#if OPT_ISO_COLORS
int ansi_colors = 0;
@@ -4460,7 +4416,7 @@ parse_decudk(XtermWidget xw, const char
* Parse numeric parameters. Normally we use a state machine to simplify
* interspersing with control characters, but have the string already.
*/
-static void
+void
parse_ansi_params(ANSI *params, const char **string)
{
const char *cp = *string;
@@ -4596,7 +4552,7 @@ parse_decdld(ANSI *params, const char *s
ch = CharOf(ch - 0x3f);
for (n = 0; n < 6; ++n) {
- bits[row + n][col] = CharOf((ch & (1 << n)) ? '*' : '.');
+ bits[row + n][col] = CharOf((ch & xBIT(n)) ? '*' : '.');
}
col += 1;
prior = True;
@@ -4936,10 +4892,8 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
sprintf(reply, "%d%s%s",
(screen->vtXX_level ?
screen->vtXX_level : 1) + 60,
- (screen->vtXX_level >= 2)
- ? (screen->control_eight_bits
- ? ";0" : ";1")
- : "",
+ (screen->control_eight_bits
+ ? ";0" : ";1"),
cp);
} else if (!strcmp(cp, "r")) { /* DECSTBM */
TRACE(("DECRQSS -> DECSTBM\n"));
@@ -5023,6 +4977,12 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
okay = False;
}
} else if (screen->terminal_id == 525
+ && !strcmp((cp2 = skip_params(cp)), "){")) { /* DECSTGLT */
+ TRACE(("reply DECSTGLT:%s\n", cp));
+ sprintf(reply, "%d%s",
+ 3, /* ANSI SGR color */
+ cp);
+ } else if (screen->terminal_id == 525
&& !strcmp((cp2 = skip_params(cp)), ",|")) { /* DECAC */
ival = parse_int_param(&cp);
TRACE(("reply DECAC\n"));
@@ -5067,7 +5027,44 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
}
} else
#endif
- {
+ /*
+ * This query returns the settings assuming the default value
+ * of DEF_TITLE_MODES, which is zero. Someone could in
+ * principle alter that (so that some states could only be
+ * reached by removing rather than consistently by setting),
+ * but the default value could be discovered by resetting the
+ * title modes, querying the resulting reset state.
+ */
+ if (*cp == '>' && !strcmp(skip_params(1 + cp), "t")) { /* XTSMTITLE */
+ char buffer[80];
+ int n;
+
+ ++cp;
+ okay = True;
+ ival = parse_int_param(&cp);
+ *buffer = '\0';
+ if (ival == -1) { /* DEFAULT */
+ for (n = 0; n <= MAX_TITLEMODE; ++n) {
+ int check = xBIT(n);
+ char *s = buffer + strlen(buffer);
+ if (s != buffer)
+ *s++ = ';';
+ sprintf(s, "%d",
+ ((check & screen->title_modes) != 0
+ ? 1
+ : 0));
+ }
+ } else if (ival >= 0 && ival <= MAX_TITLEMODE) {
+ sprintf(buffer, "%d",
+ ((xBIT(ival) & screen->title_modes) != 0
+ ? 1
+ : 0));
+ } else {
+ okay = False;
+ }
+ if (okay)
+ sprintf(reply, ">%st", buffer);
+ } else {
okay = False;
}
@@ -5176,7 +5173,7 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
Boolean first = True;
okay = True;
while (*cp != '\0' && okay) {
- const char *parsed = 0;
+ const char *parsed = NULL;
const char *tmp;
char *name = x_decode_hex(cp, &parsed);
char *value;
@@ -5190,7 +5187,7 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
break; /* ignore improbable resource */
}
TRACE(("query-feature '%s'\n", name));
- if ((value = vt100ResourceToString(xw, name)) != 0) {
+ if ((value = vt100ResourceToString(xw, name)) != NULL) {
okay = True; /* valid */
} else {
okay = False; /* invalid */
@@ -5206,7 +5203,7 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
for (tmp = cp; tmp != parsed; ++tmp)
unparseputc(xw, *tmp);
- if (value != 0) {
+ if (value != NULL) {
unparseputc1(xw, '=');
result = x_encode_hex(value);
unparseputs(xw, result);
@@ -5274,7 +5271,6 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
/* FALLTHRU */
default:
if (optRegisGraphics(screen) ||
- optSixelGraphics(screen) ||
screen->vtXX_level >= 2) { /* VT220 */
parse_ansi_params(¶ms, &cp);
switch (params.a_final) {
@@ -5287,19 +5283,7 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz
TRACE(("ignoring ReGIS graphic (compilation flag not enabled)\n"));
#endif
break;
- case 'q': /* sixel */
-#if OPT_SIXEL_GRAPHICS
- if (optSixelGraphics(screen)) {
- parse_sixel_init(xw, ¶ms);
- while (*cp) {
- parse_sixel_char(*cp++);
- }
- parse_sixel_finished(xw);
- TRACE(("DONE parsed sixel data\n"));
- }
-#else
- TRACE(("ignoring sixel graphic (compilation flag not enabled)\n"));
-#endif
+ case 'q': /* sixel is done in charproc.c */
break;
case '|': /* DECUDK */
if (screen->vtXX_level >= 2) { /* VT220 */
@@ -5571,7 +5555,7 @@ do_dec_rqm(XtermWidget xw, int nparams,
result = MdFlag(xw->keyboard.flags, MODE_DECSDM);
break;
#endif
- case srm_DECNCSM:
+ case srm_DECNCSM: /* no clearing screen on column change */
if (screen->vtXX_level >= 5) { /* VT510 */
result = MdFlag(xw->flags, NOCLEAR_COLM);
} else {
@@ -5716,35 +5700,64 @@ do_dec_rqm(XtermWidget xw, int nparams,
result = MdBool(screen->sixel_scrolls_right);
break;
#endif
- 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_DECFWM: /* ignore */
- case srm_DECHCCM: /* ignore */
- case srm_DECHDPXM: /* ignore */
- case srm_DECHEM: /* ignore */
- case srm_DECHWUM: /* ignore */
- case srm_DECIPEM: /* ignore */
- case srm_DECKBUM: /* ignore */
- case srm_DECKLHIM: /* ignore */
- case srm_DECKPM: /* ignore */
- case srm_DECRLM: /* ignore */
- case srm_DECMCM: /* ignore */
- case srm_DECNAKB: /* ignore */
- case srm_DECNULM: /* ignore */
- case srm_DECNUMLK: /* ignore */
- case srm_DECOSCNM: /* ignore */
- case srm_DECPCCM: /* ignore */
- case srm_DECRLCM: /* ignore */
- case srm_DECRPL: /* ignore */
- case srm_DECVCCM: /* ignore */
- case srm_DECXRLM: /* ignore */
+ /* the remainder are recognized but unimplemented */
+ /* VT3xx */
+ case srm_DEC131TM: /* vt330:VT131 transmit */
+ case srm_DECEKEM: /* vt330:edit key execution */
+ case srm_DECHCCM: /* vt320:Horizontal Cursor-Coupling Mode */
+ case srm_DECKBUM: /* vt330:Keyboard Usage mode */
+ case srm_DECKKDM: /* vt382:Kanji/Katakana */
+ case srm_DECLTM: /* vt330:line transmit */
+ case srm_DECPCCM: /* vt330:Page Cursor-Coupling Mode */
+ case srm_DECVCCM: /* vt330:Vertical Cursor-Coupling Mode */
+ case srm_DECXRLM: /* vt330:Transmit Rate Limiting */
+#if !OPT_BLINK_CURS
+ case srm_DECKANAM: /* vt382:Katakana shift */
+ case srm_DECSCFDM: /* vt330:space compression field delimiter */
+ case srm_DECTEM: /* vt330:transmission execution */
+#endif
+#if !OPT_TOOLBAR
+ case srm_DECEDM: /* vt330:edit */
+#endif
+ if (screen->vtXX_level >= 3)
+ result = mdAlwaysReset;
+ break;
+ /* VT4xx */
+ case srm_DECKPM: /* vt420:Key Position Mode */
+ if (screen->vtXX_level >= 4)
+ result = mdAlwaysReset;
+ break;
+ /* VT5xx */
+ case srm_DECAAM: /* vt510:auto answerback */
+ case srm_DECARSM: /* vt510:auto resize */
+ case srm_DECATCBM: /* vt520:alternate text color blink */
+ case srm_DECATCUM: /* vt520:alternate text color underline */
+ case srm_DECBBSM: /* vt520:bold and blink style */
+ case srm_DECCANSM: /* vt510:conceal answerback */
+ case srm_DECCAPSLK: /* vt510:Caps Lock Mode */
+ case srm_DECCRTSM: /* vt510:CRT save */
+ case srm_DECECM: /* vt520:erase color */
+ case srm_DECESKM: /* vt510:enable secondary keyboard language */
+ case srm_DECFWM: /* vt520:framed windows */
+ case srm_DECHDPXM: /* vt510:half duplex */
+ case srm_DECHEM: /* vt510:Hebrew encoding */
+ case srm_DECHWUM: /* vt520:host wake-up mode (CRT and energy saver) */
+ case srm_DECIPEM: /* vt510:IBM ProPrinter Emulation Mode */
+ case srm_DECKLHIM: /* vt510:ignore */
+ case srm_DECMCM: /* vt510:modem control */
+ case srm_DECNAKB: /* vt510:Greek/N-A Keyboard Mapping */
+ case srm_DECNULM: /* vt510:Ignoring Null Mode */
+ case srm_DECNUMLK: /* vt510:Num Lock Mode */
+ case srm_DECOSCNM: /* vt510:Overscan Mode */
+ case srm_DECRLCM: /* vt510:Right-to-Left Copy */
+ case srm_DECRLM: /* vt510:left-to-right */
+ case srm_DECRPL: /* vt520:Review Previous Lines */
+#if !OPT_SHIFT_FONTS
+ case srm_DECHEBM: /* vt520:Hebrew keyboard mapping */
+#endif
+ if (screen->vtXX_level >= 5)
+ result = mdAlwaysReset;
+ break;
default:
TRACE(("DATA_ERROR: requested report for unknown private mode %d\n",
params[0]));
@@ -5810,7 +5823,7 @@ x_find_icon(char **work, int *state, con
{
const char *prefix = PIXMAP_ROOTDIR;
const char *larger = "_48x48";
- char *result = 0;
+ char *result = NULL;
if (*state >= 0) {
if ((*state & 1) == 0)
@@ -5834,7 +5847,7 @@ x_find_icon(char **work, int *state, con
FreeAndNull(*work);
length = 3 + strlen(prefix) + strlen(filename) + strlen(larger) +
strlen(suffix);
- if ((result = malloc(length)) != 0) {
+ if ((result = malloc(length)) != NULL) {
sprintf(result, "%s%s%s%s", prefix, filename, larger, suffix);
*work = result;
}
@@ -5849,7 +5862,7 @@ x_find_icon(char **work, int *state, con
static const XPM_DATA *
built_in_xpm(const XPM_DATA * table, Cardinal length, const char *find)
{
- const XPM_DATA *result = 0;
+ const XPM_DATA *result = NULL;
if (!IsEmpty(find)) {
Cardinal n;
for (n = 0; n < length; ++n) {
@@ -5864,10 +5877,10 @@ built_in_xpm(const XPM_DATA * table, Car
* As a fallback, check if the icon name matches without the lengths,
* which are all _HHxWW format.
*/
- if (result == 0) {
+ if (result == NULL) {
const char *base = table[0].name;
const char *last = strchr(base, '_');
- if (last != 0
+ if (last != NULL
&& !x_strncasecmp(find, base, (unsigned) (last - base))) {
result = table + length - 1;
ReportIcons(("use builtin-icon %s\n", table[0].name));
@@ -5907,7 +5920,7 @@ xtermLoadIcon(XtermWidget xw, const char
Display *dpy = XtDisplay(xw);
Pixmap myIcon = 0;
Pixmap myMask = 0;
- char *workname = 0;
+ char *workname = NULL;
ICON_HINT hint = eHintDefault;
#include <builtin_icons.h>
@@ -5922,7 +5935,7 @@ xtermLoadIcon(XtermWidget xw, const char
if (hint == eHintSearch) {
int state = 0;
- while (x_find_icon(&workname, &state, icon_hint, ".xpm") != 0) {
+ while (x_find_icon(&workname, &state, icon_hint, ".xpm") != NULL) {
Pixmap resIcon = 0;
Pixmap shapemask = 0;
XpmAttributes attributes;
@@ -5962,15 +5975,15 @@ xtermLoadIcon(XtermWidget xw, const char
if (myIcon == 0 && hint != eHintNone) {
char **data;
#if OPT_BUILTIN_XPMS
- const XPM_DATA *myData = 0;
+ const XPM_DATA *myData = NULL;
myData = BuiltInXPM(mini_xterm_xpms);
- if (myData == 0)
+ if (myData == NULL)
myData = BuiltInXPM(filled_xterm_xpms);
- if (myData == 0)
+ if (myData == NULL)
myData = BuiltInXPM(xterm_color_xpms);
- if (myData == 0)
+ if (myData == NULL)
myData = BuiltInXPM(xterm_xpms);
- if (myData == 0)
+ if (myData == NULL)
myData = &mini_xterm_xpms[XtNumber(mini_xterm_xpms) - 1];
data = (char **) myData->data;
#else
@@ -5979,7 +5992,7 @@ xtermLoadIcon(XtermWidget xw, const char
if (XpmCreatePixmapFromData(dpy,
DefaultRootWindow(dpy),
data,
- &myIcon, &myMask, 0) == 0) {
+ &myIcon, &myMask, NULL) == 0) {
ReportIcons(("loaded built-in pixmap icon\n"));
} else {
myIcon = 0;
@@ -6034,7 +6047,7 @@ ChangeGroup(XtermWidget xw, const char *
/*
* Ignore empty or too-long requests.
*/
- if (value == 0 || strlen(value) > 1000)
+ if (value == NULL || strlen(value) > 1000)
return;
if (IsTitleMode(xw, tmSetBase16)) {
@@ -6043,7 +6056,7 @@ ChangeGroup(XtermWidget xw, const char *
/* this allocates a new string, if no error is detected */
value = x_decode_hex(value, &temp);
- if (value == 0 || *temp != '\0') {
+ if (value == NULL || *temp != '\0') {
free(value);
return;
}
@@ -6147,7 +6160,7 @@ ChangeGroup(XtermWidget xw, const char *
for (n = 0; c1[n] != '\0'; ++n) {
if (c1[n] > 127) {
Char *converted;
- if ((converted = TypeMallocN(Char, 1 + (6 * limit))) != 0) {
+ if ((converted = TypeMallocN(Char, 1 + (6 * limit))) != NULL) {
Char *temp = converted;
while (*c1 != 0) {
temp = convertToUTF8(temp, *c1++);
@@ -6167,13 +6180,13 @@ ChangeGroup(XtermWidget xw, const char *
#if OPT_SAME_NAME
/* If the attribute isn't going to change, then don't bother... */
if (resource.sameName) {
- char *buf = 0;
+ char *buf = NULL;
XtSetArg(args[0], my_attr, &buf);
XtGetValues(top, args, 1);
TRACE(("...comparing resource{%s} to new value{%s}\n",
NonNull(buf),
NonNull(value)));
- if (buf != 0 && strcmp(value, buf) == 0)
+ if (buf != NULL && strcmp(value, buf) == 0)
changed = False;
}
#endif /* OPT_SAME_NAME */
@@ -6204,7 +6217,7 @@ ChangeGroup(XtermWidget xw, const char *
long long_length = 1024;
unsigned long nitems = 0;
unsigned long bytes_after = 0;
- unsigned char *prop = 0;
+ unsigned char *prop = NULL;
if (xtermGetWinProp(dpy,
VShellWindow(xw),
@@ -6219,7 +6232,7 @@ ChangeGroup(XtermWidget xw, const char *
&prop)) {
if (actual_type == requested_type
&& actual_format == 8
- && prop != 0
+ && prop != NULL
&& nitems == strlen(value)
&& memcmp(value, prop, nitems) == 0) {
changed = False;
@@ -6313,7 +6326,7 @@ ReverseOldColors(XtermWidget xw)
pOld->names[TEXT_CURSOR] = NULL;
}
if (pOld->names[TEXT_BG]) {
- if ((tmpName = x_strdup(pOld->names[TEXT_BG])) != 0) {
+ if ((tmpName = x_strdup(pOld->names[TEXT_BG])) != NULL) {
pOld->names[TEXT_CURSOR] = tmpName;
}
}
@@ -6357,7 +6370,7 @@ AllocateTermColor(XtermWidget xw,
}
if (result
- && (newName = x_strdup(name)) != 0) {
+ && (newName = x_strdup(name)) != NULL) {
if (COLOR_DEFINED(pNew, ndx)) {
free(pNew->names[ndx]);
}
@@ -6567,7 +6580,7 @@ validProgram(const char *pathname)
if (!IsEmpty(pathname)
&& *pathname == '/'
- && strstr(pathname, "/..") == 0
+ && strstr(pathname, "/..") == NULL
&& stat(pathname, &sb) == 0
&& (sb.st_mode & S_IFMT) == S_IFREG
&& (sb.st_mode & S_IXOTH) != 0) {
@@ -6576,7 +6589,6 @@ validProgram(const char *pathname)
return result;
}
-#ifndef VMS
#ifndef PATH_MAX
#define PATH_MAX 512 /* ... is not defined consistently in Xos.h */
#endif
@@ -6597,8 +6609,8 @@ xtermFindShell(char *leaf, Bool warning)
size_t need = PATH_MAX;
size_t used = strlen(result) + 2;
char *buffer = malloc(used + need);
- if (buffer != 0) {
- if (getcwd(buffer, need) != 0) {
+ if (buffer != NULL) {
+ if (getcwd(buffer, need) != NULL) {
sprintf(buffer + strlen(buffer), "/%s", result);
result = buffer;
allocated = True;
@@ -6606,10 +6618,10 @@ xtermFindShell(char *leaf, Bool warning)
free(buffer);
}
}
- } else if (*result != '\0' && strchr("+/-", *result) == 0) {
+ } else if (*result != '\0' && strchr("+/-", *result) == NULL) {
/* find it in $PATH */
- if ((s = s0 = x_getenv("PATH")) != 0) {
- if ((tmp = TypeMallocN(char, strlen(leaf) + strlen(s) + 2)) != 0) {
+ if ((s = s0 = x_getenv("PATH")) != NULL) {
+ if ((tmp = TypeMallocN(char, strlen(leaf) + strlen(s) + 2)) != NULL) {
Bool found = False;
while (*s != '\0') {
strcpy(tmp, s);
@@ -6643,14 +6655,13 @@ xtermFindShell(char *leaf, Bool warning)
xtermWarning("No absolute path found for shell: %s\n", result);
if (allocated)
free(result);
- result = 0;
+ result = NULL;
}
/* be consistent, so that caller can always free the result */
- if (result != 0 && !allocated)
+ if (result != NULL && !allocated)
result = x_strdup(result);
return result;
}
-#endif /* VMS */
#define ENV_HUNK(n) (unsigned) ((((n) + 1) | 31) + 1)
@@ -6725,7 +6736,7 @@ findEnv(const char *var, int *lengthp)
void
xtermSetenv(const char *var, const char *value)
{
- if (value != 0) {
+ if (value != NULL) {
#ifdef HAVE_PUTENV
char *both = malloc(2 + strlen(var) + strlen(value));
TRACE(("xtermSetenv(%s=%s)\n", var, value));
@@ -6833,7 +6844,7 @@ xt_error(String message)
/*
* Check for the obvious - Xt does a poor job of reporting this.
*/
- if (x_getenv("DISPLAY") == 0) {
+ if (x_getenv("DISPLAY") == NULL) {
xtermWarning("DISPLAY is not set\n");
}
exit(ERROR_MISC);
@@ -6869,8 +6880,10 @@ set_vt_visibility(Bool on)
TScreen *screen = TScreenOf(xw);
TRACE(("set_vt_visibility(%d)\n", on));
+
if (on) {
if (!screen->Vshow && xw) {
+ resource.notMapped = False;
VTInit(xw);
XtMapWidget(XtParent(xw));
#if OPT_TOOLBAR
@@ -6909,11 +6922,12 @@ set_tek_visibility(Bool on)
if (on) {
if (!TEK4014_SHOWN(xw)) {
- if (tekWidget == 0) {
+ if (tekWidget == NULL) {
TekInit(); /* will exit on failure */
}
- if (tekWidget != 0) {
+ if (tekWidget != NULL) {
Widget tekParent = SHELL_OF(tekWidget);
+ resource.notMapped = False;
XtRealizeWidget(tekParent);
XtMapWidget(XtParent(tekWidget));
#if OPT_TOOLBAR
@@ -7030,21 +7044,21 @@ cmp_resources(const void *a, const void
}
XrmOptionDescRec *
-sortedOptDescs(XrmOptionDescRec * descs, Cardinal res_count)
+sortedOptDescs(const XrmOptionDescRec * descs, Cardinal res_count)
{
- static XrmOptionDescRec *res_array = 0;
+ static XrmOptionDescRec *res_array = NULL;
#ifdef NO_LEAKS
- if (descs == 0) {
+ if (descs == NULL) {
FreeAndNull(res_array);
} else
#endif
- if (res_array == 0) {
+ if (res_array == NULL) {
Cardinal j;
/* make a sorted index to 'resources' */
res_array = TypeCallocN(XrmOptionDescRec, res_count);
- if (res_array != 0) {
+ if (res_array != NULL) {
for (j = 0; j < res_count; j++)
res_array[j] = descs[j];
qsort(res_array, (size_t) res_count, sizeof(*res_array), cmp_resources);
@@ -7062,19 +7076,19 @@ sortedOptDescs(XrmOptionDescRec * descs,
OptionHelp *
sortedOpts(OptionHelp * options, XrmOptionDescRec * descs, Cardinal numDescs)
{
- static OptionHelp *opt_array = 0;
+ static OptionHelp *opt_array = NULL;
#ifdef NO_LEAKS
- if (descs == 0 && opt_array != 0) {
+ if (descs == NULL && opt_array != NULL) {
sortedOptDescs(descs, numDescs);
FreeAndNull(opt_array);
- return 0;
- } else if (options == 0 || descs == 0) {
- return 0;
+ return NULL;
+ } else if (options == NULL || descs == NULL) {
+ return NULL;
}
#endif
- if (opt_array == 0) {
+ if (opt_array == NULL) {
size_t opt_count, j;
#if OPT_TRACE
Cardinal k;
@@ -7087,7 +7101,7 @@ sortedOpts(OptionHelp * options, XrmOpti
#endif
/* count 'options' and make a sorted index to it */
- for (opt_count = 0; options[opt_count].opt != 0; ++opt_count) {
+ for (opt_count = 0; options[opt_count].opt != NULL; ++opt_count) {
;
}
opt_array = TypeCallocN(OptionHelp, opt_count + 1);
@@ -7113,10 +7127,10 @@ sortedOpts(OptionHelp * options, XrmOpti
sprintf(temp, "%.*s",
(int) sizeof(temp) - 2,
opt_array[j].desc);
- if (x_strindex(temp, "inhibit") != 0)
+ if (x_strindex(temp, "inhibit") != NULL)
code = -code;
if (code != 0
- && res_array[k].value != 0
+ && res_array[k].value != NULL
&& !strcmp(name, res_array[k].option + 1)) {
if (((code < 0) && !strcmp(value, "on"))
|| ((code > 0) && !strcmp(value, "off"))
@@ -7149,8 +7163,8 @@ xtermEnvLocale(void)
{
static String result;
- if (result == 0) {
- if ((result = x_nonempty(setlocale(LC_CTYPE, 0))) == 0) {
+ if (result == NULL) {
+ if ((result = x_nonempty(setlocale(LC_CTYPE, NULL))) == NULL) {
result = x_strdup("C");
} else {
result = x_strdup(result);
@@ -7165,7 +7179,7 @@ xtermEnvEncoding(void)
{
static char *result;
- if (result == 0) {
+ if (result == NULL) {
#ifdef HAVE_LANGINFO_CODESET
result = nl_langinfo(CODESET);
#else
@@ -7225,10 +7239,10 @@ getXtermWidget(Widget w)
{
XtermWidget xw;
- if (w == 0) {
+ if (w == NULL) {
xw = (XtermWidget) CURRENT_EMU();
if (!IsXtermWidget(xw)) {
- xw = 0;
+ xw = NULL;
}
} else if (IsXtermWidget(w)) {
xw = (XtermWidget) w;
@@ -7246,7 +7260,7 @@ static void
trace_1_SM(const char *tag, String name)
{
Arg args[1];
- char *buf = 0;
+ char *buf = NULL;
XtSetArg(args[0], name, &buf);
XtGetValues(toplevel, args, 1);
@@ -7417,7 +7431,7 @@ static char *
formatFontParam(char *result, XtermWidget xw, const FontParams * parameter)
{
sprintf(result, "%s*%s:", ProgramName, parameter->name);
- if (xw != None) {
+ if (xw != NULL) {
char *next = result + strlen(result);
switch (parameter->type) {
case B_ARG:
@@ -7491,7 +7505,7 @@ findFontParams(int argc, char **argv)
break;
if (value) {
- formatFontParam(expect, None, fontParams + my_param);
+ formatFontParam(expect, NULL, fontParams + my_param);
} else {
strcpy(expect, "-xrm");
}
@@ -7551,7 +7565,7 @@ xtermUpdateRestartCommand(XtermWidget xw
{
if (resource.sessionMgt) {
Arg args[1];
- char **argv = 0;
+ char **argv = NULL;
XtSetArg(args[0], XtNrestartCommand, &argv);
XtGetValues(toplevel, args, 1);
@@ -7933,6 +7947,19 @@ xtermFreeTitle(SaveTitle * item)
}
#if OPT_XTERM_SGR
+void
+xtermReportTitleStack(XtermWidget xw)
+{
+ TScreen *screen = TScreenOf(xw);
+ char reply[100];
+
+ sprintf(reply, "%d;%d", screen->saved_titles.used, MAX_SAVED_TITLES);
+ unparseputc1(xw, ANSI_CSI);
+ unparseputs(xw, reply);
+ unparseputc(xw, '#');
+ unparseputc(xw, 'S');
+ unparse_end(xw);
+}
#if OPT_TRACE
static char *
@@ -8033,7 +8060,7 @@ xtermReportSGR(XtermWidget xw, XTermRect
memset(&working, 0, sizeof(working));
for (row = value->top - 1; row < value->bottom; ++row) {
LineData *ld = getLineData(screen, row);
- if (ld == 0)
+ if (ld == NULL)
continue;
for (col = value->left - 1; col < value->right; ++col) {
if (first) {
Index: xsrc/external/mit/xterm/dist/ptyx.h
diff -u xsrc/external/mit/xterm/dist/ptyx.h:1.21 xsrc/external/mit/xterm/dist/ptyx.h:1.22
--- xsrc/external/mit/xterm/dist/ptyx.h:1.21 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/ptyx.h Sun Mar 9 23:18:48 2025
@@ -1,7 +1,7 @@
-/* $XTermId: ptyx.h,v 1.1124 2024/05/21 23:30:59 tom Exp $ */
+/* $XTermId: ptyx.h,v 1.1135 2025/01/05 20:36:10 tom Exp $ */
/*
- * Copyright 1999-2023,2024 by Thomas E. Dickey
+ * Copyright 1999-2024,2025 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -186,9 +186,6 @@
#undef USE_PTY_DEVICE
#undef USE_PTY_SEARCH
#define USE_PTS_DEVICE 1
-#elif defined(VMS)
-#undef USE_PTY_DEVICE
-#undef USE_PTY_SEARCH
#elif defined(PUCC_PTYD)
#undef USE_PTY_SEARCH
#elif (defined(sun) && defined(SVR4)) || defined(_ALL_SOURCE) || defined(__CYGWIN__)
@@ -204,7 +201,7 @@
#if (defined (__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
#define USE_USG_PTYS
-#elif (defined(ATT) && !defined(__sgi)) || defined(__MVS__) || (defined(SYSV) && defined(i386))
+#elif (defined(ATT) && !defined(__sgi)) || (defined(SYSV) && defined(i386))
#define USE_USG_PTYS
#endif
@@ -221,8 +218,6 @@
#ifndef PTYDEV
#if defined(__hpux)
#define PTYDEV "/dev/ptym/ptyxx"
-#elif defined(__MVS__)
-#define PTYDEV "/dev/ptypxxxx"
#else
#define PTYDEV "/dev/ptyxx"
#endif
@@ -231,8 +226,6 @@
#ifndef TTYDEV
#if defined(__hpux)
#define TTYDEV "/dev/pty/ttyxx"
-#elif defined(__MVS__)
-#define TTYDEV "/dev/ptypxxxx"
#elif defined(USE_PTS_DEVICE)
#define TTYDEV "/dev/pts/0"
#else
@@ -263,8 +256,6 @@
#ifndef TTYFORMAT
#if defined(CRAY)
#define TTYFORMAT "/dev/ttyp%03d"
-#elif defined(__MVS__)
-#define TTYFORMAT "/dev/ttyp%04d"
#else
#define TTYFORMAT "/dev/ttyp%d"
#endif
@@ -273,8 +264,6 @@
#ifndef PTYFORMAT
#ifdef CRAY
#define PTYFORMAT "/dev/pty/%03d"
-#elif defined(__MVS__)
-#define PTYFORMAT "/dev/ptyp%04d"
#else
#define PTYFORMAT "/dev/ptyp%d"
#endif
@@ -283,8 +272,6 @@
#ifndef PTYCHARLEN
#ifdef CRAY
#define PTYCHARLEN 3
-#elif defined(__MVS__)
-#define PTYCHARLEN 8 /* OS/390 stores, e.g. ut_id="ttyp1234" */
#else
#define PTYCHARLEN 2
#endif
@@ -328,7 +315,7 @@ typedef const Char *UString;
typedef Char *UString;
#endif
-#define IsEmpty(s) ((s) == 0 || *(s) == '\0')
+#define IsEmpty(s) ((s) == NULL || *(s) == '\0')
#define IsSpace(c) ((c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n')
/*
@@ -336,11 +323,12 @@ typedef Char *UString;
* "PartS2L" when more data may follow in the string.
*/
#define FullS2L(s,d) (PartS2L(s,d) && (*(d) == '\0'))
-#define PartS2L(s,d) (isdigit(CharOf(*(s))) && (d) != (s) && (d) != 0)
+#define PartS2L(s,d) (isdigit(CharOf(*(s))) && (d) != (s) && (d) != NULL)
#define CASETYPE(name) case name: result = #name; break
-#define CharOf(n) ((Char)(n))
+#define AsciiOf(n) (0x7f & (n)) /* extract 7-bit character */
+#define CharOf(n) ((Char)(n)) /* extract 8-bit character */
typedef struct {
int row;
@@ -531,6 +519,10 @@ typedef enum {
#define OPT_BLINK_TEXT OPT_BLINK_CURS /* true if xterm has blinking text capability */
#endif
+#ifndef OPT_BLOCK_SELECT
+#define OPT_BLOCK_SELECT 0 /* true if block-select is supported */
+#endif
+
#ifndef OPT_BOX_CHARS
#define OPT_BOX_CHARS 1 /* true if xterm can simulate box-characters */
#endif
@@ -611,14 +603,6 @@ typedef enum {
#define OPT_DOUBLE_BUFFER 0 /* true if using double-buffering */
#endif
-#ifndef OPT_EBCDIC
-#ifdef __MVS__
-#define OPT_EBCDIC 1
-#else
-#define OPT_EBCDIC 0
-#endif
-#endif
-
#ifndef OPT_EXEC_SELECTION
#define OPT_EXEC_SELECTION 1 /* true if xterm can exec to process selection */
#endif
@@ -1015,13 +999,21 @@ typedef enum {
tmSetBase16 = 1 /* set title using hex-string */
, tmGetBase16 = 2 /* get title using hex-string */
#if OPT_WIDE_CHARS
+#define MAX_TITLEMODE 3
, tmSetUtf8 = 4 /* like utf8Title, but controllable */
, tmGetUtf8 = 8 /* retrieve title encoded as UTF-8 */
+#else
+#define MAX_TITLEMODE 1
#endif
} TitleModes;
+#define ValidTitleMode(code) ((code) >= 0 && (code) <= MAX_TITLEMODE)
#define IsTitleMode(xw,mode) (((xw)->screen.title_modes & mode) != 0)
+#define IsSetUtf8Title(xw) (IsTitleMode(xw, tmSetUtf8) \
+ || ((xw)->screen.utf8_title) \
+ || ((xw)->screen.c1_printable))
+
#include <xcharmouse.h>
/*
@@ -1061,6 +1053,8 @@ typedef enum {
,nrc_ISO_Latin_2_Supp /* vt5xx */
,nrc_ISO_Latin_5_Supp /* vt5xx */
,nrc_ISO_Latin_Cyrillic /* vt5xx */
+ ,nrc_JIS_Katakana /* vt382 */
+ ,nrc_JIS_Roman /* vt382 */
,nrc_Norwegian_Danish /* vt3xx */
,nrc_Norwegian_Danish2 /* vt2xx */
,nrc_Norwegian_Danish3 /* vt2xx */
@@ -1099,19 +1093,29 @@ typedef enum {
,srm_X10_MOUSE = SET_X10_MOUSE
#if OPT_TOOLBAR
,srm_RXVT_TOOLBAR = 10
+#else
+ ,srm_DECEDM = 10 /* vt330:edit */
#endif
+ ,srm_DECLTM = 11 /* vt330:line transmit */
#if OPT_BLINK_CURS
,srm_ATT610_BLINK = 12
,srm_CURSOR_BLINK_OPS = 13
,srm_XOR_CURSOR_BLINKS = 14
-#endif
- ,srm_DECPFF = 18 /* Print Form Feed Mode */
- ,srm_DECPEX = 19 /* Printer Extent Mode */
+#else
+ ,srm_DECKANAM = 12 /* vt382:Katakana shift */
+ ,srm_DECSCFDM = 13 /* vt330:space compression field delimiter */
+ ,srm_DECTEM = 14 /* vt330:transmission execution */
+#endif
+ ,srm_DECEKEM = 16 /* vt330:edit key execution */
+ ,srm_DECPFF = 18 /* vt220:Print Form Feed Mode */
+ ,srm_DECPEX = 19 /* vt220:Printer Extent Mode */
,srm_DECTCEM = 25 /* Text Cursor Enable Mode */
,srm_RXVT_SCROLLBAR = 30
,srm_DECRLM = 34 /* vt510:Cursor Right to Left Mode */
#if OPT_SHIFT_FONTS
,srm_RXVT_FONTSIZE = 35 /* also vt520:DECHEBM */
+#else
+ ,srm_DECHEBM = 35 /* vt520:Hebrew keyboard mapping */
#endif
,srm_DECHEM = 36 /* vt510:Hebrew Encoding Mode */
#if OPT_TEK4014
@@ -1131,8 +1135,10 @@ typedef enum {
,srm_DECGPBM = 46 /* Graphics Print Background Mode */
#endif
,srm_ALTBUF = 47 /* also DECGRPM (Graphics Rotated Print Mode) */
+ ,srm_DEC131TM = 53 /* vt330:VT131 transmit */
,srm_DECNAKB = 57 /* vt510:Greek/N-A Keyboard Mapping */
,srm_DECIPEM = 58 /* vt510:IBM ProPrinter Emulation Mode */
+ ,srm_DECKKDM = 59 /* vt382:Kanji/Katakana */
,srm_DECHCCM = 60 /* vt420:Horizontal Cursor-Coupling Mode */
,srm_DECVCCM = 61 /* vt420:Vertical Cursor-Coupling Mode */
,srm_DECPCCM = 64 /* vt420:Page Cursor-Coupling Mode */
@@ -1142,7 +1148,7 @@ typedef enum {
,srm_DECLRMM = 69 /* vt420:Vertical Split Screen Mode (DECVSSM) */
,srm_DECXRLM = 73 /* vt420:Transmit Rate Limiting */
#if OPT_SIXEL_GRAPHICS
- ,srm_DECSDM = 80 /* Sixel Display Mode */
+ ,srm_DECSDM = 80 /* vt320:Sixel Display Mode */
#endif
,srm_DECKPM = 81 /* vt420:Key Position Mode */
,srm_DECNCSM = 95 /* vt510:No Clearing Screen On Column Change */
@@ -1150,10 +1156,11 @@ typedef enum {
,srm_DECCRTSM = 97 /* vt510:CRT Save Mode */
,srm_DECARSM = 98 /* vt510:Auto Resize Mode */
,srm_DECMCM = 99 /* vt510:Modem Control Mode */
- ,srm_DECCAAM = 100 /* vt510:Auto Answerback Mode */
+ ,srm_DECAAM = 100 /* vt510:Auto Answerback Mode */
,srm_DECCANSM = 101 /* vt510:Conceal Answerback Message Mode */
,srm_DECNULM = 102 /* vt510:Ignoring Null Mode */
,srm_DECHDPXM = 103 /* vt510:Half-Duplex Mode */
+ ,srm_DECESKM = 104 /* vt510:enable secondary keyboard language */
,srm_DECOSCNM = 106 /* vt510:Overscan Mode */
,srm_DECNUMLK = 108 /* vt510:Num Lock Mode */
,srm_DECCAPSLK = 109 /* vt510:Caps Lock Mode */
@@ -1598,7 +1605,7 @@ typedef enum {
#define DBLCS_BITS 4
#define DBLCS_MASK BITS2MASK(DBLCS_BITS)
-#define GetLineDblCS(ld) (((ld)->bufHead >> LINEFLAG_BITS) & DBLCS_MASK)
+#define GetLineDblCS(ld) ((ld) != NULL ? (((ld)->bufHead >> LINEFLAG_BITS) & DBLCS_MASK) : 0)
#define SetLineDblCS(ld,cs) (ld)->bufHead = (RowData) ((ld->bufHead & LINEFLAG_MASK) | (cs << LINEFLAG_BITS))
#define LineCharSet(screen, ld) \
@@ -1645,18 +1652,10 @@ typedef enum {
/***====================================================================***/
-#if OPT_EBCDIC
-extern int E2A(int);
-extern int A2E(int);
-#else
-#define E2A(a) (a)
-#define A2E(a) (a)
-#endif
-
-#define CONTROL(a) (A2E(E2A(a)&037))
+#define CONTROL(a) ((a) & 037)
-#define XTERM_ERASE A2E(CONTROL('H'))
-#define XTERM_LNEXT A2E(CONTROL('V'))
+#define XTERM_ERASE CONTROL('H')
+#define XTERM_LNEXT CONTROL('V')
/***====================================================================***/
@@ -1836,7 +1835,7 @@ typedef unsigned CellColor;
#define isSameCColor(p,q) ((p) == (q))
#endif
-#define BITS2MASK(b) ((1 << b) - 1)
+#define BITS2MASK(b) (xBIT(b) - 1)
#define COLOR_MASK BITS2MASK(COLOR_BITS)
@@ -2640,6 +2639,7 @@ typedef struct {
PrinterState printer_state; /* actual printer state */
PrinterFlags printer_flags; /* working copy of printer flags */
+ Boolean print_rawchars; /* true to ignore printer check */
#if OPT_PRINT_ON_EXIT
Boolean write_error;
#endif
@@ -2986,6 +2986,11 @@ typedef struct {
int firstValidRow; /* Valid rows for selection clipping */
int lastValidRow; /* " " */
+#if OPT_BLOCK_SELECT
+ int lastSelectWasBlock;
+ int blockSelecting; /* non-zero if block selection */
+#endif
+
Boolean selectToBuffer; /* copy selection to buffer */
InternalSelect internal_select;
@@ -3729,7 +3734,7 @@ typedef struct {
#endif /* NO_ACTIVE_ICON */
-#define okFont(font) ((font) != 0 && (font)->fid != 0)
+#define okFont(font) ((font) != NULL && (font)->fid != 0)
/*
* Macro to check if we are iconified; do not use render for that case.
Index: xsrc/external/mit/xterm/dist/resize.c
diff -u xsrc/external/mit/xterm/dist/resize.c:1.6 xsrc/external/mit/xterm/dist/resize.c:1.7
--- xsrc/external/mit/xterm/dist/resize.c:1.6 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/resize.c Sun Mar 9 23:18:48 2025
@@ -1,7 +1,7 @@
-/* $XTermId: resize.c,v 1.150 2023/03/31 23:09:38 tom Exp $ */
+/* $XTermId: resize.c,v 1.153 2024/12/01 20:21:19 tom Exp $ */
/*
- * Copyright 2003-2022,2023 by Thomas E. Dickey
+ * Copyright 2003-2023,2024 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -92,11 +92,7 @@
int ignore_unused;
#endif
-#ifdef __MVS__
-#define ESCAPE(string) "\047" string
-#else
#define ESCAPE(string) "\033" string
-#endif
#define EMULATIONS 2
#define SUN 1
@@ -150,18 +146,18 @@ static const char *const getsize[EMULATI
#if defined(USE_STRUCT_WINSIZE)
static const char *const getwsize[EMULATIONS] =
{ /* size in pixels */
- 0,
+ NULL,
ESCAPE("[14t"),
};
#endif /* USE_STRUCT_WINSIZE */
static const char *const restore[EMULATIONS] =
{
ESCAPE("8"),
- 0,
+ NULL,
};
static const char *const setsize[EMULATIONS] =
{
- 0,
+ NULL,
ESCAPE("[8;%s;%st"),
};
@@ -190,7 +186,7 @@ static FILE *ttyfp;
#if defined(USE_STRUCT_WINSIZE)
static const char *wsize[EMULATIONS] =
{
- 0,
+ NULL,
ESCAPE("[4;%hd;%hdt"),
};
#endif /* USE_STRUCT_WINSIZE */
@@ -467,7 +463,7 @@ main(int argc, char **argv ENVP_ARG)
}
#endif /* USE_TERMCAP */
#ifdef USE_TERMINFO
- if (x_getenv("TERM") == 0) {
+ if (x_getenv("TERM") == NULL) {
if (SHELL_BOURNE == shell_type) {
setname = "TERM=" DFT_TERMTYPE ";\nexport TERM;\n";
} else {
@@ -521,7 +517,7 @@ main(int argc, char **argv ENVP_ARG)
strlen(argv[0]) +
strlen(argv[1]) +
1);
- if (tmpbuf == 0) {
+ if (tmpbuf == NULL) {
fprintf(stderr, "%s: Cannot query size\n", myname);
onintr(0);
} else {
Index: xsrc/external/mit/xterm/dist/scrollback.c
diff -u xsrc/external/mit/xterm/dist/scrollback.c:1.9 xsrc/external/mit/xterm/dist/scrollback.c:1.10
--- xsrc/external/mit/xterm/dist/scrollback.c:1.9 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/scrollback.c Sun Mar 9 23:18:48 2025
@@ -1,7 +1,7 @@
-/* $XTermId: scrollback.c,v 1.23 2022/03/09 00:38:51 tom Exp $ */
+/* $XTermId: scrollback.c,v 1.24 2024/12/01 20:27:00 tom Exp $ */
/*
- * Copyright 2009-2020,2022 by Thomas E. Dickey
+ * Copyright 2009-2022,2024 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -44,7 +44,7 @@
LineData *
getScrollback(TScreen *screen, int row)
{
- LineData *result = 0;
+ LineData *result = NULL;
if (screen->saved_fifo > 0 && REAL_ROW(screen, row) >= 0) {
unsigned which = ROW2FIFO(screen, row);
@@ -64,10 +64,10 @@ getScrollback(TScreen *screen, int row)
LineData *
addScrollback(TScreen *screen)
{
- ScrnBuf where = 0;
+ ScrnBuf where = NULL;
unsigned ncols = (unsigned) MaxCols(screen);
- if (screen->saveBuf_index != 0 && screen->savelines != 0) {
+ if (screen->saveBuf_index != NULL && screen->savelines != 0) {
unsigned which;
Char *block;
@@ -84,7 +84,7 @@ addScrollback(TScreen *screen)
* setupLineData uses the attribs as the first address used from the
* data block.
*/
- if (prior->attribs != 0) {
+ if (prior->attribs != NULL) {
TRACE(("...freeing prior FIFO data in slot %d: %p->%p\n",
which, (void *) prior, (void *) prior->attribs));
FreeAndNull(prior->attribs);
@@ -118,7 +118,7 @@ deleteScrollback(TScreen *screen)
* setupLineData uses the attribs as the first address used from the
* data block.
*/
- if (prior->attribs != 0) {
+ if (prior->attribs != NULL) {
TRACE(("...freeing prior FIFO data in slot %d: %p->%p\n",
which, (void *) prior, (void *) prior->attribs));
FreeAndNull(prior->attribs);
Index: xsrc/external/mit/xterm/dist/xterm.h
diff -u xsrc/external/mit/xterm/dist/xterm.h:1.9 xsrc/external/mit/xterm/dist/xterm.h:1.10
--- xsrc/external/mit/xterm/dist/xterm.h:1.9 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/xterm.h Sun Mar 9 23:18:48 2025
@@ -1,7 +1,7 @@
-/* $XTermId: xterm.h,v 1.947 2024/05/21 23:33:24 tom Exp $ */
+/* $XTermId: xterm.h,v 1.959 2025/01/05 21:15:01 tom Exp $ */
/*
- * Copyright 1999-2023,2024 by Thomas E. Dickey
+ * Copyright 1999-2024,2025 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -123,7 +123,7 @@
#define HAVE_UTMP 1
#endif
-#if (defined(__MVS__) || defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__)
+#if (defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__)
#define UTMPX_FOR_UTMP 1
#endif
@@ -131,7 +131,7 @@
#define HAVE_UTMP_UT_HOST 1
#endif
-#if defined(UTMPX_FOR_UTMP) && !(defined(__MVS__) || defined(__hpux) || defined(__FreeBSD__))
+#if defined(UTMPX_FOR_UTMP) && !(defined(__hpux) || defined(__FreeBSD__))
#define HAVE_UTMP_UT_SESSION 1
#endif
@@ -172,11 +172,11 @@
#define USE_POSIX_WAIT
#endif
-#if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(__linux__) || defined(macII) || defined(BSD_UTMPX)
+#if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__hpux) || defined(__osf__) || defined(__linux__) || defined(macII) || defined(BSD_UTMPX)
#define USE_SYSV_UTMP
#endif
-#if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
+#if defined(__GNU__) || defined(__osf__)
#define USE_TTY_GROUP
#endif
@@ -188,13 +188,6 @@
#define TTY_GROUP_NAME "terminal"
#endif
-#if defined(__MVS__)
-#undef ut_xstatus
-#define ut_name ut_user
-#define ut_xstatus ut_exit.ut_e_exit
-#define ut_xtime ut_tv.tv_sec
-#endif
-
#if defined(ut_xstatus)
#define HAVE_UTMP_UT_XSTATUS 1
#endif
@@ -207,7 +200,7 @@
#define HAVE_POSIX_SAVED_IDS
#endif
-#if defined(__linux__) || defined(__GLIBC__) || (defined(SYSV) && (defined(CRAY) || defined(macII) || defined(__hpux) || defined(__osf__) || defined(__sgi))) || !(defined(SYSV) || defined(__QNX__) || defined(VMS) || defined(__INTERIX))
+#if defined(__linux__) || defined(__GLIBC__) || (defined(SYSV) && (defined(CRAY) || defined(macII) || defined(__hpux) || defined(__osf__) || defined(__sgi))) || !(defined(SYSV) || defined(__QNX__) || defined(__INTERIX))
#define HAVE_INITGROUPS
#endif
@@ -272,6 +265,7 @@ extern void free();
#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#undef HAVE_UNISTD_H
#endif
#ifdef HAVE_SYS_WAIT_H
@@ -366,9 +360,6 @@ extern int errno;
#else
#define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
#define XFD_COPYSET(src,dst) memcpy((dst)->fds_bits, (src)->fds_bits, sizeof(fd_set))
-#if defined(__MVS__) && !defined(TIME_WITH_SYS_TIME)
-#define TIME_WITH_SYS_TIME
-#endif
#endif
#ifdef TIME_WITH_SYS_TIME
@@ -398,7 +389,7 @@ extern int errno;
#include <setjmp.h>
-#if !defined(VMS) && !(defined(__linux__) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__)
+#if !(defined(__linux__) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__)
extern char **environ;
#endif
@@ -411,7 +402,7 @@ extern char **environ;
#define Maybe 2
#define ALLOC_STRING(name) \
- if (name != 0) \
+ if (name != NULL) \
name = x_strdup(name)
#define FREE_STRING(name) \
free_string(name)
@@ -608,6 +599,7 @@ extern char **environ;
#define XtNmultiScroll "multiScroll"
#define XtNnMarginBell "nMarginBell"
#define XtNnextEventDelay "nextEventDelay"
+#define XtNnotMapped "notMapped"
#define XtNnumColorRegisters "numColorRegisters"
#define XtNnumLock "numLock"
#define XtNoldXtermFKeys "oldXtermFKeys"
@@ -627,6 +619,7 @@ extern char **environ;
#define XtNprintModeOnXError "printModeOnXError"
#define XtNprintOptsImmediate "printOptsImmediate"
#define XtNprintOptsOnXError "printOptsOnXError"
+#define XtNprintRawChars "printRawChars"
#define XtNprinterAutoClose "printerAutoClose"
#define XtNprinterCommand "printerCommand"
#define XtNprinterControlMode "printerControlMode"
@@ -866,6 +859,7 @@ extern char **environ;
#define XtCMultiClickTime "MultiClickTime"
#define XtCMultiScroll "MultiScroll"
#define XtCNextEventDelay "NextEventDelay"
+#define XtCNotMapped "NotMapped"
#define XtCNumColorRegisters "NumColorRegisters"
#define XtCNumLock "NumLock"
#define XtCOldXtermFKeys "OldXtermFKeys"
@@ -882,6 +876,7 @@ extern char **environ;
#define XtCPrintModeOnXError "PrintModeOnXError"
#define XtCPrintOptsImmediate "PrintOptsImmediate"
#define XtCPrintOptsOnXError "PrintOptsOnXError"
+#define XtCPrintRawChars "PrintRawChars"
#define XtCPrinterAutoClose "PrinterAutoClose"
#define XtCPrinterCommand "PrinterCommand"
#define XtCPrinterControlMode "PrinterControlMode"
@@ -1047,7 +1042,7 @@ extern void HandleSelectStart P
extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS;
extern void ResizeSelection (TScreen * /* screen */, int /* rows */, int /* cols */);
extern void ScrollSelection (TScreen * /* screen */, int /* amount */, Bool /* always */);
-extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */);
+extern void TrackMouse (XtermWidget /* xw */, int /* func */, const CELL * /* start */, int /* firstrow */, int /* lastrow */);
extern void ViButton PROTO_XT_ACTIONS_ARGS;
extern void UnmapSelections (XtermWidget /* xw */);
@@ -1140,7 +1135,7 @@ extern void releaseCursorGCs(XtermWidget
extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/);
extern void resetCharsets (TScreen * /* screen */);
extern void resetMargins (XtermWidget /* xw */);
-extern void restoreCharsets (TScreen * /* screen */, DECNRCM_codes * /* source */);
+extern void restoreCharsets (TScreen * /* screen */, const DECNRCM_codes * /* source */);
extern void saveCharsets (TScreen * /* screen */, DECNRCM_codes * /* target */);
extern void set_max_col(TScreen * /* screen */, int /* cols */);
extern void set_max_row(TScreen * /* screen */, int /* rows */);
@@ -1268,10 +1263,6 @@ extern Atom CachedInternAtom(Display * /
extern int get_tty_erase(int /* fd */, int /* default_erase */, const char * /* tag */);
extern int get_tty_lnext(int /* fd */, int /* default_lnext */, const char * /* tag */);
-#if (defined(VMS) || defined(__VMS))
-#define GetBytesAvailable(dpy) ((dpy)->qlen > 0)
-#endif
-
#if OPT_PTY_HANDSHAKE
extern void first_map_occurred (void);
#else
@@ -1311,7 +1302,7 @@ extern String xtermEnvLocale (void);
extern Widget xtermOpenApplication (XtAppContext * /* app_context_return */, String /* application_class */, XrmOptionDescRec */* options */, Cardinal /* num_options */, int * /* argc_in_out */, char **/* argv_in_out */, String * /* fallback_resources */, WidgetClass /* widget_class */, ArgList /* args */, Cardinal /* num_args */);
extern Window WMFrameWindow (XtermWidget /* xw */);
extern XtInputMask xtermAppPending (void);
-extern XrmOptionDescRec * sortedOptDescs (XrmOptionDescRec *, Cardinal);
+extern XrmOptionDescRec * sortedOptDescs (const XrmOptionDescRec *, Cardinal);
extern XtermWidget getXtermWidget (Widget /* w */);
extern XVisualInfo *getVisualInfo (XtermWidget /* xw */);
extern char *udk_lookup (XtermWidget /* xw */, int /* keycode */, int * /* len */);
@@ -1365,6 +1356,7 @@ extern void hide_tek_window (void);
extern void hide_vt_window (void);
extern GCC_NORETURN void ice_error (IceConn /* iceConn */);
extern void init_colored_cursor (Display * /* dpy */);
+extern void parse_ansi_params(ANSI * /* params */, const char ** /* string */);
extern void reset_decudk (XtermWidget /* xw */);
extern void set_tek_visibility (Bool /* on */);
extern void set_vt_visibility (Bool /* on */);
@@ -1390,6 +1382,7 @@ extern void xtermWarning (const char * /
extern Boolean xtermPopTitle(TScreen * /* screen */, int /* which */, SaveTitle * /* item */);
extern void xtermPushTitle(TScreen * /* screen */, int /* which */, SaveTitle * /* item */);
extern void xtermFreeTitle(SaveTitle *item);
+extern void xtermReportTitleStack(XtermWidget /* xw */);
#if OPT_DABBREV
extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS;
@@ -1513,11 +1506,7 @@ extern void xtermDumpSvg (XtermWidget /*
#endif
/* ptydata.c */
-#ifdef VMS
-#define PtySelect int
-#else
#define PtySelect fd_set
-#endif
extern Bool decodeUtf8 (TScreen * /* screen */, PtyData * /* data */);
extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */);
@@ -1719,7 +1708,7 @@ extern char * xtermSetLocale (int /* cat
extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */);
extern int dimRound (double /* value */);
-extern int drawXtermText (XTermDraw * /* param */, GC /* gc */, int /* x */, int /* y */, const IChar * /* text */, Cardinal /* len */);
+extern int drawXtermText (const XTermDraw * /* param */, GC /* gc */, int /* x */, int /* y */, const IChar * /* text */, Cardinal /* len */);
extern int extendedBoolean (const char * /* value */, const FlagList * /* table */, Cardinal /* limit */);
extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */);
extern void ClearLine (XtermWidget /* xw */);
Index: xsrc/external/mit/xterm/dist/xterm.man
diff -u xsrc/external/mit/xterm/dist/xterm.man:1.23 xsrc/external/mit/xterm/dist/xterm.man:1.24
--- xsrc/external/mit/xterm/dist/xterm.man:1.23 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/dist/xterm.man Sun Mar 9 23:18:48 2025
@@ -1,7 +1,7 @@
'\" t
-.\" $XTermId: xterm.man,v 1.902 2024/05/22 08:15:46 tom Exp $
+.\" $XTermId: xterm.man,v 1.911 2025/01/05 20:50:55 tom Exp $
.\"
-.\" Copyright 1996-2023,2024 by Thomas E. Dickey
+.\" Copyright 1996-2024,2025 by Thomas E. Dickey
.\"
.\" All Rights Reserved
.\"
@@ -1017,6 +1017,26 @@ This option specifies the number of char
at which the margin bell, if enabled, will ring.
The default is \*(``10\*(''.
.TP 8
+.B "\-nomap"
+This option disables the initial \fImapping\fP of the terminal window.
+Mapping an X window makes it visible if it is \fImanaged\fP.
+The default is \*(``false\*('' because \fI\*n\fP's window
+is normally displayed on startup.
+.IP
+After startup, an unmapped \fI\*n\fP window can be mapped
+by identifying its window-id, e.g., using \fBxwininfo\fP(1)
+or \fBxlsclients\fP(1),
+and then employing another program such as \fBxdotool\fP(1)
+to ask the window manager to make it visible.
+.IP
+If the \fI\*n\fP window is visible (i.e., mapped),
+\fI\*n\fP's menus and actions (i.e., \fBset\-visibility\fP)
+allow one to select whether the VT100 or Tek4014 windows should be displayed.
+.TP 8
+.B "+nomap"
+This option enables the initial \fImapping\fP of the terminal window.
+This is the default behavior.
+.TP 8
.B "\-nul"
This option disables the display of underlining.
.TP 8
@@ -1279,11 +1299,11 @@ when your operating system does not supp
This option resets the \fButf8\fP resource.
.TP 8
.B "\-uc"
-This option, corresponding to the \fBcursorUnderline\fP resource,
+This option, corresponding to the \fBcursorUnderLine\fP resource,
makes the cursor underlined instead of a box.
.TP 8
.B "+uc"
-This option m, corresponding to the \fBcursorUnderline\fP resource,
+This option m, corresponding to the \fBcursorUnderLine\fP resource,
akes the cursor a box instead of underlined.
.TP 8
.B "\-ulc"
@@ -1595,7 +1615,7 @@ First, \fI\*n\fP obtains the initial \fI
.bP
\fI\*n\fP's internal value is ^H
.bP
-\fI\*n\fP asks the operating system for the value which \fBstty\fP shows
+\fI\*n\fP asks the operating system for the value which \fBstty\fP(1) shows
.bP
the \fBttyModes\fP resource may override \fIerase\fP
.bP
@@ -1915,6 +1935,10 @@ with the \fImeta\fP modifier to the \fBc
scroll\-lock
assigns a key\-binding to the \fBscroll\-lock()\fP action.
.TP
+block\-select
+an optional (compile-time) feature for supporting rectangular selections.
+By default, this is bound to \fIMeta button one\fP.
+.TP
select
assigns mouse- and keypress-combinations
to actions which manipulate the selection.
@@ -2768,7 +2792,7 @@ You may have to set this option to \*(``
if you have some old East Asian terminal based programs that assume that
line-drawing characters have a column width of 2.
If this resource is false, the \fBmkWidth\fP resource controls the
-choice between the system's \fBwcwidth\fP and \fI\*n\fP's built-in tables.
+choice between the system's \fBwcwidth\fP(3) and \fI\*n\fP's built-in tables.
The default is \*(``false\*(''.
.TP 8
.B "color0\fP (class\fB Color0\fP)"
@@ -2983,7 +3007,7 @@ The default is \*(``false\*(''.
.TP 8
.B "cursorBar\fP (class\fB CursorBar\fP)"
Specifies whether to make the cursor a left-bar or a box,
-unless the \fBcursorUnderline\fP resource is set.
+unless the \fBcursorUnderLine\fP resource is set.
The default is \*(``false\*(''.
.TP 8
.B "cursorBlink\fP (class\fB CursorBlink\fP)"
@@ -3985,7 +4009,7 @@ the cursor position and the time/date:
.IP
If a \*(``%\*('' marker does not match any
of the three special tokens used in the default resource setting,
-\fI\*n\fP uses \fBstrftime\fP to interpret it.
+\fI\*n\fP uses \fBstrftime\fP(3) to interpret it.
.TP 8
.B "initialFont\fP (class\fB InitialFont\fP)"
Specifies which of the VT100 fonts to use initially.
@@ -4085,7 +4109,7 @@ The default is \*(``1024\*(''.
The minimum value is \*(``256\*(''.
.TP 8
.B "locale\fP (class\fB Locale\fP)"
-Specifies how to use \fIluit\fR, an encoding converter between UTF-8
+Specifies how to use \fBluit\fR(1), an encoding converter between UTF-8
and locale encodings.
The resource value (ignoring case) may be:
.RS
@@ -4243,7 +4267,7 @@ several types of control strings which c
\fI\*N\fP reads these strings,
accumulating them into a buffer until they are properly terminated.
At that point, \fI\*n\fP interprets the strings.
-If they happen to be \fBDCS\fP commands to draw ReGIS or SIXEL images,
+If they happen to be \fBDCS\fP commands to draw ReGIS images,
these strings may be large, in the hundreds of kilobytes.
A few \fBOSC\fP commands may be as large as 10 kilobytes.
.IP
@@ -4860,6 +4884,9 @@ The resource value is interpreted the sa
The default is \*(``9\*('', which selects the current visible screen
plus saved lines, with no special case for the alternated screen.
.TP 8
+.B "printRawChars\fP (class \fBPrintRawChars\fP)"
+If \*(``true\*('', \fI\*n\fR allows Unicode non-characters to be printed.
+.TP 8
.B "printerAutoClose\fP (class\fB PrinterAutoClose\fP)"
If \*(``true\*('', \fI\*n\fR will close the printer (a pipe) when the
application switches the printer offline with a Media Copy command.
@@ -5960,7 +5987,7 @@ This entry invokes the \fBset\-utf8\-tit
This entry invokes the \fBallow\-color\-ops(\fItoggle\fB)\fR action.
.TP 8
.B "allow\-font\-ops\fP (class\fB SmeBSB\fP)"
-This entry invokes the \fBallow\-fonts\-ops(\fItoggle\fB)\fR action.
+This entry invokes the \fBallow\-font\-ops(\fItoggle\fB)\fR action.
.TP 8
.B "allow\-tcap\-ops\fP (class\fB SmeBSB\fP)"
This entry invokes the \fBallow\-tcap\-ops(\fItoggle\fB)\fR action.
@@ -6894,7 +6921,7 @@ Reset origin mode (DECOM).
.bP
Reset all margins (i.e., top/bottom and left/right).
This can be convenient when some program has left the scroll regions
-set incorrectly (often a problem when using VMS or TOPS-20).
+set incorrectly.
.bP
Set autowrap and reverse wrapping according to the resource values
.BR autoWrap " and"
@@ -7421,7 +7448,7 @@ This action sets, unsets or toggles the
invoked by the \fBallow\-font\-ops\fP entry in \fIfontMenu\fP.
.TP 8
.B "allow\-mouse\-ops(\fIon/off/toggle\fP)"
-This action sets, unsets or toggles the \fBallowMousepOps\fP resource
+This action sets, unsets or toggles the \fBallowMouseOps\fP resource
and is also invoked by the \fBallow\-mouse\-ops\fP entry in \fIfontMenu\fP.
.TP 8
.B "allow\-send\-events(\fIon/off/toggle\fP)"
@@ -7873,6 +7900,11 @@ without affecting the selection mode.
This action begins text selection at the current pointer location.
See
the section on \fBPOINTER USAGE\fP for information on making selections.
+.IP
+If \fI\*n\fR is configured to support block-selection,
+this action accepts a parameter \*(``block\*(''
+which initiates a block-selection
+rather than the default character-oriented selection.
.TP 8
.B "send\-signal(\fIsigname\fP)"
This action sends the signal named by \fIsigname\fP
@@ -8225,6 +8257,7 @@ These are for the \fIvt100\fP widget:
!Lock Ctrl <Btn1Down>:\fBpopup\-menu\fP(mainMenu) \\n\\\&
!Lock Ctrl @Num_Lock <Btn1Down>:\fBpopup\-menu\fP(mainMenu) \\n\\\&
! @Num_Lock Ctrl <Btn1Down>:\fBpopup\-menu\fP(mainMenu) \\n\\\&
+ Meta <Btn1Down>:\fBselect\-start\fP(block) \\n\\\&
~Meta <Btn1Down>:\fBselect\-start\fP() \\n\\\&
~Meta <Btn1Motion>:\fBselect\-extend\fP() \\n\\\&
!Ctrl <Btn2Down>:\fBpopup\-menu\fP(vtMenu) \\n\\\&
@@ -8487,7 +8520,7 @@ the shell to interpret the string \*(``\
the \fIescape\fP character and
to suppress a trailing newline on output.
Those are not portable, nor recommended.
-Instead, use \fBprintf\fP (POSIX).
+Instead, use \fBprintf\fP(1) (POSIX).
.PP
For example, to set the \fIwindow title\fP to \*(``Hello world!\*('',
you could use one of these commands in a script:
@@ -8498,7 +8531,7 @@ printf \*'\\033]2;%s\\033\\\\\*' "Hello
printf \*'\\033]2;%s\\007\*' "Hello world!"
.NE
.PP
-The \fBprintf\fP command interprets the octal value \*(``\\033\*('' for
+The \fBprintf\fP(1) command interprets the octal value \*(``\\033\*('' for
\fIescape\fP, and (since it was not given in the format) omits a trailing
newline from the output.
.PP
@@ -8612,7 +8645,7 @@ to convert a terminal capability with it
that can be written to the terminal.
.bP
Shells lacking a comparable feature (such as \fBbash\fP) can always
-use the program \fBtput\fP to do this transformation.
+use the program \fBtput\fP(1) to do this transformation.
.PP
Hard-coded escape sequences are supported by each shell,
but are not recommended because those rely upon particular configurations
Index: xsrc/external/mit/xterm/include/xtermcfg.h
diff -u xsrc/external/mit/xterm/include/xtermcfg.h:1.21 xsrc/external/mit/xterm/include/xtermcfg.h:1.22
--- xsrc/external/mit/xterm/include/xtermcfg.h:1.21 Thu Jul 4 09:09:18 2024
+++ xsrc/external/mit/xterm/include/xtermcfg.h Sun Mar 9 23:18:49 2025
@@ -1,8 +1,8 @@
/* xtermcfg.h. Generated automatically by configure. */
-/* $XTermId: xtermcfg.hin,v 1.228 2023/01/26 00:54:10 tom Exp $ */
+/* $XTermId: xtermcfg.hin,v 1.234 2025/01/03 01:01:56 tom Exp $ */
/*
- * Copyright 1997-2023,2024 by Thomas E. Dickey
+ * Copyright 1997-2024,2025 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -89,12 +89,9 @@
#define HAVE_MKDTEMP 1 /* AC_CHECK_FUNCS(mkdtemp) */
/* #undef HAVE_NCURSES_CURSES_H */ /* AC_CHECK_HEADERS(ncurses/curses.h) */
/* #undef HAVE_NCURSES_TERM_H */ /* AC_CHECK_HEADERS(ncurses/term.h) */
-/* #undef HAVE_PATHS_H */ /* AC_CHECK_HEADERS(paths.h) */
#define HAVE_PATHS_H 1 /* CF_LASTLOG */
-/* #undef HAVE_PCRE2POSIX_H */ /* AC_CHECK_HEADERS(pcre2posix.h) */
/* #undef HAVE_PCRE2POSIX_H */ /* CF_WITH_PCRE2 */
/* #undef HAVE_PCRE2REGCOMP */ /* CF_WITH_PCRE2 */
-/* #undef HAVE_PCREPOSIX_H */ /* AC_CHECK_HEADERS(pcreposix.h) */
/* #undef HAVE_PCREPOSIX_H */ /* CF_WITH_PCRE */
#define HAVE_POSIX_OPENPT 1 /* CF_FUNC_GRANTPT */
#define HAVE_POSIX_SAVED_IDS 1 /* CF_POSIX_SAVED_IDS */
@@ -165,6 +162,7 @@
/* #undef OPT_AIX_COLORS */ /* CF_ARG_DISABLE(16-color) */
/* #undef OPT_BLINK_CURS */ /* CF_ARG_DISABLE(blink-cursor) */
/* #undef OPT_BLINK_TEXT */ /* CF_ARG_DISABLE(blink-text) */
+#define OPT_BLOCK_SELECT 0 /* CF_ARG_ENABLE(block-select) */
/* #undef OPT_BOX_CHARS */ /* CF_ARG_DISABLE(boxchars) */
#define OPT_BROKEN_OSC 0 /* CF_ARG_ENABLE(broken-osc) */
/* #undef OPT_BROKEN_ST */ /* CF_ARG_DISABLE(broken-st) */