xterm-98.patch.txt

# ------------------------------------------------------------------------------
#  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>