ncurses 6.2 - patch 20201010
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 11 Oct 2020 00:40:41 +0000 (00:40 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 11 Oct 2020 00:40:41 +0000 (00:40 +0000)
+ correct sgr in aaa+rv (report by Florian Weimer) -TD
+ fix some sgr inconsistencies in d230c, ibm6153, ibm6154,
  ncrvt100an -TD
+ improve tic's check for errors detected in tparm (prompted by
  discussion with Florian Weimer).
+ set output-mode to binary in experimental Windows-10 driver (Juergen
  Pfeifer).
+ add tmux-direct (tmux #2370, Debian #895754)

15 files changed:
NEWS
VERSION
dist.mk
misc/terminfo.src
ncurses/base/lib_set_term.c
ncurses/tinfo/lib_tparm.c
ncurses/tinfo/lib_win32con.c
package/debian-mingw/changelog
package/debian-mingw64/changelog
package/debian/changelog
package/mingw-ncurses.nsi
package/mingw-ncurses.spec
package/ncurses.spec
package/ncursest.spec
progs/tic.c

diff --git a/NEWS b/NEWS
index b2420cf4865c5729fc4b02161ff116dedb651850..47a36e0282375244ee139ebcbaf7d3088e35851a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -26,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.3572 2020/10/03 22:12:49 tom Exp $
+-- $Id: NEWS,v 1.3575 2020/10/11 00:04:33 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -46,12 +46,21 @@ See the AUTHORS file for the corresponding full names.
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
+20201010
+       + correct sgr in aaa+rv (report by Florian Weimer) -TD
+       + fix some sgr inconsistencies in d230c, ibm6153, ibm6154,
+         ncrvt100an -TD
+       + improve tic's check for errors detected in tparm (prompted by
+         discussion with Florian Weimer).
+       + set output-mode to binary in experimental Windows-10 driver (Juergen
+         Pfeifer).
+
 20201003
        + remove output-related checks for nl/nonl (report by Leon Winter).
        + change tmux's kbs to ^? (report by Premysl Eric Janouch)
        + simplify mlterm initialization with DECSTR -TD
        + fix a typo in man/curs_terminfo.3 (Reuben Thomas).
-       + add tmux-direct (tmux #2370)
+       + add tmux-direct (tmux #2370, Debian #895754)
        + add user-defined capabilities from mintty to Caps-ncurses, for
          checking consistency with tic.
 
diff --git a/VERSION b/VERSION
index 1a8505476e05b56cab95a0819a90f90caf713672..b1897d5f27e3583392793763a9d28b018bb037f9 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:10 6.2     20201003
+5:0:10 6.2     20201010
diff --git a/dist.mk b/dist.mk
index a6bb3a9f9be6ccd4ebcd409135e2c113d33c6341..65a485102d8de0c9a340d2a71c0818d5c46e75c1 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -26,7 +26,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.1379 2020/10/03 12:29:29 tom Exp $
+# $Id: dist.mk,v 1.1380 2020/10/10 08:40:40 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -38,7 +38,7 @@ SHELL = /bin/sh
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 6
 NCURSES_MINOR = 2
-NCURSES_PATCH = 20201003
+NCURSES_PATCH = 20201010
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index ae28f1437a3868d10c7a3f03f8ced8fdecfa4abb..db0c834802e7fefc290d15a0d60609bf8e364967 100644 (file)
@@ -6,8 +6,8 @@
 # Report bugs and new terminal descriptions to
 #      bug-ncurses@gnu.org
 #
-#      $Revision: 1.821 $
-#      $Date: 2020/09/30 00:00:44 $
+#      $Revision: 1.825 $
+#      $Date: 2020/10/11 00:01:33 $
 #
 # The original header is preserved below for reference.  It is noted that there
 # is a "newer" version which differs in some cosmetic details (but actually
@@ -14533,8 +14533,8 @@ aaa+rv|ann arbor ambassador in reverse video,
        blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m,
        is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
        rs1=\E[H\E[7m\E[J$<156>,
-       sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p2%|%p3%!%t7;
-           %;%?%p7%t8;%;m\016,
+       sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p2%|%p3%!%|%t7
+           ;%;%?%p7%t8;%;m\016,
        sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m,
 # Ambassador with the DEC option, for partial vt100 compatibility.
 aaa+dec|ann arbor ambassador in dec vt100 mode,
@@ -16132,9 +16132,9 @@ d220-dg|Data General DASHER D220 color terminal in DG mode,
 d230c|d230|Data General DASHER D230C,
        blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=\r\n,
        rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m,
-       sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e
-           %{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}
-           %e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;,
+       sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}
+           %;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e
+           %{0}%;%PD50m\E)%?%p9%t6\016%e4\017%;,
        sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m,
        smul=\E[4;50m, use=dgkeys+7b, use=d220,
 
@@ -17374,12 +17374,12 @@ ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display,
        use=ibmega-c,
 ibm6154|IBM 6154 Color displays,
        blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
-       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p7%t;8%;%?%p6%t;1
            2%;m,
        sgr0=\E[0;10m, use=ibm5154,
 ibm6153|IBM 6153 Black & White display,
        blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
-       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p7%t;8%;%?%p6%t;1
            2%;m,
        sgr0=\E[0;10m, use=ibm5151,
 ibm6153-90|IBM 6153 Black & White display,
@@ -18985,7 +18985,7 @@ ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
            B\E)0\E%/0n\E[P\031$<200>,
        sc=\E7,
        sgr=%?%p9%t\016%e\017%;\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1
-           %p3%|%t;7%;%?%p4%t;5%;m$<100>,
+           %p3%|%t;7%;%?%p4%t;5%;m$<120>,
        sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
        smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
        tsl=\E[>+1$<70>,
@@ -26680,4 +26680,9 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #      + simplify mlterm initialization with DECSTR -TD
 #      + change tmux's kbs to ^? (report by Premysl Eric Janouch)
 #
+# 2020-10-10
+#      + correct sgr in aaa+rv (report by Florian Weimer) -TD
+#      + fix some sgr inconsistencies in d230c, ibm6153, ibm6154,
+#        ncrvt100an -TD
+#
 ######## SHANTIH!  SHANTIH!  SHANTIH!
index 53802209af9bce3dd40b3286d8e18c190ee03de1..8573fbe7d5225f7bf6bdaeeedafaaaeb48348f27 100644 (file)
@@ -54,7 +54,7 @@
 #undef CUR
 #define CUR SP_TERMTYPE
 
-MODULE_ID("$Id: lib_set_term.c,v 1.174 2020/09/09 19:43:00 juergen Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.175 2020/10/10 19:09:03 juergen Exp $")
 
 #ifdef USE_TERM_DRIVER
 #define MaxColors      InfoOf(sp).maxcolors
@@ -406,6 +406,11 @@ NCURSES_SP_NAME(_nc_setupscreen) (
     T(("setting output mode to binary"));
     fflush(output);
     setmode(output, O_BINARY);
+#endif
+#if defined(EXP_WIN32_DRIVER)
+    T(("setting output mode to binary"));
+    fflush(output);
+    _setmode(fileno(output), _O_BINARY);
 #endif
     NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_ARGx output, TRUE);
     sp->_lines = (NCURSES_SIZE_T) slines;
index 0f0c62a491ba93ce052a90206ebc2d51e98aea28..7f0b20b99f6720a13c6a4dbe337fe1708c0f2d09 100644 (file)
@@ -53,7 +53,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tparm.c,v 1.127 2020/06/13 21:59:52 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.128 2020/10/10 21:18:09 tom Exp $")
 
 /*
  *     char *
@@ -966,6 +966,13 @@ tparam_internal(const char *string, TPARM_DATA * data)
     get_space((size_t) 1);
     TPS(out_buff)[TPS(out_used)] = '\0';
 
+    if (TPS(stack_ptr) && !_nc_tparm_err) {
+       DEBUG(2, ("tparm: stack has %d item%s on return",
+                 TPS(stack_ptr),
+                 TPS(stack_ptr) == 1 ? "" : "s"));
+       _nc_tparm_err++;
+    }
+
     T((T_RETURN("%s"), _nc_visbuf(TPS(out_buff))));
     return (TPS(out_buff));
 }
index 6c92fe1fc156c6e20718262fb9cc09f52c684a01..e84f205145b0df8b0af3d7ca54ccad5fd506ea8b 100644 (file)
@@ -38,7 +38,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_win32con.c,v 1.2 2020/08/29 16:22:03 juergen Exp $")
+MODULE_ID("$Id: lib_win32con.c,v 1.3 2020/10/10 19:07:10 tom Exp $")
 
 #ifdef _NC_WINDOWS
 
@@ -71,7 +71,7 @@ static int  MapKey(WORD vKey);
 static int  AnsiKey(WORD vKey);
 
 static ULONGLONG tdiff(FILETIME fstart, FILETIME fend);
-\f  
+
 #define GenMap(vKey,key) MAKELONG(key, vKey)
 static const LONG keylist[] =
 {
@@ -124,7 +124,7 @@ NCURSES_EXPORT(int)
 _nc_console_vt_supported(void) {
     OSVERSIONINFO osvi;
     int res = 0;
-    
+
     T((T_CALLED("lib_win32con::_nc_console_vt_supported")));
     ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
     osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
@@ -180,13 +180,13 @@ IsConsoleHandle(HANDLE hdl)
     T((T_CALLED("lib_win32con::IsConsoleHandle(HANDLE=%p"),hdl));
 
     EnsureInit();
-    
+
     if (!GetConsoleMode(hdl, &dwFlag)) {
         T(("GetConsoleMode failed"));
     } else {
         result = TRUE;
     }
-    
+
     returnBool(result);
 }
 
@@ -246,12 +246,12 @@ _nc_console_fd2handle(int fd) {
 }
 
 NCURSES_EXPORT(int)
-    _nc_console_setmode(HANDLE hdl, const TTY *arg)
+_nc_console_setmode(HANDLE hdl, const TTY *arg)
 {
     DWORD dwFlag = 0;
     int code = ERR;
     HANDLE alt;
-    
+
     if (arg) {
 #ifdef TRACE
         TTY TRCTTY;
@@ -259,7 +259,7 @@ NCURSES_EXPORT(int)
 #define TRCTTYIN(flag)  TRCTTY.dwFlagIn=flag
 #else
 #define TRCTTYOUT(flag)
-#define TRCTTYIN(flag) 
+#define TRCTTYIN(flag)
 #endif
         T(("lib_win32con:_nc_console_setmode %s", _nc_trace_ttymode(arg)));
         if (hdl==WINCONSOLE.inp) {
@@ -270,7 +270,7 @@ NCURSES_EXPORT(int)
                 dwFlag &= ~(VT_FLAG_IN);
             TRCTTYIN(dwFlag);
             SetConsoleMode(hdl, dwFlag);
-            
+
             alt = OutHandle();
             dwFlag = arg->dwFlagOut;
             if (WINCONSOLE.isTermInfoConsole)
@@ -287,7 +287,7 @@ NCURSES_EXPORT(int)
                 dwFlag |= (VT_FLAG_OUT);
             TRCTTYOUT(dwFlag);
             SetConsoleMode(hdl, dwFlag);
-            
+
             alt=WINCONSOLE.inp;
             dwFlag = arg->dwFlagIn | ENABLE_MOUSE_INPUT;
             if (WINCONSOLE.isTermInfoConsole)
@@ -311,7 +311,7 @@ _nc_console_getmode(HANDLE hdl, TTY *arg)
     if (arg) {
         DWORD dwFlag = 0;
         HANDLE alt;
-        
+
         if (hdl==WINCONSOLE.inp) {
             if(GetConsoleMode(hdl,&dwFlag)) {
                 arg->dwFlagIn = dwFlag;
@@ -337,12 +337,12 @@ _nc_console_getmode(HANDLE hdl, TTY *arg)
 }
 
 NCURSES_EXPORT(int)
-    _nc_console_flush(HANDLE hdl)
+_nc_console_flush(HANDLE hdl)
 {
     int code=OK;
-    
+
     T((T_CALLED("lib_win32con::_nc_console_flush(hdl=%p"),hdl));
-    
+
     if (hdl != INVALID_HANDLE_VALUE) {
         if (hdl == WINCONSOLE.hdl ||
             hdl == WINCONSOLE.inp ||
@@ -356,7 +356,7 @@ NCURSES_EXPORT(int)
     }
     returnCode(code);
 }
-\f
+
 NCURSES_EXPORT(WORD)
 _nc_console_MapColor(bool fore, int color)
 {
@@ -384,28 +384,28 @@ static bool
 save_original_screen(void)
 {
     bool result = FALSE;
-    
+
     WINCONSOLE.save_region.Top = 0;
     WINCONSOLE.save_region.Left = 0;
     WINCONSOLE.save_region.Bottom = (SHORT) (WINCONSOLE.SBI.dwSize.Y - 1);
     WINCONSOLE.save_region.Right = (SHORT) (WINCONSOLE.SBI.dwSize.X - 1);
-    
+
     if (read_screen_data()) {
         result = TRUE;
     } else {
-        
+
         WINCONSOLE.save_region.Top = WINCONSOLE.SBI.srWindow.Top;
         WINCONSOLE.save_region.Left = WINCONSOLE.SBI.srWindow.Left;
         WINCONSOLE.save_region.Bottom = WINCONSOLE.SBI.srWindow.Bottom;
         WINCONSOLE.save_region.Right = WINCONSOLE.SBI.srWindow.Right;
-        
+
         WINCONSOLE.window_only = TRUE;
-        
+
         if (read_screen_data()) {
             result = TRUE;
         }
     }
-    
+
     T(("... save original screen contents %s", result ? "ok" : "err"));
     return result;
 }
@@ -416,7 +416,7 @@ restore_original_screen(void)
     COORD bufferCoord;
     bool result = FALSE;
     SMALL_RECT save_region = WINCONSOLE.save_region;
-    
+
     T(("... restoring %s",
        WINCONSOLE.window_only ? "window" : "entire buffer"));
 
@@ -427,7 +427,7 @@ restore_original_screen(void)
 
     if (write_screen(WINCONSOLE.hdl,
                      WINCONSOLE.save_screen,
-                    WINCONSOLE.save_size,
+                     WINCONSOLE.save_size,
                      bufferCoord,
                      &save_region)) {
         result = TRUE;
@@ -451,20 +451,20 @@ read_screen_data(void)
     bool result = FALSE;
     COORD bufferCoord;
     size_t want;
-    
+
     WINCONSOLE.save_size.X = (SHORT) (WINCONSOLE.save_region.Right
                                       - WINCONSOLE.save_region.Left + 1);
     WINCONSOLE.save_size.Y = (SHORT) (WINCONSOLE.save_region.Bottom
                                       - WINCONSOLE.save_region.Top + 1);
-    
+
     want = (size_t) (WINCONSOLE.save_size.X * WINCONSOLE.save_size.Y);
-    
+
     if ((WINCONSOLE.save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
         bufferCoord.X = (SHORT) (WINCONSOLE.window_only ?
                                  WINCONSOLE.SBI.srWindow.Left : 0);
         bufferCoord.Y = (SHORT) (WINCONSOLE.window_only ?
                                  WINCONSOLE.SBI.srWindow.Top : 0);
-        
+
         T(("... reading console %s %dx%d into %d,%d - %d,%d at %d,%d",
            WINCONSOLE.window_only ? "window" : "buffer",
            WINCONSOLE.save_size.Y, WINCONSOLE.save_size.X,
@@ -474,7 +474,7 @@ read_screen_data(void)
            WINCONSOLE.save_region.Right,
            bufferCoord.Y,
            bufferCoord.X));
-        
+
         if (read_screen(WINCONSOLE.hdl,
                         WINCONSOLE.save_screen,
                         WINCONSOLE.save_size,
@@ -486,7 +486,7 @@ read_screen_data(void)
             FreeAndNull(WINCONSOLE.save_screen);
         }
     }
-    
+
     return result;
 }
 
@@ -536,12 +536,12 @@ _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info)
     SMALL_RECT rect;
     COORD coord;
     bool changed = FALSE;
-    
+
     T((T_CALLED("lib_win32con::_nc_console_set_scrollback(%s)"),
        (normal
         ? "normal"
         : "application")));
-    
+
     T(("... SBI.srWindow %d,%d .. %d,%d",
        info->srWindow.Top,
        info->srWindow.Left,
@@ -550,7 +550,7 @@ _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info)
     T(("... SBI.dwSize %dx%d",
        info->dwSize.Y,
        info->dwSize.X));
-    
+
     if (normal) {
         rect = info->srWindow;
         coord = info->dwSize;
@@ -561,7 +561,7 @@ _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info)
     } else {
         int high = info->srWindow.Bottom - info->srWindow.Top + 1;
         int wide = info->srWindow.Right - info->srWindow.Left + 1;
-        
+
         if (high < MIN_HIGH) {
             T(("... height %d < %d", high, MIN_HIGH));
             high = MIN_HIGH;
@@ -572,31 +572,31 @@ _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info)
             wide = MIN_WIDE;
             changed = TRUE;
         }
-        
+
         rect.Left =
             rect.Top = 0;
         rect.Right = (SHORT) (wide - 1);
         rect.Bottom = (SHORT) (high - 1);
-        
+
         coord.X = (SHORT) wide;
         coord.Y = (SHORT) high;
-        
+
         if (info->dwSize.Y != high ||
             info->dwSize.X != wide ||
             info->srWindow.Top != 0 ||
             info->srWindow.Left != 0) {
             changed = TRUE;
         }
-        
+
     }
-    
+
     if (changed) {
         T(("... coord %d,%d", coord.Y, coord.X));
         T(("... rect %d,%d - %d,%d",
            rect.Top, rect.Left,
            rect.Bottom, rect.Right));
-        SetConsoleScreenBufferSize(WINCONSOLE.hdl, coord);     /* dwSize */
-        SetConsoleWindowInfo(WINCONSOLE.hdl, TRUE, &rect);     /* srWindow */
+        SetConsoleScreenBufferSize(WINCONSOLE.hdl, coord);      /* dwSize */
+        SetConsoleWindowInfo(WINCONSOLE.hdl, TRUE, &rect);      /* srWindow */
         _nc_console_get_SBI();
     }
     returnVoid;
@@ -613,7 +613,7 @@ tdiff(FILETIME fstart, FILETIME fend)
     ustart.HighPart = fstart.dwHighDateTime;
     uend.LowPart = fend.dwLowDateTime;
     uend.HighPart = fend.dwHighDateTime;
-    
+
     diff = (uend.QuadPart - ustart.QuadPart) / 10000;
     return diff;
 }
@@ -639,10 +639,10 @@ static int
 decode_mouse(SCREEN *sp, int mask)
 {
     int result = 0;
-    
+
     (void) sp;
     assert(sp && console_initialized);
-    
+
     if (mask & FROM_LEFT_1ST_BUTTON_PRESSED)
         result |= BUTTON1_PRESSED;
     if (mask & FROM_LEFT_2ND_BUTTON_PRESSED)
@@ -651,7 +651,7 @@ decode_mouse(SCREEN *sp, int mask)
         result |= BUTTON3_PRESSED;
     if (mask & FROM_LEFT_4TH_BUTTON_PRESSED)
         result |= BUTTON4_PRESSED;
-    
+
     if (mask & RIGHTMOST_BUTTON_PRESSED) {
         switch (WINCONSOLE.numButtons) {
         case 1:
@@ -664,11 +664,11 @@ decode_mouse(SCREEN *sp, int mask)
             result |= BUTTON3_PRESSED;
             break;
         case 4:
-               result |= BUTTON4_PRESSED;
+            result |= BUTTON4_PRESSED;
             break;
         }
     }
-    
+
     return result;
 }
 
@@ -679,19 +679,19 @@ handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer)
 {
     MEVENT work;
     bool result = FALSE;
-    
+
     assert(sp);
-    
+
     sp->_drv_mouse_old_buttons = sp->_drv_mouse_new_buttons;
     sp->_drv_mouse_new_buttons = mer.dwButtonState & BUTTON_MASK;
-    
+
     /*
      * We're only interested if the button is pressed or released.
      * FIXME: implement continuous event-tracking.
      */
     if (sp->_drv_mouse_new_buttons != sp->_drv_mouse_old_buttons) {
         memset(&work, 0, sizeof(work));
-        
+
         if (sp->_drv_mouse_new_buttons) {
             work.bstate |=
                 (mmask_t) decode_mouse(sp,
@@ -704,10 +704,10 @@ handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer)
                            >> 1);
             result = TRUE;
         }
-        
+
         work.x = mer.dwMousePosition.X;
         work.y = mer.dwMousePosition.Y - AdjustY();
-        
+
         sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work;
         sp->_drv_mouse_tail += 1;
     }
@@ -719,7 +719,7 @@ rkeycompare(const void *el1, const void *el2)
 {
     WORD key1 = (LOWORD((*((const LONG *) el1)))) & 0x7fff;
     WORD key2 = (LOWORD((*((const LONG *) el2)))) & 0x7fff;
-    
+
     return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1));
 }
 
@@ -729,7 +729,7 @@ keycompare(const void *el1, const void *el2)
 {
     WORD key1 = HIWORD((*((const LONG *) el1)));
     WORD key2 = HIWORD((*((const LONG *) el2)));
-    
+
     return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1));
 }
 
@@ -737,12 +737,12 @@ static int
 MapKey(WORD vKey)
 {
     int code = -1;
-    
+
     if (!WINCONSOLE.isTermInfoConsole) {
         WORD nKey = 0;
         void *res;
         LONG key = GenMap(vKey, 0);
-        
+
         res = bsearch(&key,
                       WINCONSOLE.map,
                       (size_t) (N_INI + FKEYS),
@@ -763,12 +763,12 @@ static int
 AnsiKey(WORD vKey)
 {
     int code = -1;
-    
+
     if (!WINCONSOLE.isTermInfoConsole) {
         WORD nKey = 0;
         void *res;
         LONG key = GenMap(vKey, 0);
-        
+
         res = bsearch(&key,
                       WINCONSOLE.ansi_map,
                       (size_t) (N_INI + FKEYS),
@@ -793,9 +793,9 @@ _nc_console_keyok(int keycode,int flag)
     WORD vKey;
     void *res;
     LONG key = GenMap(0, (WORD) keycode);
-    
+
     T((T_CALLED("lib_win32con::_nc_console_keyok(%d, %d)"), keycode, flag));
-    
+
     res = bsearch(&key,
                   WINCONSOLE.rmap,
                   (size_t) (N_INI + FKEYS),
@@ -819,7 +819,7 @@ _nc_console_keyExist(int keycode)
     void *res;
     bool found = FALSE;
     LONG key = GenMap(0, (WORD) keycode);
-    
+
     T((T_CALLED("lib_win32con::_nc_console_keyExist(%d)"), keycode));
     res = bsearch(&key,
                   WINCONSOLE.rmap,
@@ -852,25 +852,25 @@ _nc_console_twait(
     FILETIME fend;
     int diff;
     bool isNoDelay = (milliseconds == 0);
-    
+
 #ifdef NCURSES_WGETCH_EVENTS
-    (void) evl;                        /* TODO: implement wgetch-events */
+    (void) evl;                 /* TODO: implement wgetch-events */
 #endif
-    
+
 #define IGNORE_CTRL_KEYS (SHIFT_PRESSED|LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED| \
                           LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED)
 #define CONSUME() ReadConsoleInput(hdl,&inp_rec,1,&nRead)
-    
+
     assert(sp);
-    
+
     TR(TRACE_IEVENT, ("start twait: hdl=%p, %d milliseconds, mode: %d",
                       hdl, milliseconds, mode));
-    
+
     if (milliseconds < 0)
         milliseconds = INFINITY;
-    
+
     memset(&inp_rec, 0, sizeof(inp_rec));
-    
+
     while (true) {
         if (!isNoDelay) {
             GetSystemTimeAsFileTime(&fstart);
@@ -881,14 +881,14 @@ _nc_console_twait(
             if (milliseconds< 0)
                 break;
         }
-        
+
         if (isNoDelay || (rc == WAIT_OBJECT_0)) {
             if (mode) {
                 nRead = 0;
                 b = GetNumberOfConsoleInputEvents(hdl, &nRead);
                 if (!b) {
                     T(("twait:err GetNumberOfConsoleInputEvents"));
-                }              
+                }
                 if (isNoDelay && b) {
                     T(("twait: Events Available: %d",nRead));
                     if (nRead==0) {
@@ -946,7 +946,7 @@ _nc_console_twait(
                                 if (inp_rec.Event.KeyEvent.bKeyDown) {
                                     T(("twait:event KeyDown"));
                                     if (!WINCONSOLE.isTermInfoConsole &&
-                                        (0 == ch)) {                               
+                                        (0 == ch)) {
                                         int nKey = MapKey(vk);
                                         if (nKey < 0) {
                                             CONSUME();
@@ -993,27 +993,27 @@ _nc_console_twait(
         }
     }
 end:
-    
+
     TR(TRACE_IEVENT, ("end twait: returned %d (%d), remaining time %d msec",
                       code, GetLastError(), milliseconds));
-    
+
     if (timeleft)
         *timeleft = milliseconds;
-    
+
     return code;
 }
 
 NCURSES_EXPORT(int)
 _nc_console_testmouse(
-                     SCREEN *sp,
-                     HANDLE hdl,
-                     int delay
-                     EVENTLIST_2nd(_nc_eventlist * evl))
+                      SCREEN *sp,
+                      HANDLE hdl,
+                      int delay
+                      EVENTLIST_2nd(_nc_eventlist * evl))
 {
     int rc = 0;
-    
+
     assert(sp);
-    
+
     if (sp->_drv_mouse_head < sp->_drv_mouse_tail) {
         rc = TW_MOUSE;
     } else {
@@ -1029,23 +1029,23 @@ _nc_console_testmouse(
 
 NCURSES_EXPORT(int)
 _nc_console_read(
-                SCREEN *sp,
-                HANDLE hdl,
-                int *buf)
+                 SCREEN *sp,
+                 HANDLE hdl,
+                 int *buf)
 {
     int rc = -1;
     INPUT_RECORD inp_rec;
     BOOL b;
     DWORD nRead;
     WORD vk;
-    
+
     assert(sp);
     assert(buf);
-    
+
     memset(&inp_rec, 0, sizeof(inp_rec));
-    
+
     T((T_CALLED("lib_win32con::_nc_console_read(%p)"), sp));
-    
+
     while ((b = ReadConsoleInput(hdl, &inp_rec, 1, &nRead))) {
         if (b && nRead > 0) {
             if (rc < 0)
@@ -1095,8 +1095,8 @@ _nc_console_read(
 /*   Our replacement for the systems _isatty to include also
      a test for mintty. This is called from the NC_ISATTY macro
      defined in curses.priv.h
-     
-     Return codes: 
+
+     Return codes:
      - 0 : Not a TTY
      - 1 : A Windows character device detected by _isatty
      - 2 : A future implementation may return 2 for mintty
@@ -1106,7 +1106,7 @@ _nc_console_isatty(int fd)
 {
     int result = 0;
     T((T_CALLED("lib_win32con::_nc_console_isatty(%d"),fd));
-    
+
     if (_isatty(fd))
         result = 1;
 #ifdef _NC_CHECK_MINTTY
@@ -1127,7 +1127,7 @@ NCURSES_EXPORT(bool)
 _nc_console_checkinit(bool initFlag, bool assumeTermInfo)
 {
     bool res = FALSE;
-    
+
     T((T_CALLED("lib_win32con::_nc_console_checkinit(initFlag=%d, assumeTermInfo=%d)"),
        initFlag,assumeTermInfo));
 
@@ -1141,14 +1141,14 @@ _nc_console_checkinit(bool initFlag, bool assumeTermInfo)
             WORD a;
             BOOL buffered = FALSE;
             BOOL b;
-            
+
             START_TRACE();
             WINCONSOLE.isTermInfoConsole = assumeTermInfo;
-            
+
             WINCONSOLE.map = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE);
             WINCONSOLE.rmap = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE);
             WINCONSOLE.ansi_map = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE);
-            
+
             for (i = 0; i < (N_INI + FKEYS); i++) {
                 if (i < N_INI) {
                     WINCONSOLE.rmap[i] = WINCONSOLE.map[i] =
@@ -1175,31 +1175,31 @@ _nc_console_checkinit(bool initFlag, bool assumeTermInfo)
                   (size_t) (MAPSIZE),
                   sizeof(keylist[0]),
                   rkeycompare);
-            
+
             if (GetNumberOfConsoleMouseButtons(&num_buttons)) {
                 WINCONSOLE.numButtons = (int) num_buttons;
             } else {
                 WINCONSOLE.numButtons = 1;
             }
-            
+
             a = _nc_console_MapColor(true, COLOR_WHITE) |
                 _nc_console_MapColor(false, COLOR_BLACK);
             for (i = 0; i < CON_NUMPAIRS; i++)
                 WINCONSOLE.pairs[i] = a;
-            
+
             WINCONSOLE.inp = GetStdHandle(STD_INPUT_HANDLE);
             WINCONSOLE.out = GetStdHandle(STD_OUTPUT_HANDLE);
             WINCONSOLE.hdl = WINCONSOLE.out;
-            
+
             GetConsoleMode(WINCONSOLE.inp,&WINCONSOLE.originalMode.dwFlagIn);
             GetConsoleMode(WINCONSOLE.out,&WINCONSOLE.originalMode.dwFlagOut);
-            
+
             if (!WINCONSOLE.isTermInfoConsole) {
                 b = AllocConsole();
-                
+
                 if (!b)
                     b = AttachConsole(ATTACH_PARENT_PROCESS);
-                
+
                 if (getenv("NCGDB") || getenv("NCURSES_CONSOLE2")) {
                     T(("... will not buffer console"));
                 } else {
@@ -1219,11 +1219,11 @@ _nc_console_checkinit(bool initFlag, bool assumeTermInfo)
                TERM variable is set to #win32con, but actually
                Windows supports virtual terminal processing.
                So if terminfo functions are used in this setup,
-               they actually may work. 
+               they actually may work.
             */
             _setmode(fileno(stdin) ,_O_BINARY);
             _setmode(fileno(stdout),_O_BINARY);
-            
+
             if (WINCONSOLE.hdl != INVALID_HANDLE_VALUE) {
                 WINCONSOLE.buffered = buffered;
                 _nc_console_get_SBI();
@@ -1237,7 +1237,7 @@ _nc_console_checkinit(bool initFlag, bool assumeTermInfo)
                    (WINCONSOLE.save_CI.bVisible ? "" : "not-"),
                    (int) WINCONSOLE.save_CI.dwSize));
             }
-            
+
             WINCONSOLE.initialized = TRUE;
             console_initialized = TRUE;
         }
index 542077d8b24d19c3839ef020c16dd9048791ca23..851d6cc7a5fbea6c3da813f9415f76ac1491db2f 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20201003) unstable; urgency=low
+ncurses6 (6.2+20201010) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Tue, 29 Sep 2020 14:58:09 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 10 Oct 2020 04:40:40 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index 542077d8b24d19c3839ef020c16dd9048791ca23..851d6cc7a5fbea6c3da813f9415f76ac1491db2f 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20201003) unstable; urgency=low
+ncurses6 (6.2+20201010) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Tue, 29 Sep 2020 14:58:09 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 10 Oct 2020 04:40:40 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index cfb5e671fab40dcd2eef8bc5afdca5f6df98296b..da6567710d8e1e91172dfe3d7a73dba034b23b62 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20201003) unstable; urgency=low
+ncurses6 (6.2+20201010) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Tue, 29 Sep 2020 14:58:09 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 10 Oct 2020 04:40:40 -0400
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
index 9345362cc5243cb049f077b1ca448b305c5d3444..1de5eb04a2f86f6627955fecdeeafa7bb7c8b2e2 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.423 2020/10/03 12:29:29 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.424 2020/10/10 08:40:40 tom Exp $\r
 \r
 ; TODO add examples\r
 ; TODO bump ABI to 6\r
@@ -10,7 +10,7 @@
 !define VERSION_MAJOR "6"\r
 !define VERSION_MINOR "2"\r
 !define VERSION_YYYY  "2020"\r
-!define VERSION_MMDD  "1003"\r
+!define VERSION_MMDD  "1010"\r
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
 \r
 !define MY_ABI   "5"\r
index 8151514d504530e897a4576aa9f8b116eccbc97f..a4ad4be8d397303341e1ff13f656999098e1d16c 100644 (file)
@@ -3,7 +3,7 @@
 Summary: shared libraries for terminal handling
 Name: mingw32-ncurses6
 Version: 6.2
-Release: 20201003
+Release: 20201010
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 9b0fcecbf3bf38d6c0e7f535249d7e746391a0b5..e604bc49f0ef9922b2a7a436fcf689359776c707 100644 (file)
@@ -1,7 +1,7 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Version: 6.2
-Release: 20201003
+Release: 20201010
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 754418441c73c7523260f567d6f69b852f9396eb..4514c61860d34e47a4dd9d92694a27b587a99848 100644 (file)
@@ -1,7 +1,7 @@
 Summary: Curses library with POSIX thread support.
 Name: ncursest6
 Version: 6.2
-Release: 20201003
+Release: 20201010
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index ae172ece9fc93f4f17617f3a381cbb5f8e818592..dd9d4e027454097dcf24887905000ee46124d8d1 100644 (file)
@@ -49,7 +49,7 @@
 #include <parametrized.h>
 #include <transform.h>
 
-MODULE_ID("$Id: tic.c,v 1.286 2020/05/31 21:05:44 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.287 2020/10/10 21:25:24 tom Exp $")
 
 #define STDIN_NAME "<stdin>"
 
@@ -2530,6 +2530,13 @@ similar_sgr(int num, char *a, char *b)
     return ((num != 0) || (*a == 0));
 }
 
+static void
+check_tparm_err(int num)
+{
+    if (_nc_tparm_err)
+       _nc_warning("tparam error in sgr(%d): %s", num, sgr_names[num]);
+}
+
 static char *
 check_sgr(TERMTYPE2 *tp, char *zero, int num, char *cap, const char *name)
 {
@@ -2560,8 +2567,7 @@ check_sgr(TERMTYPE2 *tp, char *zero, int num, char *cap, const char *name)
     } else if (PRESENT(cap)) {
        _nc_warning("sgr(%d) missing, but %s present", num, name);
     }
-    if (_nc_tparm_err)
-       _nc_warning("stack error in sgr(%d) string", num);
+    check_tparm_err(num);
     return test;
 }
 
@@ -2995,8 +3001,7 @@ check_termtype(TERMTYPE2 *tp, bool literal)
        } else {
            zero = strdup(TIPARM_9(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, 0));
        }
-       if (_nc_tparm_err)
-           _nc_warning("stack error in sgr(0) string");
+       check_tparm_err(0);
 
        if (zero != 0) {
            CHECK_SGR(1, enter_standout_mode);