mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2024-12-21 07:39:06 +08:00
ncurses 6.2 - patch 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). + add tmux-direct (tmux #2370, Debian #895754)
This commit is contained in:
parent
349761f30e
commit
5c90fc94a5
13
NEWS
13
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.
|
||||
|
||||
|
4
dist.mk
4
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)
|
||||
|
@ -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!
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
||||
#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);
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; $Id: mingw-ncurses.nsi,v 1.423 2020/10/03 12:29:29 tom Exp $
|
||||
; $Id: mingw-ncurses.nsi,v 1.424 2020/10/10 08:40:40 tom Exp $
|
||||
|
||||
; TODO add examples
|
||||
; TODO bump ABI to 6
|
||||
@ -10,7 +10,7 @@
|
||||
!define VERSION_MAJOR "6"
|
||||
!define VERSION_MINOR "2"
|
||||
!define VERSION_YYYY "2020"
|
||||
!define VERSION_MMDD "1003"
|
||||
!define VERSION_MMDD "1010"
|
||||
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
|
||||
|
||||
!define MY_ABI "5"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
15
progs/tic.c
15
progs/tic.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user