Module Name: xsrc Committed By: mrg Date: Mon Jul 11 19:26:45 UTC 2022
Modified Files: xsrc/external/mit/libdrm/dist: libdrm_lists.h xf86drm.c xf86drmMode.c xf86drmMode.h xsrc/external/mit/libdrm/dist/amdgpu: amdgpu.h xsrc/external/mit/libdrm/dist/tests/modetest: modetest.c xsrc/external/mit/xterm/dist: fontutils.c graphics_sixel.c linedata.c misc.c ptyx.h resize.c scrollback.c xterm.h xterm.man Removed Files: xsrc/external/mit/libdrm/dist/libkms: Android.mk Makefile.sources api.c dumb.c exynos.c intel.c internal.h kms-symbols.txt libkms.h libkms.pc.in linux.c meson.build nouveau.c radeon.c vmwgfx.c xsrc/external/mit/libdrm/dist/tests/kms: kms-steal-crtc.c kms-universal-planes.c libkms-test-crtc.c libkms-test-device.c libkms-test-framebuffer.c libkms-test-plane.c libkms-test-screen.c libkms-test.h meson.build xsrc/external/mit/libdrm/dist/tests/kmstest: main.c meson.build Log Message: merge libdrm 2.4.112, and xterm-372. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 xsrc/external/mit/libdrm/dist/libdrm_lists.h cvs rdiff -u -r1.30 -r1.31 xsrc/external/mit/libdrm/dist/xf86drm.c cvs rdiff -u -r1.19 -r1.20 xsrc/external/mit/libdrm/dist/xf86drmMode.c cvs rdiff -u -r1.12 -r1.13 xsrc/external/mit/libdrm/dist/xf86drmMode.h cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/libdrm/dist/amdgpu/amdgpu.h cvs rdiff -u -r1.3 -r0 xsrc/external/mit/libdrm/dist/libkms/Android.mk cvs rdiff -u -r1.1.1.1 -r0 \ xsrc/external/mit/libdrm/dist/libkms/Makefile.sources \ xsrc/external/mit/libdrm/dist/libkms/kms-symbols.txt cvs rdiff -u -r1.1.1.5 -r0 xsrc/external/mit/libdrm/dist/libkms/api.c \ xsrc/external/mit/libdrm/dist/libkms/intel.c \ xsrc/external/mit/libdrm/dist/libkms/meson.build \ xsrc/external/mit/libdrm/dist/libkms/nouveau.c \ xsrc/external/mit/libdrm/dist/libkms/vmwgfx.c cvs rdiff -u -r1.1.1.4 -r0 xsrc/external/mit/libdrm/dist/libkms/dumb.c \ xsrc/external/mit/libdrm/dist/libkms/internal.h \ xsrc/external/mit/libdrm/dist/libkms/radeon.c cvs rdiff -u -r1.1.1.6 -r0 xsrc/external/mit/libdrm/dist/libkms/exynos.c cvs rdiff -u -r1.1.1.3 -r0 xsrc/external/mit/libdrm/dist/libkms/libkms.h \ xsrc/external/mit/libdrm/dist/libkms/libkms.pc.in cvs rdiff -u -r1.1.1.8 -r0 xsrc/external/mit/libdrm/dist/libkms/linux.c cvs rdiff -u -r1.1.1.3 -r0 \ xsrc/external/mit/libdrm/dist/tests/kms/kms-steal-crtc.c \ xsrc/external/mit/libdrm/dist/tests/kms/libkms-test-plane.c \ xsrc/external/mit/libdrm/dist/tests/kms/libkms-test-screen.c cvs rdiff -u -r1.1.1.4 -r0 \ xsrc/external/mit/libdrm/dist/tests/kms/kms-universal-planes.c cvs rdiff -u -r1.1.1.2 -r0 \ xsrc/external/mit/libdrm/dist/tests/kms/libkms-test-crtc.c \ xsrc/external/mit/libdrm/dist/tests/kms/libkms-test-device.c \ xsrc/external/mit/libdrm/dist/tests/kms/libkms-test-framebuffer.c \ xsrc/external/mit/libdrm/dist/tests/kms/meson.build cvs rdiff -u -r1.1.1.1 -r0 \ xsrc/external/mit/libdrm/dist/tests/kms/libkms-test.h cvs rdiff -u -r1.1.1.4 -r0 xsrc/external/mit/libdrm/dist/tests/kmstest/main.c cvs rdiff -u -r1.1.1.2 -r0 \ xsrc/external/mit/libdrm/dist/tests/kmstest/meson.build cvs rdiff -u -r1.17 -r1.18 \ xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c cvs rdiff -u -r1.11 -r1.12 xsrc/external/mit/xterm/dist/fontutils.c cvs rdiff -u -r1.2 -r1.3 xsrc/external/mit/xterm/dist/graphics_sixel.c cvs rdiff -u -r1.8 -r1.9 xsrc/external/mit/xterm/dist/linedata.c cvs rdiff -u -r1.23 -r1.24 xsrc/external/mit/xterm/dist/misc.c cvs rdiff -u -r1.18 -r1.19 xsrc/external/mit/xterm/dist/ptyx.h cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xterm/dist/resize.c cvs rdiff -u -r1.6 -r1.7 xsrc/external/mit/xterm/dist/scrollback.c \ xsrc/external/mit/xterm/dist/xterm.h cvs rdiff -u -r1.20 -r1.21 xsrc/external/mit/xterm/dist/xterm.man 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/libdrm/dist/libdrm_lists.h diff -u xsrc/external/mit/libdrm/dist/libdrm_lists.h:1.2 xsrc/external/mit/libdrm/dist/libdrm_lists.h:1.3 --- xsrc/external/mit/libdrm/dist/libdrm_lists.h:1.2 Sun Jan 21 21:48:54 2018 +++ xsrc/external/mit/libdrm/dist/libdrm_lists.h Mon Jul 11 19:26:44 2022 @@ -97,18 +97,18 @@ typedef struct _drmMMListHead #define DRMLISTFOREACHENTRY(__item, __list, __head) \ for ((__item) = DRMLISTENTRY(__typeof__(*__item), (__list)->next, __head); \ - &(__item)->__head != (__list); \ + &(__item)->__head != (__list); \ (__item) = DRMLISTENTRY(__typeof__(*__item), \ - (__item)->__head.next, __head)) + (__item)->__head.next, __head)) #define DRMLISTFOREACHENTRYSAFE(__item, __temp, __list, __head) \ for ((__item) = DRMLISTENTRY(__typeof__(*__item), (__list)->next, __head), \ (__temp) = DRMLISTENTRY(__typeof__(*__item), \ - (__item)->__head.next, __head); \ - &(__item)->__head != (__list); \ - (__item) = (__temp), \ + (__item)->__head.next, __head); \ + &(__item)->__head != (__list); \ + (__item) = (__temp), \ (__temp) = DRMLISTENTRY(__typeof__(*__item), \ - (__temp)->__head.next, __head)) + (__temp)->__head.next, __head)) #define DRMLISTJOIN(__list, __join) if (!DRMLISTEMPTY(__list)) { \ (__list)->next->prev = (__join); \ Index: xsrc/external/mit/libdrm/dist/xf86drm.c diff -u xsrc/external/mit/libdrm/dist/xf86drm.c:1.30 xsrc/external/mit/libdrm/dist/xf86drm.c:1.31 --- xsrc/external/mit/libdrm/dist/xf86drm.c:1.30 Sun Jan 9 09:05:34 2022 +++ xsrc/external/mit/libdrm/dist/xf86drm.c Mon Jul 11 19:26:44 2022 @@ -265,6 +265,7 @@ drmGetAfbcFormatModifierNameFromArm(uint static bool drmGetAfrcFormatModifierNameFromArm(uint64_t modifier, FILE *fp) { + bool scan_layout; for (unsigned int i = 0; i < 2; ++i) { uint64_t coding_unit_block = (modifier >> (i * 4)) & AFRC_FORMAT_MOD_CU_SIZE_MASK; @@ -296,7 +297,7 @@ drmGetAfrcFormatModifierNameFromArm(uint } } - bool scan_layout = + scan_layout = (modifier & AFRC_FORMAT_MOD_LAYOUT_SCAN) == AFRC_FORMAT_MOD_LAYOUT_SCAN; if (scan_layout) { fprintf(fp, "SCAN"); Index: xsrc/external/mit/libdrm/dist/xf86drmMode.c diff -u xsrc/external/mit/libdrm/dist/xf86drmMode.c:1.19 xsrc/external/mit/libdrm/dist/xf86drmMode.c:1.20 --- xsrc/external/mit/libdrm/dist/xf86drmMode.c:1.19 Sun Jan 9 09:05:34 2022 +++ xsrc/external/mit/libdrm/dist/xf86drmMode.c Mon Jul 11 19:26:44 2022 @@ -610,6 +610,29 @@ drm_public drmModeConnectorPtr drmModeGe return _drmModeGetConnector(fd, connector_id, 0); } +drm_public uint32_t drmModeConnectorGetPossibleCrtcs(int fd, + const drmModeConnector *connector) +{ + drmModeEncoder *encoder; + int i; + uint32_t possible_crtcs; + + possible_crtcs = 0; + for (i = 0; i < connector->count_encoders; i++) { + encoder = drmModeGetEncoder(fd, connector->encoders[i]); + if (!encoder) { + return 0; + } + + possible_crtcs |= encoder->possible_crtcs; + drmModeFreeEncoder(encoder); + } + + if (possible_crtcs == 0) + errno = ENOENT; + return possible_crtcs; +} + drm_public int drmModeAttachMode(int fd, uint32_t connector_id, drmModeModeInfoPtr mode_info) { struct drm_mode_mode_cmd res; @@ -1324,6 +1347,7 @@ struct _drmModeAtomicReqItem { uint32_t object_id; uint32_t property_id; uint64_t value; + uint32_t cursor; }; struct _drmModeAtomicReq { @@ -1347,7 +1371,7 @@ drm_public drmModeAtomicReqPtr drmModeAt return req; } -drm_public drmModeAtomicReqPtr drmModeAtomicDuplicate(drmModeAtomicReqPtr old) +drm_public drmModeAtomicReqPtr drmModeAtomicDuplicate(const drmModeAtomicReqPtr old) { drmModeAtomicReqPtr new; @@ -1377,8 +1401,10 @@ drm_public drmModeAtomicReqPtr drmModeAt } drm_public int drmModeAtomicMerge(drmModeAtomicReqPtr base, - drmModeAtomicReqPtr augment) + const drmModeAtomicReqPtr augment) { + uint32_t i; + if (!base) return -EINVAL; @@ -1401,12 +1427,14 @@ drm_public int drmModeAtomicMerge(drmMod memcpy(&base->items[base->cursor], augment->items, augment->cursor * sizeof(*augment->items)); + for (i = base->cursor; i < base->cursor + augment->cursor; i++) + base->items[i].cursor = i; base->cursor += augment->cursor; return 0; } -drm_public int drmModeAtomicGetCursor(drmModeAtomicReqPtr req) +drm_public int drmModeAtomicGetCursor(const drmModeAtomicReqPtr req) { if (!req) return -EINVAL; @@ -1446,6 +1474,7 @@ drm_public int drmModeAtomicAddProperty( req->items[req->cursor].object_id = object_id; req->items[req->cursor].property_id = property_id; req->items[req->cursor].value = value; + req->items[req->cursor].cursor = req->cursor; req->cursor++; return req->cursor; @@ -1466,15 +1495,15 @@ static int sort_req_list(const void *mis const drmModeAtomicReqItem *first = misc; const drmModeAtomicReqItem *second = other; - if (first->object_id < second->object_id) - return -1; - else if (first->object_id > second->object_id) - return 1; + if (first->object_id != second->object_id) + return first->object_id - second->object_id; + else if (first->property_id != second->property_id) + return first->property_id - second->property_id; else - return second->property_id - first->property_id; + return first->cursor - second->cursor; } -drm_public int drmModeAtomicCommit(int fd, drmModeAtomicReqPtr req, +drm_public int drmModeAtomicCommit(int fd, const drmModeAtomicReqPtr req, uint32_t flags, void *user_data) { drmModeAtomicReqPtr sorted; @@ -1523,6 +1552,9 @@ drm_public int drmModeAtomicCommit(int f sorted->cursor--; } + for (i = 0; i < sorted->cursor; i++) + sorted->items[i].cursor = i; + objs_ptr = drmMalloc(atomic.count_objs * sizeof objs_ptr[0]); if (!objs_ptr) { errno = ENOMEM; @@ -1738,3 +1770,56 @@ drm_public void drmModeFreeFB2(drmModeFB { drmFree(ptr); } + +drm_public const char * +drmModeGetConnectorTypeName(uint32_t connector_type) +{ + /* Keep the strings in sync with the kernel's drm_connector_enum_list in + * drm_connector.c. */ + switch (connector_type) { + case DRM_MODE_CONNECTOR_Unknown: + return "Unknown"; + case DRM_MODE_CONNECTOR_VGA: + return "VGA"; + case DRM_MODE_CONNECTOR_DVII: + return "DVI-I"; + case DRM_MODE_CONNECTOR_DVID: + return "DVI-D"; + case DRM_MODE_CONNECTOR_DVIA: + return "DVI-A"; + case DRM_MODE_CONNECTOR_Composite: + return "Composite"; + case DRM_MODE_CONNECTOR_SVIDEO: + return "SVIDEO"; + case DRM_MODE_CONNECTOR_LVDS: + return "LVDS"; + case DRM_MODE_CONNECTOR_Component: + return "Component"; + case DRM_MODE_CONNECTOR_9PinDIN: + return "DIN"; + case DRM_MODE_CONNECTOR_DisplayPort: + return "DP"; + case DRM_MODE_CONNECTOR_HDMIA: + return "HDMI-A"; + case DRM_MODE_CONNECTOR_HDMIB: + return "HDMI-B"; + case DRM_MODE_CONNECTOR_TV: + return "TV"; + case DRM_MODE_CONNECTOR_eDP: + return "eDP"; + case DRM_MODE_CONNECTOR_VIRTUAL: + return "Virtual"; + case DRM_MODE_CONNECTOR_DSI: + return "DSI"; + case DRM_MODE_CONNECTOR_DPI: + return "DPI"; + case DRM_MODE_CONNECTOR_WRITEBACK: + return "Writeback"; + case DRM_MODE_CONNECTOR_SPI: + return "SPI"; + case DRM_MODE_CONNECTOR_USB: + return "USB"; + default: + return NULL; + } +} Index: xsrc/external/mit/libdrm/dist/xf86drmMode.h diff -u xsrc/external/mit/libdrm/dist/xf86drmMode.h:1.12 xsrc/external/mit/libdrm/dist/xf86drmMode.h:1.13 --- xsrc/external/mit/libdrm/dist/xf86drmMode.h:1.12 Sun Jan 9 09:05:34 2022 +++ xsrc/external/mit/libdrm/dist/xf86drmMode.h Mon Jul 11 19:26:44 2022 @@ -381,6 +381,19 @@ extern drmModeConnectorPtr drmModeGetCon uint32_t connector_id); /** + * Get a bitmask of CRTCs a connector is compatible with. + * + * The bits reference CRTC indices. If the n-th CRTC is compatible with the + * connector, the n-th bit will be set. The indices are taken from the array + * returned by drmModeGetResources(). The indices are different from the object + * IDs. + * + * Zero is returned on error. + */ +extern uint32_t drmModeConnectorGetPossibleCrtcs(int fd, + const drmModeConnector *connector); + +/** * Attaches the given mode to an connector. */ extern int drmModeAttachMode(int fd, uint32_t connectorId, drmModeModeInfoPtr mode_info); @@ -433,18 +446,18 @@ extern int drmModeObjectSetProperty(int typedef struct _drmModeAtomicReq drmModeAtomicReq, *drmModeAtomicReqPtr; extern drmModeAtomicReqPtr drmModeAtomicAlloc(void); -extern drmModeAtomicReqPtr drmModeAtomicDuplicate(drmModeAtomicReqPtr req); +extern drmModeAtomicReqPtr drmModeAtomicDuplicate(const drmModeAtomicReqPtr req); extern int drmModeAtomicMerge(drmModeAtomicReqPtr base, - drmModeAtomicReqPtr augment); + const drmModeAtomicReqPtr augment); extern void drmModeAtomicFree(drmModeAtomicReqPtr req); -extern int drmModeAtomicGetCursor(drmModeAtomicReqPtr req); +extern int drmModeAtomicGetCursor(const drmModeAtomicReqPtr req); extern void drmModeAtomicSetCursor(drmModeAtomicReqPtr req, int cursor); extern int drmModeAtomicAddProperty(drmModeAtomicReqPtr req, uint32_t object_id, uint32_t property_id, uint64_t value); extern int drmModeAtomicCommit(int fd, - drmModeAtomicReqPtr req, + const drmModeAtomicReqPtr req, uint32_t flags, void *user_data); @@ -475,6 +488,15 @@ extern drmModeObjectListPtr drmModeGetLe extern int drmModeRevokeLease(int fd, uint32_t lessee_id); +/** + * Get a string describing a connector type. + * + * NULL is returned if the connector type is unsupported. Callers should handle + * this gracefully, e.g. by falling back to "Unknown" or printing the raw value. + */ +extern const char * +drmModeGetConnectorTypeName(uint32_t connector_type); + #if defined(__cplusplus) } #endif Index: xsrc/external/mit/libdrm/dist/amdgpu/amdgpu.h diff -u xsrc/external/mit/libdrm/dist/amdgpu/amdgpu.h:1.3 xsrc/external/mit/libdrm/dist/amdgpu/amdgpu.h:1.4 --- xsrc/external/mit/libdrm/dist/amdgpu/amdgpu.h:1.3 Sun Jan 9 09:05:34 2022 +++ xsrc/external/mit/libdrm/dist/amdgpu/amdgpu.h Mon Jul 11 19:26:44 2022 @@ -943,6 +943,21 @@ int amdgpu_cs_ctx_override_priority(amdg unsigned priority); /** + * Set or query the stable power state for GPU profiling. + * + * \param dev - \c [in] device handle + * \param op - \c [in] AMDGPU_CTX_OP_{GET,SET}_STABLE_PSTATE + * \param flags - \c [in] AMDGPU_CTX_STABLE_PSTATE_* + * \param out_flags - \c [out] output current stable pstate + * + * \return 0 on success otherwise POSIX Error code. + */ +int amdgpu_cs_ctx_stable_pstate(amdgpu_context_handle context, + uint32_t op, + uint32_t flags, + uint32_t *out_flags); + +/** * Query reset state for the specific GPU Context * * \param context - \c [in] GPU Context handle Index: xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c diff -u xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c:1.17 xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c:1.18 --- xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c:1.17 Sun Jan 9 09:05:35 2022 +++ xsrc/external/mit/libdrm/dist/tests/modetest/modetest.c Mon Jul 11 19:26:45 2022 @@ -376,7 +376,7 @@ static void dump_prop(struct device *dev printf("\t\tenums:"); for (i = 0; i < prop->count_enums; i++) printf(" %s=%"PRIu64, prop->enums[i].name, - prop->enums[i].value); + (uint64_t)prop->enums[i].value); printf("\n"); } else if (drm_property_type_is(prop, DRM_MODE_PROP_BITMASK)) { printf("\t\tvalues:"); @@ -656,7 +656,7 @@ static struct resources *get_resources(s int num; num = asprintf(&connector->name, "%s-%u", - util_lookup_connector_type_name(conn->connector_type), + drmModeGetConnectorTypeName(conn->connector_type), conn->connector_type_id); if (num < 0) goto error; Index: xsrc/external/mit/xterm/dist/fontutils.c diff -u xsrc/external/mit/xterm/dist/fontutils.c:1.11 xsrc/external/mit/xterm/dist/fontutils.c:1.12 --- xsrc/external/mit/xterm/dist/fontutils.c:1.11 Sun Jan 9 09:17:31 2022 +++ xsrc/external/mit/xterm/dist/fontutils.c Mon Jul 11 19:26:45 2022 @@ -1,7 +1,7 @@ -/* $XTermId: fontutils.c,v 1.709 2021/11/10 00:36:27 Rajeev.V.Pillai Exp $ */ +/* $XTermId: fontutils.c,v 1.712 2022/02/23 00:46:08 tom Exp $ */ /* - * Copyright 1998-2020,2021 by Thomas E. Dickey + * Copyright 1998-2021,2022 by Thomas E. Dickey * * All Rights Reserved * @@ -470,15 +470,17 @@ alloca_fontname(char **result, size_t ne size_t want = last + next + 2; if (want >= have) { + char *save = *result; want = ALLOCHUNK(want); if (last != 0) { - char *save = *result; *result = TypeRealloc(char, want, *result); if (*result == 0) free(save); } else { - if ((*result = TypeMallocN(char, want)) != 0) + if ((*result = TypeMallocN(char, want)) != 0) { + free(save); **result = '\0'; + } } } } @@ -1284,6 +1286,7 @@ xtermUpdateItalics(XtermWidget xw, unsig { TScreen *screen = TScreenOf(xw); + (void) screen; if (UseItalicFont(screen)) { if ((new_attrs & ATR_ITALIC) && !(old_attrs & ATR_ITALIC)) { xtermLoadItalics(xw); Index: xsrc/external/mit/xterm/dist/graphics_sixel.c diff -u xsrc/external/mit/xterm/dist/graphics_sixel.c:1.2 xsrc/external/mit/xterm/dist/graphics_sixel.c:1.3 --- xsrc/external/mit/xterm/dist/graphics_sixel.c:1.2 Thu Feb 3 01:59:24 2022 +++ xsrc/external/mit/xterm/dist/graphics_sixel.c Mon Jul 11 19:26:45 2022 @@ -1,4 +1,4 @@ -/* $XTermId: graphics_sixel.c,v 1.31 2022/01/31 08:53:42 tom Exp $ */ +/* $XTermId: graphics_sixel.c,v 1.36 2022/02/21 23:13:48 tom Exp $ */ /* * Copyright 2014-2021,2022 by Ross Combs @@ -149,40 +149,42 @@ init_sixel_background(Graphic *graphic, graphic->color_registers_used[context->background] = 1; } +#define ValidColumn(graphic, context) \ + ((context)->col >= 0 && \ + (context)->col < (graphic)->max_width) + static Boolean set_sixel(Graphic *graphic, SixelContext const *context, int sixel) { const int mh = graphic->max_height; const int mw = graphic->max_width; - RegisterNum color; + const RegisterNum color = context->current_register; int pix; + int pix_row = context->row; + int pix_col = context->col + (pix_row * mw); - color = context->current_register; - TRACE(("drawing sixel at pos=%d,%d color=%hu (hole=%d, [%d,%d,%d])\n", - context->col, - context->row, - color, - color == COLOR_HOLE, - ((color != COLOR_HOLE) - ? (unsigned) graphic->color_registers[color].r : 0U), - ((color != COLOR_HOLE) - ? (unsigned) graphic->color_registers[color].g : 0U), - ((color != COLOR_HOLE) - ? (unsigned) graphic->color_registers[color].b : 0U))); - for (pix = 0; pix < 6; pix++) { - if (context->col >= 0 && - context->col < mw && - context->row + pix >= 0 && - context->row + pix < mh) { + TRACE2(("drawing sixel at pos=%d,%d color=%hu (hole=%d, [%d,%d,%d])\n", + context->col, + context->row, + color, + color == COLOR_HOLE, + ((color != COLOR_HOLE) + ? (unsigned) graphic->color_registers[color].r : 0U), + ((color != COLOR_HOLE) + ? (unsigned) graphic->color_registers[color].g : 0U), + ((color != COLOR_HOLE) + ? (unsigned) graphic->color_registers[color].b : 0U))); + for (pix = 0; pix < 6; pix++, pix_row++, pix_col += mw) { + if (pix_row >= 0 && + pix_row < mh) { if (sixel & (1 << pix)) { - if (context->col + 1 > graphic->actual_width) { + if (context->col >= graphic->actual_width) { graphic->actual_width = context->col + 1; } - if (context->row + pix + 1 > graphic->actual_height) { - graphic->actual_height = context->row + pix + 1; + if (pix_row >= graphic->actual_height) { + graphic->actual_height = pix_row + 1; } - graphic->pixels[((context->row + pix) * mw) + context->col] = - color; + SetSpixel(graphic, pix_col, color); } } else { TRACE(("sixel pixel %d out of bounds\n", pix)); @@ -295,7 +297,7 @@ finished_parsing(XtermWidget xw, Graphic } } - graphic->dirty = 1; + graphic->dirty = True; refresh_modified_displayed_graphics(xw); TRACE(("DONE parsed sixel data\n")); @@ -465,10 +467,11 @@ parse_sixel(XtermWidget xw, ANSI *params TRACE(("sixel=%x (%c)\n", sixel, (char) ch)); if (!graphic->valid) { init_sixel_background(graphic, &context); - graphic->valid = 1; + graphic->valid = True; } if (sixel) { - if (!set_sixel(graphic, &context, sixel)) { + if (!ValidColumn(graphic, &context) || + !set_sixel(graphic, &context, sixel)) { context.col = 0; break; } @@ -535,12 +538,13 @@ parse_sixel(XtermWidget xw, ANSI *params sixel, (char) ch, Pcount)); if (!graphic->valid) { init_sixel_background(graphic, &context); - graphic->valid = 1; + graphic->valid = True; } if (sixel) { int i; for (i = 0; i < Pcount; i++) { - if (set_sixel(graphic, &context, sixel)) { + if (ValidColumn(graphic, &context) && + set_sixel(graphic, &context, sixel)) { context.col++; } else { context.col = 0; Index: xsrc/external/mit/xterm/dist/linedata.c diff -u xsrc/external/mit/xterm/dist/linedata.c:1.8 xsrc/external/mit/xterm/dist/linedata.c:1.9 --- xsrc/external/mit/xterm/dist/linedata.c:1.8 Sun Jan 9 09:17:31 2022 +++ xsrc/external/mit/xterm/dist/linedata.c Mon Jul 11 19:26:45 2022 @@ -1,4 +1,4 @@ -/* $XTermId: linedata.c,v 1.100 2021/08/22 20:02:23 tom Exp $ */ +/* $XTermId: linedata.c,v 1.101 2021/12/27 23:43:28 tom Exp $ */ /* * Copyright 2009-2019,2021 by Thomas E. Dickey @@ -46,7 +46,7 @@ getLineData(TScreen *screen, int row) { LineData *result = 0; ScrnBuf buffer; - int max_row = screen->max_row; + int max_row = LastRowNumber(screen); if (row >= 0) { buffer = screen->visbuf; Index: xsrc/external/mit/xterm/dist/misc.c diff -u xsrc/external/mit/xterm/dist/misc.c:1.23 xsrc/external/mit/xterm/dist/misc.c:1.24 --- xsrc/external/mit/xterm/dist/misc.c:1.23 Sun Jan 9 09:17:31 2022 +++ xsrc/external/mit/xterm/dist/misc.c Mon Jul 11 19:26:45 2022 @@ -1,7 +1,7 @@ -/* $XTermId: misc.c,v 1.1007 2021/11/12 09:28:19 tom Exp $ */ +/* $XTermId: misc.c,v 1.1015 2022/02/18 09:08:10 tom Exp $ */ /* - * Copyright 1999-2020,2021 by Thomas E. Dickey + * Copyright 1999-2021,2022 by Thomas E. Dickey * * All Rights Reserved * @@ -1844,18 +1844,20 @@ xtermIsIconified(XtermWidget xw) &actual_format_return, &nitems_return, &bytes_after_return, - &prop_return) - && prop_return != 0 - && actual_return_type == requested_type - && actual_format_return == 32) { - unsigned long n; - for (n = 0; n < nitems_return; ++n) { - unsigned long check = (((unsigned long *) - (void *) prop_return)[n]); - if (check == is_hidden) { - result = True; - break; + &prop_return)) { + if (prop_return != 0 + && actual_return_type == requested_type + && actual_format_return == 32) { + unsigned long n; + for (n = 0; n < nitems_return; ++n) { + unsigned long check = (((unsigned long *) + (void *) prop_return)[n]); + if (check == is_hidden) { + result = True; + break; + } } + XFree(prop_return); } } } @@ -2746,7 +2748,6 @@ Boolean AllocOneColor(XtermWidget xw, XColor *def) { TScreen *screen = TScreenOf(xw); - XVisualInfo *visInfo; Boolean result = True; #define MaskIt(name,nn) \ @@ -2754,7 +2755,7 @@ AllocOneColor(XtermWidget xw, XColor *de << xw->rgb_shifts[nn]) \ & xw->visInfo->name ##_mask) - if ((visInfo = getVisualInfo(xw)) != NULL && xw->has_rgb) { + if (getVisualInfo(xw) != NULL && xw->has_rgb) { def->pixel = MaskIt(red, 0) | MaskIt(green, 1) | MaskIt(blue, 2); } else { Display *dpy = screen->display; @@ -2783,7 +2784,6 @@ AllocOneColor(XtermWidget xw, XColor *de Boolean QueryOneColor(XtermWidget xw, XColor *def) { - XVisualInfo *visInfo; Boolean result = True; #define UnMaskIt(name,nn) \ @@ -2792,7 +2792,7 @@ QueryOneColor(XtermWidget xw, XColor *de (unsigned short)((((UnMaskIt(name,nn) << 8) \ |UnMaskIt(name,nn))) << (8 - xw->rgb_widths[nn])) - if ((visInfo = getVisualInfo(xw)) != NULL && xw->has_rgb) { + if (getVisualInfo(xw) != NULL && xw->has_rgb) { /* *INDENT-EQLS* */ def->red = UnMaskIt2(red, 0); def->green = UnMaskIt2(green, 1); @@ -3966,7 +3966,7 @@ do_osc(XtermWidget xw, Char *oscbuf, siz Char *cp; int state = 0; char *buf = 0; - char temp[2]; + char temp[20]; #if OPT_ISO_COLORS int ansi_colors = 0; #endif @@ -4101,11 +4101,20 @@ do_osc(XtermWidget xw, Char *oscbuf, siz */ if (IsEmpty(buf)) { if (need_data) { - TRACE(("do_osc found no data\n")); - return; + switch (mode) { + case 0: + case 1: + case 2: + buf = strcpy(temp, "xterm"); + break; + default: + TRACE(("do_osc found no data\n")); + return; + } + } else { + temp[0] = '\0'; + buf = temp; } - temp[0] = '\0'; - buf = temp; } else if (!need_data && !optional_data) { TRACE(("do_osc found unwanted data\n")); return; @@ -4766,7 +4775,21 @@ do_dcs(XtermWidget xw, Char *dcsbuf, siz sprintf(reply, "%d%s", ((xw->flags & IN132COLUMNS) ? 132 : 80), cp); - } else if (!strcmp(cp, "*|")) { /* DECSNLS */ + } else +#if OPT_STATUS_LINE + if (!strcmp(cp, "$}")) { /* DECSASD */ + TRACE(("reply DECSASD\n")); + sprintf(reply, "%d%s", + screen->status_active, + cp); + } else if (!strcmp(cp, "$~")) { /* DECSSDT */ + TRACE(("reply DECSASD\n")); + sprintf(reply, "%d%s", + screen->status_type, + cp); + } else +#endif + if (!strcmp(cp, "*|")) { /* DECSNLS */ TRACE(("reply DECSNLS\n")); sprintf(reply, "%d%s", screen->max_row + 1, @@ -5856,13 +5879,15 @@ ChangeGroup(XtermWidget xw, const char * &actual_format, &nitems, &bytes_after, - &prop) - && actual_type == requested_type - && actual_format == 8 - && prop != 0 - && nitems == strlen(value) - && memcmp(value, prop, nitems) == 0) { - changed = False; + &prop)) { + if (actual_type == requested_type + && actual_format == 8 + && prop != 0 + && nitems == strlen(value) + && memcmp(value, prop, nitems) == 0) { + changed = False; + } + XFree(prop); } } #endif /* OPT_SAME_NAME */ @@ -6767,19 +6792,6 @@ sortedOpts(OptionHelp * options, XrmOpti } else { mesg = "turn off/on"; } - if (strncmp(mesg, opt_array[j].desc, strlen(mesg))) { - if (strncmp(opt_array[j].desc, "turn ", (size_t) 5)) { - char *s = malloc(strlen(mesg) - + strlen(opt_array[j].desc) - + 2); - if (s != 0) { - sprintf(s, "%s %s", mesg, opt_array[j].desc); - opt_array[j].desc = s; - } - } else { - TRACE(("OOPS ")); - } - } TRACE(("%s: %s %s: %s (%s)\n", mesg, res_array[k].option, @@ -7444,7 +7456,7 @@ free_string(String value) /* Set tty's idea of window size, using the given file descriptor 'fd'. */ int -update_winsize(int fd, int rows, int cols, int height, int width) +update_winsize(TScreen *screen, int rows, int cols, int height, int width) { int code = -1; #ifdef TTYSIZE_STRUCT @@ -7467,8 +7479,16 @@ update_winsize(int fd, int rows, int col last_cols = cols; last_high = height; last_wide = width; +#if OPT_STATUS_LINE + if (IsStatusShown(screen)) { + ++rows; + height += FontHeight(screen); + TRACE(("... account for status-line -> %dx%d (%dx%d)\n", + rows, cols, height, width)); + } +#endif setup_winsize(ts, rows, cols, height, width); - TRACE_RC(code, SET_TTYSIZE(fd, ts)); + TRACE_RC(code, SET_TTYSIZE(screen->respond, ts)); trace_winsize(ts, "from SET_TTYSIZE"); } #endif @@ -7495,7 +7515,7 @@ xtermSetWinSize(XtermWidget xw) TScreen *screen = TScreenOf(xw); TRACE(("xtermSetWinSize\n")); - update_winsize(screen->respond, + update_winsize(screen, MaxRows(screen), MaxCols(screen), Height(screen), Index: xsrc/external/mit/xterm/dist/ptyx.h diff -u xsrc/external/mit/xterm/dist/ptyx.h:1.18 xsrc/external/mit/xterm/dist/ptyx.h:1.19 --- xsrc/external/mit/xterm/dist/ptyx.h:1.18 Sun Jan 9 09:17:31 2022 +++ xsrc/external/mit/xterm/dist/ptyx.h Mon Jul 11 19:26:45 2022 @@ -1,7 +1,7 @@ -/* $XTermId: ptyx.h,v 1.1041 2021/11/08 22:23:28 tom Exp $ */ +/* $XTermId: ptyx.h,v 1.1060 2022/03/08 23:31:40 tom Exp $ */ /* - * Copyright 1999-2020,2021 by Thomas E. Dickey + * Copyright 1999-2021,2022 by Thomas E. Dickey * * All Rights Reserved * @@ -776,6 +776,10 @@ typedef enum { #define OPT_SHIFT_FONTS 0 /* true if xterm interprets fontsize-shifting */ #endif +#ifndef OPT_STATUS_LINE +#define OPT_STATUS_LINE 0 /* true if xterm supports status-line controls */ +#endif + #ifndef OPT_SUNPC_KBD #define OPT_SUNPC_KBD 1 /* true if xterm supports Sun/PC keyboard map */ #endif @@ -2721,6 +2725,44 @@ typedef struct { Boolean graphics_rotated_print_mode; #endif +#define StatusLineRows 1 /* number of rows in status-line */ + +#if OPT_STATUS_LINE +#define AddStatusLineRows(nrow) nrow += StatusLineRows +#define LastRowNumber(screen) \ + ( (screen)->max_row \ + + (IsStatusShown(screen) ? StatusLineRows : 0) ) +#define FirstRowNumber(screen) \ + ( (screen)->status_active \ + ? LastRowNumber(screen) \ + : 0 ) +#define IsStatusShown(screen) \ + ( ( (screen)->status_type == 2) || \ + ( (screen)->status_type == 1) ) +#define PlusStatusLine(screen,expr) \ + ( (screen)->status_shown \ + ? (expr) + StatusLineRows \ + : (expr) ) +#define if_STATUS_LINE(screen,stmt) \ + if (IsStatusShown(screen) && (screen)->status_active) stmt + + Boolean status_timeout; /* status timeout needs service */ + Boolean status_active; /* DECSASD */ + int status_type; /* DECSSDT */ + int status_shown; /* last-displayed type */ + SavedCursor status_data[2]; + char * status_fmt; /* format for indicator-status */ + +#else /* !OPT_STATUS_LINE */ + +#define AddStatusLineRows(nrow) /* nothing */ +#define LastRowNumber(screen) (screen)->max_row +#define FirstRowNumber(screen) 0 +#define PlusStatusLine(screen,expr) (expr) +#define if_STATUS_LINE(screen,stmt) /* nothing */ + +#endif /* OPT_STATUS_LINE */ + #if OPT_VT52_MODE IFlags vt52_save_flags; Char vt52_save_curgl; @@ -3318,11 +3360,12 @@ typedef struct _TekWidgetRec { /* * terminal flags - * There are actually two namespaces mixed together here. - * One is the set of flags that can go in screen->visbuf attributes - * and which must fit in a char (see OFF_ATTRS). - * The other is the global setting stored in - * term->flags and screen->save_modes. This need only fit in an unsigned. + * There are actually two namespaces mixed together here: + * a) One is the set of flags that can go in screen->visbuf attributes and + * which must fit in an IAttr (either a char or short, depending on whether + * wide-attributes are used). + * b) The other is the global setting stored in term->flags and + * screen->save_modes, which fits in an unsigned (IFlags). */ #define AttrBIT(n) xBIT(n) /* text-attributes */ Index: xsrc/external/mit/xterm/dist/resize.c diff -u xsrc/external/mit/xterm/dist/resize.c:1.3 xsrc/external/mit/xterm/dist/resize.c:1.4 --- xsrc/external/mit/xterm/dist/resize.c:1.3 Tue Apr 27 01:58:18 2021 +++ xsrc/external/mit/xterm/dist/resize.c Mon Jul 11 19:26:45 2022 @@ -1,7 +1,7 @@ -/* $XTermId: resize.c,v 1.145 2021/03/21 20:03:17 tom Exp $ */ +/* $XTermId: resize.c,v 1.148 2022/02/18 20:32:48 tom Exp $ */ /* - * Copyright 2003-2020,2021 by Thomas E. Dickey + * Copyright 2003-2021,2022 by Thomas E. Dickey * * All Rights Reserved * @@ -269,6 +269,13 @@ checkdigits(char *str) } static void +unexpected_char(int c) +{ + fprintf(stderr, "%s: unknown character %#x, exiting.\r\n", myname, c); + onintr(0); +} + +static void readstring(FILE *fp, char *buf, const char *str) { int last, c; @@ -276,6 +283,7 @@ readstring(FILE *fp, char *buf, const ch /* What is the advantage of setitimer() over alarm()? */ struct itimerval it; #endif + int limit = (BUFSIZ - 3); signal(SIGALRM, resize_timeout); #if defined(USG) || defined(__minix) @@ -293,12 +301,20 @@ readstring(FILE *fp, char *buf, const ch *buf++ = (char) c; } if (c != *str) { - fprintf(stderr, "%s: unknown character, exiting.\r\n", myname); - onintr(0); + unexpected_char(c); } last = str[strlen(str) - 1]; - while ((*buf++ = (char) getc(fp)) != last) { - ; + while ((c = getc(fp)) != EOF) { + if (--limit <= 0) { + fprintf(stderr, "%s: unexpected response\n", myname); + onintr(0); + } + if (c < 32 || c > 126) { + unexpected_char(c); + } + *buf++ = (char) c; + if (c == last) + break; } #if defined(USG) || defined(__minix) alarm(0); Index: xsrc/external/mit/xterm/dist/scrollback.c diff -u xsrc/external/mit/xterm/dist/scrollback.c:1.6 xsrc/external/mit/xterm/dist/scrollback.c:1.7 --- xsrc/external/mit/xterm/dist/scrollback.c:1.6 Thu Feb 11 12:24:39 2021 +++ xsrc/external/mit/xterm/dist/scrollback.c Mon Jul 11 19:26:45 2022 @@ -1,7 +1,7 @@ -/* $XTermId: scrollback.c,v 1.21 2020/10/12 19:22:13 tom Exp $ */ +/* $XTermId: scrollback.c,v 1.23 2022/03/09 00:38:51 tom Exp $ */ /* - * Copyright 2009-2019,2020 by Thomas E. Dickey + * Copyright 2009-2020,2022 by Thomas E. Dickey * * All Rights Reserved * @@ -95,10 +95,10 @@ addScrollback(TScreen *screen) } /* allocate the new data */ - block = allocScrnData(screen, 1, ncols); + block = allocScrnData(screen, 1, ncols, False); /* record the new data in the index */ - setupLineData(screen, where, (Char *) block, 1, ncols); + setupLineData(screen, where, (Char *) block, 1, ncols, False); TRACE(("...storing new FIFO data in slot %d: %p->%p\n", which, (void *) where, block)); Index: xsrc/external/mit/xterm/dist/xterm.h diff -u xsrc/external/mit/xterm/dist/xterm.h:1.6 xsrc/external/mit/xterm/dist/xterm.h:1.7 --- xsrc/external/mit/xterm/dist/xterm.h:1.6 Sun Jan 9 09:17:31 2022 +++ xsrc/external/mit/xterm/dist/xterm.h Mon Jul 11 19:26:45 2022 @@ -1,7 +1,7 @@ -/* $XTermId: xterm.h,v 1.902 2021/09/19 18:27:35 tom Exp $ */ +/* $XTermId: xterm.h,v 1.910 2022/03/09 00:39:01 tom Exp $ */ /* - * Copyright 1999-2020,2021 by Thomas E. Dickey + * Copyright 1999-2021,2022 by Thomas E. Dickey * * All Rights Reserved * @@ -538,6 +538,7 @@ extern char **environ; #define XtNhpLowerleftBugCompat "hpLowerleftBugCompat" #define XtNi18nSelections "i18nSelections" #define XtNiconHint "iconHint" +#define XtNindicatorFormat "indicatorFormat" #define XtNinitialFont "initialFont" #define XtNinternalBorder "internalBorder" #define XtNitalicULMode "italicULMode" @@ -745,6 +746,7 @@ extern char **environ; #define XtCHpLowerleftBugCompat "HpLowerleftBugCompat" #define XtCI18nSelections "I18nSelections" #define XtCIconHint "IconHint" +#define XtCIndicatorFormat "IndicatorFormat" #define XtCInitialFont "InitialFont" #define XtCJumpScroll "JumpScroll" #define XtCKeepClipboard "KeepClipboard" @@ -1064,7 +1066,9 @@ extern void CursorDown (TScreen * /* scr extern void CursorForward (XtermWidget /* xw */, int /* n */); extern void CursorNextLine (XtermWidget /* xw */, int /* count */); extern void CursorPrevLine (XtermWidget /* xw */, int /* count */); +extern void CursorRestore2 (XtermWidget /* xw */, SavedCursor * /* sc */); extern void CursorRestore (XtermWidget /* xw */); +extern void CursorSave2 (XtermWidget /* xw */, SavedCursor * /* sc */); extern void CursorSave (XtermWidget /* xw */); extern void CursorSet (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* flags */); extern void CursorUp (TScreen * /* screen */, int /* n */); @@ -1076,7 +1080,14 @@ extern int set_cur_col(TScreen * /* scre extern int set_cur_row(TScreen * /* screen */, int /* value */); #else #define set_cur_col(screen, value) screen->cur_col = value -#define set_cur_row(screen, value) screen->cur_row = value +#define set_cur_row(screen, value) \ + do { \ + int row_value = value; \ + if_STATUS_LINE(screen, { \ + row_value = LastRowNumber(screen); \ + }); \ + screen->cur_row = row_value; \ + } while (0) #endif /* cursorfont.c */ @@ -1180,7 +1191,7 @@ extern int creat_as (uid_t /* uid */, gi extern int getVisualDepth (XtermWidget /* xw */); extern int ignore_x11_error(Display * /* dpy */, XErrorEvent * /* event */); extern int open_userfile (uid_t /* uid */, gid_t /* gid */, char * /* path */, Bool /* append */); -extern int update_winsize(int /* fd */, int /* rows */, int /* cols */, int /* height */, int /* width */); +extern int update_winsize (TScreen * /* screen */, int /* rows */, int /* cols */, int /* height */, int /* width */); extern int xerror (Display * /* d */, XErrorEvent * /* ev */); extern int xioerror (Display * /* dpy */); extern int xtermClosestColor (XtermWidget /* xw */, int /* red */, int /* green */, int /* blue */); @@ -1420,16 +1431,16 @@ extern void writePtyData (int /* f */, #define _NET_WM_STATE_TOGGLE 2 /* toggle property */ extern Bool non_blank_line (TScreen */* screen */, int /* row */, int /* col */, int /* len */); -extern Char * allocScrnData (TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */); +extern Char * allocScrnData (TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */); extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned /* nrow */, unsigned /* ncol */, ScrnPtr * /* addr */); extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */); -extern int ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */); extern size_t ScrnPointers (TScreen * /* screen */, size_t /* len */); extern void ClearBufRows (XtermWidget /* xw */, int /* first */, int /* last */); extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */); extern void CopyCells (TScreen * /* screen */, LineData * /* src */, LineData * /* dst */, int /* col */, int /* len */, Bool /* down */); extern void FullScreen (XtermWidget /* xw */, int /* mode */); extern void FreeMarkGCs (XtermWidget /* xw */); +extern void ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */); extern void ScrnAllocBuf (XtermWidget /* xw */); extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned /* n */); @@ -1444,7 +1455,7 @@ extern void ScrnRefresh (XtermWidget /* extern void ScrnUpdate (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */); extern void ScrnWriteText (XtermWidget /* xw */, IChar * /* str */, unsigned /* flags */, CellColor /* cur_fg_bg */, unsigned /* length */); extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, CLineData * /* ld */); -extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */); +extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */); extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *); #if OPT_TRACE && OPT_TRACE_FLAGS @@ -1569,6 +1580,7 @@ extern int dimRound (double /* value */) extern int drawXtermText (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 */); extern void ClearRight (XtermWidget /* xw */, int /* n */); extern void ClearScreen (XtermWidget /* xw */); extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */); Index: xsrc/external/mit/xterm/dist/xterm.man diff -u xsrc/external/mit/xterm/dist/xterm.man:1.20 xsrc/external/mit/xterm/dist/xterm.man:1.21 --- xsrc/external/mit/xterm/dist/xterm.man:1.20 Sun Jan 9 09:17:31 2022 +++ xsrc/external/mit/xterm/dist/xterm.man Mon Jul 11 19:26:45 2022 @@ -1,7 +1,7 @@ '\" t -.\" $XTermId: xterm.man,v 1.852 2021/09/22 23:29:09 tom Exp $ +.\" $XTermId: xterm.man,v 1.856 2022/02/22 09:11:42 tom Exp $ .\" -.\" Copyright 1996-2020,2021 by Thomas E. Dickey +.\" Copyright 1996-2021,2022 by Thomas E. Dickey .\" .\" All Rights Reserved .\" @@ -316,8 +316,8 @@ one per line. The message is written to the standard output. After printing the message, \fI\*n\fP exits. \fI\*N\fP generates this message, sorting it and noting whether -a \*(``\fB\-\fR\fIoption\fP\*('' -or a \*(``\fB+\fR\fIoption\fP\*('' turns the feature on or off, +a \*(``\fB\-\fIoption\fR\*('' +or a \*(``\fB+\fIoption\fR\*('' turns the feature on or off, since some features historically have been one or the other. \fI\*N\fP generates a concise help message (multiple options per line) when an unknown option is used, e.g., @@ -1510,7 +1510,7 @@ Abbreviated options also are supported, It also uses the X Toolkit resource types (such as booleans, colors, -fonts, +fonts, integers, and strings) along with their respective converters. @@ -1529,7 +1529,7 @@ Again, the actual resource type is a str parsed and used when needed. .PP Application specific resources -(e.g., \*(``\fB__default_class__.\fP\fINAME\fP\*('') follow: +(e.g., \*(``\fB__default_class__.\fINAME\fR\*('') follow: .SS Application Resources .TP 8 .B "backarrowKeyIsErase\fP (class\fB BackarrowKeyIsErase\fP)" @@ -2191,14 +2191,14 @@ than prepending the string to the icon t The following resources are specified as part of the \fIvt100\fP widget (class \fIVT100\fP). They are specified by patterns such as -\*(``\fB__default_class__.vt100.\fP\fINAME\fP\*(''. +\*(``\fB__default_class__.vt100.\fINAME\fR\*(''. .PP If your \fI\*n\fP is configured to support the \*(``toolbar\*('', then those patterns need an extra level for the form-widget which holds the toolbar and vt100 widget. A wildcard between the top-level \*(``__default_class__\*('' and the \*(``vt100\*('' widget makes the resource settings work for either, -e.g., \*(``\fB__default_class__*vt100.\fP\fINAME\fP\*(''. +e.g., \*(``\fB__default_class__*vt100.\fINAME\fR\*(''. .TP 8 .B "activeIcon\fP (class\fB ActiveIcon\fP)" Specifies whether or not active icon windows are to be used when the @@ -2296,7 +2296,7 @@ the X protocol SendEvent request) should The default is \*(``false\*('' meaning they are discarded. Note that allowing such events would create a very large security hole, therefore enabling this resource forcefully disables -the \fBallow\fP\fIXXX\fP\fBOps\fR resources. +the \fBallow\fIXXX\fBOps\fR resources. The default is \*(``false\*(''. .TP .B "allowTcapOps\fP (class\fB AllowTcapOps\fP)" @@ -3560,6 +3560,9 @@ Specifies the pointsize of the fifth alt .B "faceSize6\fP (class\fB FaceSize6\fP)" Specifies the pointsize of the sixth alternative font. .TP 8 +.B "faceSize7\fP (class\fB FaceSize7\fP)" +Specifies the pointsize of the seventh alternative font. +.TP 8 .B "fastScroll\fP (class\fB FastScroll\fP)" Modifies the effect of jump scroll (\fBjumpScroll\fP) by suppressing screen refreshes @@ -3896,6 +3899,21 @@ Specifies the font for the miniature act is compiled into \fI\*n\fR. The default is \*(``nil2\*(''. .TP 8 +.B "indicatorFormat\fP (class\fB IndicatorFormat\fP)" +When displaying the status line using the \fIindicator\fP mode +(i.e., selecting DECSSDT line type 1), +format the status using this resource. +.IP +The default value of the resource displays the version of \fI\*n\fR, +the cursor position and the time/date: +.NS +\*(``%{version%}\ \ %{position%}\ \ %{unixtime%}\*('' +.NE +.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. +.TP 8 .B "initialFont\fP (class\fB InitialFont\fP)" Specifies which of the VT100 fonts to use initially. Values are the same as for the \fBset\-vt\-font\fP action. @@ -4463,7 +4481,7 @@ The default values for \fBon2Clicks\fP a There is no default value for \fBon4Clicks\fP or \fBon5Clicks\fP, making those inactive. On startup, \fI\*n\fP determines the maximum number of clicks -by the \fBon\fP\fIX\fP\fBClicks\fP resource values which are set. +by the \fBon\fIX\fBClicks\fR resource values which are set. .TP 8 .B "openIm\fP (class\fB OpenIm\fP)" Tells \fI\*n\fP whether to open the input method at startup. @@ -5055,7 +5073,7 @@ Mouse protocol will never send special e .RE .IP \fI\*N\fP interprets a control sequence which can change this -setting between +setting between \*(``true\*('' and \*(``false\*(''. The default is \*(``false\*(''. @@ -5479,7 +5497,7 @@ The \fBximFont\fP resource is provided t The following resources are specified as part of the \fItek4014\fP widget (class \fITek4014\fP). These are specified by patterns -such as \*(``\fB__default_class__.tek4014.\fP\fINAME\fP\*('': +such as \*(``\fB__default_class__.tek4014.\fINAME\fR\*('': .TP 8 .B "font2\fP (class\fB Font\fP)" Specifies font number 2 to use in the Tektronix window. @@ -5518,7 +5536,7 @@ Specifies the width of the Tektronix win The resources that may be specified for the various menus are described in the documentation for the Athena \fBSimpleMenu\fP widget. The name and classes of the entries in each of the menus are listed below. -Resources named \*(``\fBline\fR\fIN\fR\*('' where \fIN\fR is a number +Resources named \*(``\fBline\fIN\fR\*('' where \fIN\fR is a number are separators with class \fBSmeLine\fR. .PP As with all X resource-based widgets, @@ -5529,19 +5547,19 @@ The \fBMain Options\fP menu (widget name has the following entries: .TP 8 .B "toolbar\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-toolbar(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-toolbar(\fItoggle\fB)\fR action. .TP 8 .B "securekbd\fP (class\fB SmeBSB\fP)" This entry invokes the \fBsecure()\fP action. .TP 8 .B "allowsends\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBallow\-send\-events(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBallow\-send\-events(\fItoggle\fB)\fR action. .TP 8 .B "redraw\fP (class\fB SmeBSB\fP)" This entry invokes the \fBredraw()\fP action. .TP 8 .B "logging\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBlogging(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBlogging(\fItoggle\fB)\fR action. .TP 8 .B "print\-immediate\fP (class\fB SmeBSB\fP)" This entry invokes the \fBprint\-immediate()\fP action. @@ -5562,57 +5580,57 @@ This entry invokes the \fBdump\-html()\f This entry invokes the \fBdump\-svg()\fP action. .TP 8 .B "8\-bit\-control\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-8\-bit\-control(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-8\-bit\-control(\fItoggle\fB)\fR action. .TP 8 .B "backarrow\ key\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-backarrow(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-backarrow(\fItoggle\fB)\fR action. .TP 8 .B "num\-lock\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-num\-lock(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-num\-lock(\fItoggle\fB)\fR action. .TP 8 .B "alt\-esc\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBalt\-sends\-escape(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBalt\-sends\-escape(\fItoggle\fB)\fR action. .TP 8 .B "meta\-esc\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBmeta\-sends\-escape(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBmeta\-sends\-escape(\fItoggle\fB)\fR action. .TP 8 .B "delete\-is\-del\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBdelete\-is\-del(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBdelete\-is\-del(\fItoggle\fB)\fR action. .TP 8 .B "oldFunctionKeys\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-old\-function\-keys(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-old\-function\-keys(\fItoggle\fB)\fR action. .TP 8 .B "hpFunctionKeys\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-hp\-function\-keys(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-hp\-function\-keys(\fItoggle\fB)\fR action. .TP 8 .B "scoFunctionKeys\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-sco\-function\-keys(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-sco\-function\-keys(\fItoggle\fB)\fR action. .TP 8 .B "sunFunctionKeys\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-sun\-function\-keys(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-sun\-function\-keys(\fItoggle\fB)\fR action. .TP 8 .B "sunKeyboard\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBsunKeyboard(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBsunKeyboard(\fItoggle\fB)\fR action. .TP 8 .B "suspend\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBsend\-signal(\fP\fItstp\fP\fB)\fP action +This entry invokes the \fBsend\-signal(\fItstp\fB)\fR action on systems that support job control. .TP 8 .B "continue\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBsend\-signal(\fP\fIcont\fP\fB)\fP action +This entry invokes the \fBsend\-signal(\fIcont\fB)\fR action on systems that support job control. .TP 8 .B "interrupt\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBsend\-signal(\fP\fIint\fP\fB)\fP action. +This entry invokes the \fBsend\-signal(\fIint\fB)\fR action. .TP 8 .B "hangup\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBsend\-signal(\fP\fIhup\fP\fB)\fP action. +This entry invokes the \fBsend\-signal(\fIhup\fB)\fR action. .TP 8 .B "terminate\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBsend\-signal(\fP\fIterm\fP\fB)\fP action. +This entry invokes the \fBsend\-signal(\fIterm\fB)\fR action. .TP 8 .B "kill\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBsend\-signal(\fP\fIkill\fP\fB)\fP action. +This entry invokes the \fBsend\-signal(\fIkill\fB)\fR action. .TP 8 .B "quit\fP (class\fB SmeBSB\fP)" This entry invokes the \fBquit()\fP action. @@ -5622,62 +5640,62 @@ The \fBVT Options\fP menu (widget name \ has the following entries: .TP 8 .B "scrollbar\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-scrollbar(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-scrollbar(\fItoggle\fB)\fR action. .TP 8 .B "jumpscroll\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-jumpscroll(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-jumpscroll(\fItoggle\fB)\fR action. .TP 8 .B "reversevideo\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-reverse\-video(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-reverse\-video(\fItoggle\fB)\fR action. .TP 8 .B "autowrap\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-autowrap(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-autowrap(\fItoggle\fB)\fR action. .TP 8 .B "reversewrap\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-reversewrap(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-reversewrap(\fItoggle\fB)\fR action. .TP 8 .B "autolinefeed\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-autolinefeed(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-autolinefeed(\fItoggle\fB)\fR action. .TP 8 .B "appcursor\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-appcursor(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-appcursor(\fItoggle\fB)\fR action. .TP 8 .B "appkeypad\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-appkeypad(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-appkeypad(\fItoggle\fB)\fR action. .TP 8 .B "scrollkey\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-scroll\-on\-key(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-scroll\-on\-key(\fItoggle\fB)\fR action. .TP 8 .B "scrollttyoutput\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-scroll\-on\-tty\-output(\fP\fItoggle\fP\fB)\fP +This entry invokes the \fBset\-scroll\-on\-tty\-output(\fItoggle\fB)\fR action. .TP 8 .B "allow132\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-allow132(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-allow132(\fItoggle\fB)\fR action. .TP 8 .B "cursesemul\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-cursesemul(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-cursesemul(\fItoggle\fB)\fR action. .TP 8 .B "keepSelection\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-keep\-selection(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-keep\-selection(\fItoggle\fB)\fR action. .TP 8 .B "selectToClipboard\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-keep\-clipboard(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-keep\-clipboard(\fItoggle\fB)\fR action. .TP 8 .B "visualbell\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-visual\-bell(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-visual\-bell(\fItoggle\fB)\fR action. .TP 8 .B "bellIsUrgent\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-bellIsUrgent(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-bellIsUrgent(\fItoggle\fB)\fR action. .TP 8 .B "poponbell\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-pop\-on\-bell(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-pop\-on\-bell(\fItoggle\fB)\fR action. .TP 8 .B "cursorblink\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-cursorblink(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-cursorblink(\fItoggle\fB)\fR action. .TP 8 .B "titeInhibit\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-titeInhibit(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-titeInhibit(\fItoggle\fB)\fR action. .TP 8 .B "activeicon\fP (class\fB SmeBSB\fP)" This entry toggles active icons on and off if this feature was @@ -5696,127 +5714,127 @@ This entry invokes the \fBhard\-reset()\ This entry invokes the \fBclear\-saved\-lines()\fP action. .TP 8 .B "tekshow\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-visibility(\fP\fItek,toggle\fP\fB)\fP action. +This entry invokes the \fBset\-visibility(\fItek,toggle\fB)\fR action. .TP 8 .B "tekmode\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-terminal\-type(\fP\fItek\fP\fB)\fP action. +This entry invokes the \fBset\-terminal\-type(\fItek\fB)\fR action. .TP 8 .B "vthide\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-visibility(\fP\fIvt,off\fP\fB)\fP action. +This entry invokes the \fBset\-visibility(\fIvt,off\fB)\fR action. .TP 8 .B "altscreen\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-altscreen(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-altscreen(\fItoggle\fB)\fR action. .TP 8 .B "sixelScrolling\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-sixel\-scrolling(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-sixel\-scrolling(\fItoggle\fB)\fR action. .TP 8 .B "privateColorRegisters\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-private\-colors(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBset\-private\-colors(\fItoggle\fB)\fR action. . .PP The \fBVT Fonts\fP menu (widget name \fIfontMenu\fP) has the following entries: .TP 8 .B "fontdefault\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fId\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fId\fB)\fR action, setting the font using the \fBfont\fP (default) resource, e.g., \*(``Default\*('' in the menu. .TP 8 .B "font1\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fI1\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fI1\fB)\fR action, setting the font using the \fBfont1\fP resource, e.g., \*(``Unreadable\*('' in the menu. .TP 8 .B "font2\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fI2\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fI2\fB)\fR action, setting the font using the \fBfont2\fP resource, e.g., \*(``Tiny\*('' in the menu. .TP 8 .B "font3\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fI3\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fI3\fB)\fR action, setting the font using the \fBfont3\fP resource, e.g., \*(``Small\*('' in the menu. .TP 8 .B "font4\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fI4\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fI4\fB)\fR action, letting the font using the \fBfont4\fP resource, e.g., \*(``Medium\*('' in the menu. .TP 8 .B "font5\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fI5\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fI5\fB)\fR action, letting the font using the \fBfont5\fP resource, e.g., \*(``Large\*('' in the menu. .TP 8 .B "font6\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fI6\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fI6\fB)\fR action, letting the font using the \fBfont6\fP resource, e.g., \*(``Huge\*('' in the menu. .TP 8 .B "font7\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fI7\fP\fB)\fP action, +This entry invokes the \fBset\-vt\-font(\fI7\fB)\fR action, letting the font using the \fBfont7\fP resource, e.g., \*(``Enormous\*('' in the menu. .TP 8 .B "fontescape\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fIe\fP\fB)\fP action. +This entry invokes the \fBset\-vt\-font(\fIe\fB)\fR action. .TP 8 .B "fontsel\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-vt\-font(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-vt\-font(\fIs\fB)\fR action. .TP 8 .B "allow\-bold\-fonts\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBallow\-bold\-fonts(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBallow\-bold\-fonts(\fItoggle\fB)\fR action. .TP 8 .B "font\-linedrawing\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-font\-linedrawing(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-font\-linedrawing(\fIs\fB)\fR action. .TP 8 .B "font\-packed\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-font\-packed(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-font\-packed(\fIs\fB)\fR action. .TP 8 .B "font\-doublesize\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-font\-doublesize(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-font\-doublesize(\fIs\fB)\fR action. .TP 8 .B "render\-font\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-render\-font(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-render\-font(\fIs\fB)\fR action. .TP 8 .B "utf8\-fonts\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-utf8\-fonts(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-utf8\-fonts(\fIs\fB)\fR action. .TP 8 .B "utf8\-mode\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-utf8\-mode(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-utf8\-mode(\fIs\fB)\fR action. .TP 8 .B "utf8\-title\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-utf8\-title(\fP\fIs\fP\fB)\fP action. +This entry invokes the \fBset\-utf8\-title(\fIs\fB)\fR action. .TP 8 .B "allow\-color\-ops\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBallow\-color\-ops(\fP\fItoggle\fP\fB)\fP action. +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(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBallow\-fonts\-ops(\fItoggle\fB)\fR action. .TP 8 .B "allow\-tcap\-ops\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBallow\-tcap\-ops(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBallow\-tcap\-ops(\fItoggle\fB)\fR action. .TP 8 .B "allow\-title\-ops\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBallow\-title\-ops(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBallow\-title\-ops(\fItoggle\fB)\fR action. .TP 8 .B "allow\-window\-ops\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBallow\-window\-ops(\fP\fItoggle\fP\fB)\fP action. +This entry invokes the \fBallow\-window\-ops(\fItoggle\fB)\fR action. . .PP The \fBTek Options\fP menu (widget name \fItekMenu\fP) has the following entries: .TP 8 .B "tektextlarge\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-tek\-text(\fP\fIlarge\fP\fB)\fP action. +This entry invokes the \fBset\-tek\-text(\fIlarge\fB)\fR action. .TP 8 .B "tektext2\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-tek\-text(\fP\fI2\fP\fB)\fP action. +This entry invokes the \fBset\-tek\-text(\fI2\fB)\fR action. .TP 8 .B "tektext3\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-tek\-text(\fP\fI3\fP\fB)\fP action. +This entry invokes the \fBset\-tek\-text(\fI3\fB)\fR action. .TP 8 .B "tektextsmall\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-tek\-text(\fP\fIsmall\fP\fB)\fP action. +This entry invokes the \fBset\-tek\-text(\fIsmall\fB)\fR action. .TP 8 .B "tekpage\fP (class\fB SmeBSB\fP)" This entry invokes the \fBtek\-page()\fP action. @@ -5828,13 +5846,13 @@ This entry invokes the \fBtek\-reset()\f This entry invokes the \fBtek\-copy()\fP action. .TP 8 .B "vtshow\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-visibility(\fP\fIvt,toggle\fP\fB)\fP action. +This entry invokes the \fBset\-visibility(\fIvt,toggle\fB)\fR action. .TP 8 .B "vtmode\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-terminal\-type(\fP\fIvt\fP\fB)\fP action. +This entry invokes the \fBset\-terminal\-type(\fIvt\fB)\fR action. .TP 8 .B "tekhide\fP (class\fB SmeBSB\fP)" -This entry invokes the \fBset\-visibility(\fP\fItek,toggle\fP\fB)\fP action. +This entry invokes the \fBset\-visibility(\fItek,toggle\fB)\fR action. .\" .SS Scrollbar Resources .PP @@ -7395,7 +7413,7 @@ Xt does not allow you to put a null char .B "keymap(\fIname\fP)" This action dynamically defines a new translation table whose resource name is \fIname\fP with the suffix \*(``\fIKeymap\fP\*('' -(i.e., \fIname\fP\fBKeymap\fP, where case is significant). +(i.e., \fIname\fBKeymap\fR, where case is significant). The name \fINone\fP restores the original translation table. .TP 8 .B "larger\-vt\-font()" @@ -8228,9 +8246,9 @@ Instead, use \fBprintf\fP (POSIX). For example, to set the \fIwindow title\fP to \*(``Hello world!\*('', you could use one of these commands in a script: .NS -printf \*(AQ\\033]2;Hello world!\\033\\\*(AQ +printf \*(AQ\\033]2;Hello world!\\033\\\\\*(AQ printf \*(AQ\\033]2;Hello world!\\007\*(AQ -printf \*(AQ\\033]2;%s\\033\\\*(AQ "Hello world!" +printf \*(AQ\\033]2;%s\\033\\\\\*(AQ "Hello world!" printf \*(AQ\\033]2;%s\\007\*(AQ "Hello world!" .NE .PP @@ -8241,9 +8259,9 @@ newline from the output. Some programs (such as \fBscreen\fP(1)) set both window- and icon-titles at the same time, using a slightly different control sequence: .NS -printf \*(AQ\\033]0;Hello world!\\033\\\*(AQ +printf \*(AQ\\033]0;Hello world!\\033\\\\\*(AQ printf \*(AQ\\033]0;Hello world!\\007\*(AQ -printf \*(AQ\\033]0;%s\\033\\\*(AQ "Hello world!" +printf \*(AQ\\033]0;%s\\033\\\\\*(AQ "Hello world!" printf \*(AQ\\033]0;%s\\007\*(AQ "Hello world!" .NE .PP @@ -8253,9 +8271,9 @@ Some will make a distinction and allow y You can tell \fI\*n\fP to ask for this with a different parameter in the control sequence: .NS -printf \*(AQ\\033]1;Hello world!\\033\\\*(AQ +printf \*(AQ\\033]1;Hello world!\\033\\\\\*(AQ printf \*(AQ\\033]1;Hello world!\\007\*(AQ -printf \*(AQ\\033]1;%s\\033\\\*(AQ "Hello world!" +printf \*(AQ\\033]1;%s\\033\\\\\*(AQ "Hello world!" printf \*(AQ\\033]1;%s\\007\*(AQ "Hello world!" .NE .