# ------------------------------------------------------------------------------
# charproc.c | 13 ++++++++++++-
# main.c | 1 +
# ptyx.h | 3 ++-
# screen.c | 9 +++++----
# version.h | 2 +-
# xterm.log.html | 15 +++++++++++++++
# 6 files changed, 36 insertions, 7 deletions
# ------------------------------------------------------------------------------
Index: charproc.c
--- xterm-97+/charproc.c Sun Apr 25 21:51:51 1999
+++ xterm-98/charproc.c Mon Apr 26 18:40:33 1999
@@ -361,6 +361,7 @@
#endif
static Boolean defaultFALSE = FALSE;
static Boolean defaultTRUE = TRUE;
+static Boolean defaultMAYBE = MAYBE;
static int defaultZERO = 0;
static int defaultIntBorder = DEFBORDER;
static int defaultSaveLines = SAVELINES;
@@ -586,7 +587,7 @@
XtRBoolean, (XtPointer) &defaultFALSE},
{XtNbackarrowKey, XtCBackarrowKey, XtRBoolean, sizeof(Boolean),
XtOffsetOf(XtermWidgetRec, screen.backarrow_key),
- XtRBoolean, (XtPointer) &defaultTRUE},
+ XtRBoolean, (XtPointer) &defaultMAYBE},
{XtNbellSuppressTime, XtCBellSuppressTime, XtRInt, sizeof(int),
XtOffsetOf(XtermWidgetRec, screen.bellSuppressTime),
XtRInt, (XtPointer) &defaultBellSuppressTime},
@@ -3549,7 +3550,16 @@
buf[1] = '\n';
i++;
}
+#if OPT_WIDE_CHARS
+ {
+ char buffer[2];
+ buffer[0] = buf[0];
+ buffer[1] = buf[1];
+ v_write(fd, buffer, i);
+ }
+#else
v_write(fd, (char *)buf, i);
+#endif
/* If send/receive mode is reset, we echo characters locally */
if ((term->keyboard.flags & MODE_SRM) == 0) {
@@ -3955,6 +3965,7 @@
wnew->screen.visualbell = request->screen.visualbell;
#if OPT_NUM_LOCK
wnew->misc.real_NumLock = request->misc.real_NumLock;
+ wnew->misc.num_lock = request->misc.num_lock;
#endif
#if OPT_SHIFT_KEYS
wnew->misc.shift_keys = request->misc.shift_keys;
Index: main.c
--- xterm-97+/main.c Sun Apr 25 21:23:24 1999
+++ xterm-98/main.c Mon Apr 26 18:33:51 1999
@@ -2398,6 +2398,7 @@
initial_erase = sg.sg_erase;
#endif /* USE_SYSV_TERMIO */
}
+ if (term->screen.backarrow_key == MAYBE)
if (initial_erase == 0177) { /* see input.c */
term->keyboard.flags &= ~MODE_DECBKM;
}
Index: ptyx.h
--- xterm-97+/ptyx.h Sun Apr 25 21:23:52 1999
+++ xterm-98/ptyx.h Mon Apr 26 18:31:27 1999
@@ -249,7 +249,8 @@
#define NBOX 5 /* Number of Points in box */
#define NPARAM 10 /* Max. parameters */
-#define MINHILITE 32
+#define MAYBE 2 /* not exactly True */
+#define MAYBENOT 3 /* not exactly False */
typedef struct {
unsigned char a_type;
Index: screen.c
--- xterm-97+/screen.c Sun Apr 25 20:55:06 1999
+++ xterm-98/screen.c Mon Apr 26 20:56:09 1999
@@ -614,6 +614,7 @@
#endif
#if OPT_WIDE_CHARS
Char *widec = 0;
+#define WIDEC_PTR(cell) widec ? &widec[cell] : 0
#endif
Char cs = 0;
register Char *chars;
@@ -761,11 +762,11 @@
__FILE__, __LINE__,
lastind, col,
visibleChars(
- PAIRED_CHARS(&chars[lastind], &widec[lastind]),
+ PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
col - lastind)))
x = drawXtermText(screen, flags, gc, x, y,
cs,
- PAIRED_CHARS(&chars[lastind], &widec[lastind]),
+ PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
col - lastind);
resetXtermGC(screen, flags, hilite);
@@ -794,10 +795,10 @@
TRACE(("%s @%d, calling drawXtermText %d..%d:%s\n",
__FILE__, __LINE__,
lastind, col,
- visibleChars(PAIRED_CHARS(&chars[lastind], &widec[lastind]), col - lastind)))
+ visibleChars(PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)), col - lastind)))
drawXtermText(screen, flags, gc, x, y,
cs,
- PAIRED_CHARS(&chars[lastind], &widec[lastind]),
+ PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
col - lastind);
resetXtermGC(screen, flags, hilite);
}
Index: version.h
--- xterm-97+/version.h Sun Apr 25 21:24:36 1999
+++ xterm-98/version.h Mon Apr 26 21:04:55 1999
@@ -6,5 +6,5 @@
* XFree86 to which this version of xterm has been built. The number in
* parentheses is my patch number (T.Dickey).
*/
-#define XTERM_PATCH 97
+#define XTERM_PATCH 98
#define XFREE86_VERSION "XFree86 3.9Pk"
Index: xterm.log.html
--- xterm-97+/xterm.log.html Sun Apr 25 21:25:38 1999
+++ xterm-98/xterm.log.html Mon Apr 26 20:57:36 1999
@@ -41,6 +41,7 @@
xc/programs/Xserver/hw/xfree86).
<UL>
+<LI><A HREF="#xterm_98">Patch #98 - 1999/4/26 - XFree86 3.9Pk</A>
<LI><A HREF="#xterm_97">Patch #97 - 1999/4/25 - XFree86 3.9Pk</A>
<LI><A HREF="#xterm_96">Patch #96 - 1999/4/19 - XFree86 3.9Pj</A>
<LI><A HREF="#xterm_95">Patch #95 - 1999/4/5 - XFree86 3.9Ph</A>
@@ -140,6 +141,20 @@
<LI><A HREF="#xterm_02">Patch #2 - 1996/1/7</A>
<LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
</UL>
+
+<H1><A NAME="xterm_98">Patch #98 - 1999/4/26 - XFree86 3.9Pk</A></H1>
+<ul>
+ <li>correct data manipulation in unparseputc(), broken for
+ little-endian machines by patch #97's UTF-8 changes. This meant that
+ keyboard input on SunOS did not work, though Linux i386 was fine.
+
+ <li>modify initialization for backarrowKey and logic for initial-erase
+ to prevent the initial-erase from overriding an explicitly set
+ backarrowKey resource (reported by Vikas Agnihotri).
+
+ <li>add a missing null-pointer check in ScrnRefresh, for the
+ wide-characters configuration.
+</ul>
<H1><A NAME="xterm_97">Patch #97 - 1999/4/25 - XFree86 3.9Pk</A></H1>
<ul>