mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2024-11-21 03:12:03 +08:00
ncurses 6.2 - patch 20200906
+ merge/adapt in-progress work by Juergen Pfeifer for new version of win32-driver. + correct description of vt330/vt340 (Ross Combs).
This commit is contained in:
parent
2a3e5b0949
commit
2b7c2fd2f9
5
INSTALL
5
INSTALL
@ -26,7 +26,7 @@
|
||||
-- sale, use or other dealings in this Software without prior written --
|
||||
-- authorization. --
|
||||
-------------------------------------------------------------------------------
|
||||
-- $Id: INSTALL,v 1.225 2020/08/08 23:38:33 tom Exp $
|
||||
-- $Id: INSTALL,v 1.226 2020/09/06 23:41:16 tom Exp $
|
||||
---------------------------------------------------------------------
|
||||
How to install Ncurses/Terminfo on your system
|
||||
---------------------------------------------------------------------
|
||||
@ -582,6 +582,9 @@ CONFIGURE OPTIONS:
|
||||
For testing, generate functions for certain macros to make them visible
|
||||
as such to the debugger. See also the --disable-macros option.
|
||||
|
||||
--enable-exp-win32
|
||||
When configuring for MinGW, use the experimental Windows 10 driver.
|
||||
|
||||
--enable-ext-colors
|
||||
Extend the cchar_t structure to allow more than 16 colors to be
|
||||
encoded. This applies only to the wide-character (--enable-widec)
|
||||
|
7
NEWS
7
NEWS
@ -26,7 +26,7 @@
|
||||
-- sale, use or other dealings in this Software without prior written --
|
||||
-- authorization. --
|
||||
-------------------------------------------------------------------------------
|
||||
-- $Id: NEWS,v 1.3552 2020/09/01 00:21:01 tom Exp $
|
||||
-- $Id: NEWS,v 1.3556 2020/09/06 20:05:44 tom Exp $
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
This is a log of changes that ncurses has gone through since Zeyd started
|
||||
@ -46,6 +46,11 @@ 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.
|
||||
|
||||
20200906
|
||||
+ merge/adapt in-progress work by Juergen Pfeifer for new version of
|
||||
win32-driver.
|
||||
+ correct description of vt330/vt340 (Ross Combs).
|
||||
|
||||
20200831
|
||||
+ build-fix for awk-scripts modified for win32-driver (report by Werner
|
||||
Fink).
|
||||
|
137
README.MinGW
137
README.MinGW
@ -26,112 +26,123 @@
|
||||
-- sale, use or other dealings in this Software without prior written --
|
||||
-- authorization. --
|
||||
-------------------------------------------------------------------------------
|
||||
-- $Id: README.MinGW,v 1.11 2020/07/11 13:31:30 juergen Exp $
|
||||
-- $Id: README.MinGW,v 1.14 2020/09/06 22:22:44 tom Exp $
|
||||
-- Author: Juergen Pfeifer
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
This is work in progress, but it's in an state where one can see it
|
||||
This is work in progress, but it is in an state where one can see it
|
||||
works at least on the Windows Console.
|
||||
|
||||
You should install the MSYS package, so that you've a shell environment that
|
||||
allows you to run the scripts, especially configure etc. You can get that
|
||||
from http://www.mingw.org
|
||||
You should install the MSYS2 package, so that you have a shell environment that
|
||||
allows you to run scripts, especially configure, etc. You can get that
|
||||
from
|
||||
https://www.msys2.org/
|
||||
|
||||
To build ncurses for native Windows, you need the MinGW toolchain. The
|
||||
original MinGW toolchain from the above site is only for 32-Bit Windows. As
|
||||
Windows Server - and also regular workstations - are moving to 64-Bit, it
|
||||
seems to be reasonable to have a toolchain that supports both architectures.
|
||||
I recommend to use the TDM gcc toolchain which you can find at
|
||||
http://tdm-gcc.tdragon.net/download. Go to the download section and select
|
||||
the bundle installer for tdm64 (MinGW-w64). This installs a multilib version
|
||||
of the gcc toolchain that can compile for native 32- and 64-Bit Windows
|
||||
versions. It also comes with a working pthread implementation.
|
||||
or the individual packages from
|
||||
|
||||
The latest config and build scripts we use for MinGW have only been tested
|
||||
for the gcc-4.6.1 compiler toolchain (or better).
|
||||
https://sourceforge.net/projects/msys2/files/
|
||||
|
||||
Using MinGW is a pragmatic decision, it's the easiest way to port this
|
||||
You may also use a hosted MinGW cross-compile toolchain, e.g., on Ubuntu or
|
||||
ArchLinux to build the libraries and tools.
|
||||
|
||||
To build ncurses for native Windows with support for the new Windows 10 Virtual
|
||||
Terminal and PseudoConsole support, you should install at least version 8.0 of
|
||||
the mingw-w64-x86_64-headers package as it appears to have support for the
|
||||
required Windows SDK level. Please note that some of the Linux distributions
|
||||
are a bit behind with respect to the required MinGW header versions and you may
|
||||
not be able to properly build the libraries for current Windows 10 using these
|
||||
toolchains. Although it is a bit slow, MSYS2 on Windows 10 64-Bit is the
|
||||
authoritative build environment for the MinGW version of ncurses.
|
||||
|
||||
Using MinGW is a pragmatic decision, it is the easiest way to port this
|
||||
heavily UNIX based sourcebase to native Windows. The goal is of course
|
||||
to provide the includes, libraries and DLLs to be used with the more
|
||||
common traditional development environments on Windows, mainly with
|
||||
Microsoft Visual Studio.
|
||||
|
||||
The TERM environment variable must be set specially to active the Windows
|
||||
The TERM environment variable must be set especially to activate the Windows
|
||||
console-driver. The driver checks if TERM is set to "#win32con" (explicit
|
||||
use) or if TERM is unset or empty (implicit).
|
||||
|
||||
Please also make sure that MSYS links to the correct directory containing
|
||||
your MinGW toolchain. For TDM this is usually C:\MinGW64. In your Windows
|
||||
CMD.EXE command shell go to the MSYS root directory (most probably
|
||||
C:\MSYS or C:\MSYS\1.0) and verify, that there is a junction point mingw
|
||||
that points to the MinGW toolchain directory. If not, delete the mingw
|
||||
directory and use the mklink command (or the linkd.exe utility on older
|
||||
Windows) to create the junction point.
|
||||
Beginning with build 17763 (Fall 2018 update), Windows 10 supports ANSI escape
|
||||
sequences (Virtual Terminal support). If ncurses detects this or a later
|
||||
Windows 10 version, the interpretation of the implicit TERM setting (which
|
||||
means: TERM is not set or empty) changes. In this case, TERM is to be assumed
|
||||
to be "ms-terminal" and ncurses acts using the regular terminfo based driver,
|
||||
thus acting like a regular Terminal we all know from UNIX like environments.
|
||||
|
||||
This code requires WindowsNT 5.1 or better, which means on the client
|
||||
Windows XP or better, on the server Windows Server 2003 or better.
|
||||
This code requires WindowsNT 6.0 or better, which means on the client
|
||||
Windows Vista or better, on the server Windows Server 2008 or better.
|
||||
|
||||
I recommend using libtool to build ncurses on MinGW, because libtool
|
||||
knows exactly how to build dll's on Windows for use with MinGW.
|
||||
If running on Windows 10 Build 17763 or later is detected, any program
|
||||
spawning a subprocess running a ncurses program should use the new
|
||||
PseudoConsole support, which provides what we know as pty from the UNIX
|
||||
world also for Windows. Using the CreatePseudoConsole API
|
||||
(see https://docs.microsoft.com/en-us/windows/console/createpseudoconsole)
|
||||
in the calling process, it is guaranteed that the called ncurses program has
|
||||
a console that is required by its implementation, even if the calling program
|
||||
is NOT a console program, e.g., MSYS2's own mintty Terminal emulator.
|
||||
|
||||
In the current MSYS2/minGW setup, building MinGW shared libraries with
|
||||
libtool for ncurses seems to be broken, so I recommend NOT to use libtool.
|
||||
|
||||
To build a modern but still small footprint ncurses that provides
|
||||
hooks for interop, I recommend using these options:
|
||||
|
||||
--with-libtool
|
||||
--disable-home-terminfo
|
||||
--enable-database
|
||||
--disable-termcap
|
||||
--enable-sp-funcs
|
||||
--enable-term-driver
|
||||
--enable-interop
|
||||
--without-libtool
|
||||
--disable-home-terminfo
|
||||
--enable-database
|
||||
--disable-termcap
|
||||
--enable-sp-funcs
|
||||
--enable-term-driver
|
||||
--enable-interop
|
||||
|
||||
This is the configuration commandline as I'm using it at the moment (assuming
|
||||
environment variable MINGW_ROOT to hold the root directory name of your MinGW
|
||||
build):
|
||||
This is the configuration command line which I am using at the moment
|
||||
(assuming environment variable MINGW_ROOT holds the root directory name of
|
||||
your MinGW build):
|
||||
|
||||
./configure \
|
||||
--prefix=$MINGW_ROOT \
|
||||
--with-cxx \
|
||||
--prefix=/mingw64 \
|
||||
--without-cxx \
|
||||
--without-ada \
|
||||
--enable-warnings \
|
||||
--enable-assertions \
|
||||
--enable-exp-win32 \
|
||||
--enable-ext-funcs \
|
||||
--disable-home-terminfo \
|
||||
--disable-echo \
|
||||
--disable-getcap \
|
||||
--disable-hard-tabs \
|
||||
--disable-leaks \
|
||||
--disable-macros \
|
||||
--disable-overwrite \
|
||||
--enable-opaque-curses \
|
||||
--enable-opaque-panel \
|
||||
--enable-opaque-menu \
|
||||
--enable-opaque-form \
|
||||
--enable-database \
|
||||
--enable-sp-funcs \
|
||||
--enable-term-driver \
|
||||
--enable-interop \
|
||||
--disable-termcap \
|
||||
--enable-database \
|
||||
--with-progs \
|
||||
--with-libtool \
|
||||
--without-libtool \
|
||||
--enable-pc-files \
|
||||
--mandir=$MINGW_ROOT/share/man
|
||||
--with-shared \
|
||||
--with-normal \
|
||||
--without-debug \
|
||||
--with-fallbacks=ms-terminal \
|
||||
--without-manpages
|
||||
|
||||
Please note that it is also necessary to set this environment variable:
|
||||
|
||||
export PATH_SEPARATOR=";"
|
||||
|
||||
in order to parse the terminfo paths correctly. Terminfo paths should
|
||||
always be separated by a seeeemicolon,even when running under MSYS.
|
||||
always be separated by a semicolon, even when running under MSYS2.
|
||||
|
||||
All the options above are - like the whole Windows support -
|
||||
experimental.
|
||||
|
||||
A lot is still TODO, e.g.:
|
||||
|
||||
- Wide Character support (display is workable, but input untested)
|
||||
The Win32Con driver should actually only use Unicode in the
|
||||
future.
|
||||
- Thread support (locking). If using TDM toolchain this is done by
|
||||
configuring pthreads.
|
||||
- A GUI console driver
|
||||
- Support for Terminals attached via a serial port (via terminfo)
|
||||
- Support for networked Terminal connections (via terminfo)
|
||||
- Workarounds for MinGW's filesystem access are necessary to make infocmp
|
||||
work (though tic works).
|
||||
|
||||
Recent Windows 10 releases have a new Console implementation that supports
|
||||
ANSI-style terminal emulation. Also, there is a new "Windows Terminal" App
|
||||
from Microsoft that hosts the new Console in a tabbed user interface. With
|
||||
this, it is possble to try using terminfo, the TERM environment varianle
|
||||
should be set to ms-terminal.
|
||||
|
||||
-- vile:txtmode
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: Makefile.in,v 1.126 2020/08/29 18:35:49 tom Exp $
|
||||
# $Id: Makefile.in,v 1.127 2020/09/05 19:01:14 tom Exp $
|
||||
##############################################################################
|
||||
# Copyright 2018,2020 Thomas E. Dickey #
|
||||
# Copyright 1998-2015,2016 Free Software Foundation, Inc. #
|
||||
@ -190,7 +190,7 @@ realclean :: distclean
|
||||
|
||||
###############################################################################
|
||||
|
||||
HEADER_DEPS = \
|
||||
HEADER_DEPS = @INTERNALS_HDR@ \
|
||||
etip.h \
|
||||
../include/curses.h \
|
||||
../include/eti.h \
|
||||
@ -201,9 +201,7 @@ HEADER_DEPS = \
|
||||
../include/ncurses_dll.h \
|
||||
../include/panel.h \
|
||||
../include/unctrl.h \
|
||||
$(INCDIR)/nc_mingw.h \
|
||||
$(INCDIR)/nc_string.h \
|
||||
$(INCDIR)/nc_win32.h \
|
||||
$(srcdir)/cursesp.h \
|
||||
$(srcdir)/cursesw.h \
|
||||
$(srcdir)/cursslk.h \
|
||||
|
22
configure.in
22
configure.in
@ -29,7 +29,7 @@ dnl***************************************************************************
|
||||
dnl
|
||||
dnl Author: Thomas E. Dickey 1995-on
|
||||
dnl
|
||||
dnl $Id: configure.in,v 1.721 2020/08/29 22:40:49 tom Exp $
|
||||
dnl $Id: configure.in,v 1.724 2020/09/06 22:23:32 tom Exp $
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl
|
||||
dnl For additional information, see
|
||||
@ -38,7 +38,7 @@ dnl https://invisible-island.net/autoconf/my-autoconf.html
|
||||
dnl
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_PREREQ(2.52.20200111)
|
||||
AC_REVISION($Revision: 1.721 $)
|
||||
AC_REVISION($Revision: 1.724 $)
|
||||
AC_INIT(ncurses/base/lib_initscr.c)
|
||||
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
|
||||
|
||||
@ -1553,13 +1553,27 @@ case $cf_cv_system_name in
|
||||
(*mingw32*|*mingw64*|*-msvc*)
|
||||
AC_MSG_CHECKING(if you want experimental-Windows driver)
|
||||
AC_ARG_ENABLE(exp-win32,
|
||||
[ --enable-exp-win32 compile with experimental-Windows],
|
||||
[ --enable-exp-win32 compile with experimental-Windows driver],
|
||||
[with_exp_win32=$enableval],
|
||||
[with_exp_win32=no])
|
||||
AC_MSG_RESULT($with_exp_win32)
|
||||
test "x$with_exp_win32" = xyes && AC_DEFINE(EXP_WIN32_DRIVER,1,[Define to 1 to compile with experimental win32 driver])
|
||||
if test "x$with_exp_win32" = xyes
|
||||
then
|
||||
AC_DEFINE(EXP_WIN32_DRIVER,1,[Define to 1 to compile with experimental win32 driver])
|
||||
EXP_WIN32_DRIVER=1
|
||||
INTERNALS_HDR='[$](INCDIR)/nc_win32.h'
|
||||
else
|
||||
INTERNALS_HDR='[$](INCDIR)/nc_mingw.h'
|
||||
EXP_WIN32_DRIVER=0
|
||||
fi
|
||||
;;
|
||||
(*)
|
||||
EXP_WIN32_DRIVER=0
|
||||
INTERNALS_HDR=
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(EXP_WIN32_DRIVER)
|
||||
AC_SUBST(INTERNALS_HDR)
|
||||
|
||||
###############################################################################
|
||||
CF_HELP_MESSAGE(Testing/development Options:)
|
||||
|
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.1371 2020/08/31 19:51:51 tom Exp $
|
||||
# $Id: dist.mk,v 1.1373 2020/09/06 20:05:44 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 = 20200831
|
||||
NCURSES_PATCH = 20200906
|
||||
|
||||
# We don't append the patch to the version, since this only applies to releases
|
||||
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
|
||||
|
@ -60,7 +60,7 @@ BEGIN {
|
||||
print "/* and: Thomas E. Dickey 1995-on */"
|
||||
print "/****************************************************************************/"
|
||||
print ""
|
||||
print "/* $Id: MKterm.h.awk.in,v 1.76 2020/05/30 19:24:03 tom Exp $ */"
|
||||
print "/* $Id: MKterm.h.awk.in,v 1.77 2020/09/05 23:08:27 tom Exp $ */"
|
||||
print ""
|
||||
print "/*"
|
||||
print "** term.h -- Definition of struct term"
|
||||
@ -127,9 +127,14 @@ BEGIN {
|
||||
print ""
|
||||
print "#else /* !HAVE_TERMIO_H */"
|
||||
print ""
|
||||
print "#if _WIN32"
|
||||
print "# include <ncurses_mingw.h>"
|
||||
print "# define TTY struct termios"
|
||||
print "#if (defined(_WIN32) || defined(_WIN64))"
|
||||
print "#if @EXP_WIN32_DRIVER@"
|
||||
print "#include <win32_curses.h>"
|
||||
print "#define TTY struct winconmode"
|
||||
print "#else"
|
||||
print "#include <ncurses_mingw.h>"
|
||||
print "#define TTY struct termios"
|
||||
print "#endif"
|
||||
print "#else"
|
||||
print "#undef TERMIOS"
|
||||
print "#include <sgtty.h>"
|
||||
@ -143,6 +148,9 @@ BEGIN {
|
||||
print "#ifdef TERMIOS"
|
||||
print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
|
||||
print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
|
||||
print "#elif @EXP_WIN32_DRIVER@ && (defined(_WIN32) || defined(_WIN64))"
|
||||
print "#define GET_TTY(fd, buf) _nc_console_getmode(_nc_console_fd2handle(fd),buf)"
|
||||
print "#define SET_TTY(fd, buf) _nc_console_setmode(_nc_console_fd2handle(fd),buf)"
|
||||
print "#else"
|
||||
print "#define GET_TTY(fd, buf) gtty(fd, buf)"
|
||||
print "#define SET_TTY(fd, buf) stty(fd, buf)"
|
||||
|
@ -31,7 +31,7 @@
|
||||
* Author: Thomas Dickey, 2008-on *
|
||||
****************************************************************************/
|
||||
|
||||
/* $Id: nc_win32.h,v 1.3 2020/08/29 20:56:43 tom Exp $ */
|
||||
/* $Id: nc_win32.h,v 1.7 2020/09/06 20:53:55 tom Exp $ */
|
||||
|
||||
#ifndef NC_WIN32_H
|
||||
#define NC_WIN32_H 1
|
||||
@ -82,7 +82,7 @@ extern "C" {
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
extern NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *);
|
||||
|
||||
|
||||
#undef wcwidth
|
||||
#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs))
|
||||
extern NCURSES_EXPORT(int) _nc_wcwidth(wchar_t);
|
||||
@ -102,16 +102,20 @@ extern NCURSES_EXPORT(int) _nc_console_keyok(int keycode,int flag);
|
||||
extern NCURSES_EXPORT(bool) _nc_console_keyExist(int keycode);
|
||||
extern NCURSES_EXPORT(bool) _nc_console_checkinit(bool initFlag, bool assumeTermInfo);
|
||||
extern NCURSES_EXPORT(int) _nc_console_vt_supported(void);
|
||||
|
||||
#ifdef _NC_CHECK_MINTTY
|
||||
extern NCURSES_EXPORT(int) _nc_console_checkmintty(int fd, LPHANDLE pMinTTY);
|
||||
#endif
|
||||
|
||||
#undef CHECK_TERM_ENV
|
||||
#define MS_TERMINAL "ms-terminal"
|
||||
#define CHECK_TERM_ENV(env,isNull,NOTERM) (isNull = ((env==0)||(*env==0)), \
|
||||
(env = (isNull ? \
|
||||
_nc_console_vt_supported() ? MS_TERMINAL: NOTERM : env) , \
|
||||
(isNull = ((env==0)||(*env==0)))))
|
||||
#define CHECK_TERM_ENV(term_env, no_terminal) \
|
||||
(term_env = (NonEmpty(term_env) \
|
||||
? term_env \
|
||||
: (_nc_console_vt_supported() \
|
||||
? MS_TERMINAL \
|
||||
: no_terminal)), \
|
||||
!NonEmpty(term_env))
|
||||
|
||||
/*
|
||||
* Various Console mode definitions
|
||||
@ -129,7 +133,7 @@ extern NCURSES_EXPORT(int) _nc_console_checkmintty(int fd, LPHANDLE pMinTTY);
|
||||
#define CONMODE_NORAW (ENABLE_PROCESSED_INPUT|ENABLE_LINE_INPUT)
|
||||
#define CONMODE_NOCBREAK (ENABLE_LINE_INPUT)
|
||||
|
||||
|
||||
|
||||
#if defined(USE_TERM_DRIVER) && defined(USE_WIN32CON_DRIVER)
|
||||
extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_WIN_DRIVER;
|
||||
#endif
|
||||
@ -161,7 +165,7 @@ typedef struct {
|
||||
TTY originalMode;
|
||||
} ConsoleInfo;
|
||||
|
||||
extern NCURSES_EXPORT_VAR(ConsoleInfo) _nc_CONSOLE;
|
||||
extern NCURSES_EXPORT_VAR(ConsoleInfo) _nc_CONSOLE;
|
||||
#define WINCONSOLE _nc_CONSOLE
|
||||
|
||||
#define TypeAlloca(type,count)(type*) _alloca(sizeof(type)*(size_t)(count))
|
||||
|
@ -26,7 +26,7 @@
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
/* $Id: ncurses_dll.h.in,v 1.16 2020/07/04 23:07:54 tom Exp $ */
|
||||
/* $Id: ncurses_dll.h.in,v 1.17 2020/09/05 17:58:47 juergen Exp $ */
|
||||
|
||||
#ifndef NCURSES_DLL_H_incl
|
||||
#define NCURSES_DLL_H_incl 1
|
||||
@ -81,7 +81,7 @@
|
||||
/*
|
||||
* These symbols hide dllimport/dllexport, for compilers which care about it.
|
||||
*/
|
||||
#if defined(__CYGWIN__) || defined(_WIN32)
|
||||
#if defined(__CYGWIN__) || (defined(_WIN32) || defined(_WIN64))
|
||||
# if defined(NCURSES_STATIC) /* "static" here only implies "not-a-DLL" */
|
||||
# define NCURSES_EXPORT_GENERAL_IMPORT
|
||||
# define NCURSES_EXPORT_GENERAL_EXPORT
|
||||
|
@ -6,8 +6,8 @@
|
||||
# Report bugs and new terminal descriptions to
|
||||
# bug-ncurses@gnu.org
|
||||
#
|
||||
# $Revision: 1.811 $
|
||||
# $Date: 2020/08/24 22:30:17 $
|
||||
# $Revision: 1.812 $
|
||||
# $Date: 2020/09/05 17:45:56 $
|
||||
#
|
||||
# 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
|
||||
@ -2732,8 +2732,8 @@ vt320-w-nam|vt300-w-nam|dec vt320 wide 7 bit terminal with no am,
|
||||
# host writable status line, yet another different DRCS matrix size,
|
||||
# and such, but they add the DEC Technical character set, Multiple text
|
||||
# pages, selectable length pages, and the like. The difference between
|
||||
# the vt330 and vt340 is that the latter has only 2 planes and a monochrome
|
||||
# monitor, the former has 4 planes and a color monitor. These terminals
|
||||
# the vt330 and vt340 is that the former has only 2 planes and a monochrome
|
||||
# monitor, the latter has 4 planes and a color monitor. These terminals
|
||||
# support VT131 and ANSI block mode, but as with much of these things,
|
||||
# termcap/terminfo doesn't deal with these features.
|
||||
#
|
||||
@ -2790,7 +2790,7 @@ vt420+lrmm|VT420 left/right margins,
|
||||
# macros, and other features too numerous to remember right now. TERMCAP
|
||||
# can only take advantage of a few of these added features.
|
||||
#
|
||||
# Note that this entry is are set up in what was the standard way for GNU
|
||||
# Note that this entry is set up in what was the standard way for GNU
|
||||
# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
|
||||
# keys were switched into application mode at the same time the numeric pad
|
||||
# is switched into application mode. This changes the definitions of the
|
||||
@ -2967,7 +2967,7 @@ dec-vt220|DOS tnvt200 terminal emulator,
|
||||
# Zstem340 is an (IMHO) excellent VT emulator for PC's. I recommend it to
|
||||
# anyone who needs PC VT340 emulation. (or anything below that level, for
|
||||
# that matter -- DEC's ALL-in-1 seems happy with it, as does INFOPLUS's
|
||||
# RDBM systems, it includes ReGIS and SiXel support! I'm impressed...
|
||||
# RDBM systems, it includes ReGIS and Sixel support! I'm impressed...
|
||||
# I can send the address if requested.
|
||||
# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr)
|
||||
# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
|
||||
@ -26623,4 +26623,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
|
||||
# + correct ti916 cup (report by Florian Weimer).
|
||||
# + improve ndr9500 (report by Florian Weimer).
|
||||
#
|
||||
# 2020-09-05
|
||||
# + correct description of vt330/vt340 (Ross Combs).
|
||||
#
|
||||
######## SHANTIH! SHANTIH! SHANTIH!
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: Makefile.in,v 1.175 2020/08/29 18:43:21 juergen Exp $
|
||||
# $Id: Makefile.in,v 1.176 2020/09/05 18:58:52 tom Exp $
|
||||
##############################################################################
|
||||
# Copyright 2018-2019,2020 Thomas E. Dickey #
|
||||
# Copyright 1998-2017,2018 Free Software Foundation, Inc. #
|
||||
@ -178,7 +178,7 @@ AUTO_SRC = \
|
||||
init_keytry.h \
|
||||
keys.list
|
||||
|
||||
HEADER_DEPS = \
|
||||
HEADER_DEPS = @INTERNALS_HDR@ \
|
||||
../include/ncurses_cfg.h \
|
||||
../include/ncurses_def.h \
|
||||
../include/ncurses_dll.h \
|
||||
@ -186,7 +186,6 @@ HEADER_DEPS = \
|
||||
../include/term.h \
|
||||
../include/unctrl.h \
|
||||
$(INCDIR)/nc_alloc.h \
|
||||
$(INCDIR)/nc_mingw.h \
|
||||
$(INCDIR)/nc_panel.h \
|
||||
$(INCDIR)/nc_string.h \
|
||||
$(INCDIR)/nc_termios.h \
|
||||
|
@ -44,7 +44,7 @@
|
||||
#define NEED_KEY_EVENT
|
||||
#include <curses.priv.h>
|
||||
|
||||
MODULE_ID("$Id: lib_getch.c,v 1.140 2020/07/18 20:02:24 tom Exp $")
|
||||
MODULE_ID("$Id: lib_getch.c,v 1.141 2020/09/05 22:50:47 tom Exp $")
|
||||
|
||||
#include <fifo_defs.h>
|
||||
|
||||
@ -135,7 +135,7 @@ _nc_use_meta(WINDOW *win)
|
||||
}
|
||||
|
||||
#ifdef USE_TERM_DRIVER
|
||||
# ifdef _WIN32
|
||||
# if defined(_NC_WINDOWS) && !defined(EXP_WIN32_DRIVER)
|
||||
static HANDLE
|
||||
_nc_get_handle(int fd)
|
||||
{
|
||||
@ -156,7 +156,14 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl))
|
||||
#ifdef USE_TERM_DRIVER
|
||||
TERMINAL_CONTROL_BLOCK *TCB = TCBOf(sp);
|
||||
rc = TCBOf(sp)->drv->td_testmouse(TCBOf(sp), delay EVENTLIST_2nd(evl));
|
||||
# ifdef _WIN32
|
||||
# if defined(EXP_WIN32_DRIVER)
|
||||
/* if we emulate terminfo on console, we have to use the console routine */
|
||||
if (IsTermInfoOnConsole(sp)) {
|
||||
rc = _nc_console_testmouse(sp,
|
||||
_nc_console_handle(sp->_ifd),
|
||||
delay EVENTLIST_2nd(evl));
|
||||
} else
|
||||
# elif defined(_NC_WINDOWS)
|
||||
/* if we emulate terminfo on console, we have to use the console routine */
|
||||
if (IsTermInfoOnConsole(sp)) {
|
||||
HANDLE fd = _nc_get_handle(sp->_ifd);
|
||||
@ -164,29 +171,36 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl))
|
||||
} else
|
||||
# endif
|
||||
rc = TCB->drv->td_testmouse(TCB, delay EVENTLIST_2nd(evl));
|
||||
#else
|
||||
#if USE_SYSMOUSE
|
||||
#else /* !USE_TERM_DRIVER */
|
||||
# if USE_SYSMOUSE
|
||||
if ((sp->_mouse_type == M_SYSMOUSE)
|
||||
&& (sp->_sysmouse_head < sp->_sysmouse_tail)) {
|
||||
rc = TW_MOUSE;
|
||||
} else
|
||||
#endif
|
||||
# endif
|
||||
{
|
||||
# if defined(EXP_WIN32_DRIVER)
|
||||
rc = _nc_console_testmouse(sp,
|
||||
_nc_console_handle(sp->_ifd),
|
||||
delay
|
||||
EVENTLIST_2nd(evl));
|
||||
# else
|
||||
rc = _nc_timed_wait(sp,
|
||||
TWAIT_MASK,
|
||||
delay,
|
||||
(int *) 0
|
||||
EVENTLIST_2nd(evl));
|
||||
#if USE_SYSMOUSE
|
||||
# endif
|
||||
# if USE_SYSMOUSE
|
||||
if ((sp->_mouse_type == M_SYSMOUSE)
|
||||
&& (sp->_sysmouse_head < sp->_sysmouse_tail)
|
||||
&& (rc == 0)
|
||||
&& (errno == EINTR)) {
|
||||
rc |= TW_MOUSE;
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
#endif /* USE_TERM_DRIVER */
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -291,31 +305,54 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
|
||||
} else
|
||||
#endif
|
||||
{ /* Can block... */
|
||||
#ifdef USE_TERM_DRIVER
|
||||
#if defined(USE_TERM_DRIVER)
|
||||
int buf;
|
||||
#ifdef _WIN32
|
||||
# if defined(EXP_WIN32_DRIVER)
|
||||
if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && sp->_cbreak) {
|
||||
# if USE_PTHREADS_EINTR
|
||||
if ((pthread_self) && (pthread_kill) && (pthread_equal))
|
||||
_nc_globals.read_thread = pthread_self();
|
||||
# endif
|
||||
n = _nc_console_read(sp,
|
||||
_nc_console_handle(sp->_ifd),
|
||||
&buf);
|
||||
# if USE_PTHREADS_EINTR
|
||||
_nc_globals.read_thread = 0;
|
||||
# endif
|
||||
} else
|
||||
# elif defined(_NC_WINDOWS)
|
||||
if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && sp->_cbreak)
|
||||
n = _nc_mingw_console_read(sp,
|
||||
_nc_get_handle(sp->_ifd),
|
||||
&buf);
|
||||
else
|
||||
#endif
|
||||
# endif /* EXP_WIN32_DRIVER */
|
||||
n = CallDriver_1(sp, td_read, &buf);
|
||||
ch = buf;
|
||||
#else
|
||||
#else /* !USE_TERM_DRIVER */
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
int buf;
|
||||
#endif
|
||||
unsigned char c2 = 0;
|
||||
# if USE_PTHREADS_EINTR
|
||||
# if USE_WEAK_SYMBOLS
|
||||
#if USE_PTHREADS_EINTR
|
||||
#if USE_WEAK_SYMBOLS
|
||||
if ((pthread_self) && (pthread_kill) && (pthread_equal))
|
||||
# endif
|
||||
#endif
|
||||
_nc_globals.read_thread = pthread_self();
|
||||
# endif
|
||||
#endif
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
n = _nc_console_read(sp,
|
||||
_nc_console_handle(sp->_ifd),
|
||||
&buf);
|
||||
c2 = buf;
|
||||
#else
|
||||
n = (int) read(sp->_ifd, &c2, (size_t) 1);
|
||||
#endif
|
||||
#if USE_PTHREADS_EINTR
|
||||
_nc_globals.read_thread = 0;
|
||||
#endif
|
||||
ch = c2;
|
||||
#endif
|
||||
#endif /* USE_TERM_DRIVER */
|
||||
}
|
||||
|
||||
if ((n == -1) || (n == 0)) {
|
||||
|
@ -46,7 +46,7 @@
|
||||
#include <sys/termio.h> /* needed for ISC */
|
||||
#endif
|
||||
|
||||
MODULE_ID("$Id: lib_initscr.c,v 1.45 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_initscr.c,v 1.47 2020/09/06 20:48:55 tom Exp $")
|
||||
|
||||
NCURSES_EXPORT(WINDOW *)
|
||||
initscr(void)
|
||||
@ -66,10 +66,9 @@ initscr(void)
|
||||
|
||||
_nc_globals.init_screen = TRUE;
|
||||
|
||||
if ((env = getenv("TERM")) == 0
|
||||
|| *env == '\0') {
|
||||
env = "unknown";
|
||||
}
|
||||
env = getenv("TERM");
|
||||
(void) CHECK_TERM_ENV(env, "unknown");
|
||||
|
||||
if ((name = strdup(env)) == NULL) {
|
||||
fprintf(stderr, "Error opening allocating $TERM.\n");
|
||||
ExitProgram(EXIT_FAILURE);
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
#include <tic.h>
|
||||
|
||||
MODULE_ID("$Id: lib_newterm.c,v 1.102 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_newterm.c,v 1.103 2020/09/05 21:34:04 tom Exp $")
|
||||
|
||||
#ifdef USE_TERM_DRIVER
|
||||
#define NumLabels InfoOf(SP_PARM).numlabels
|
||||
@ -88,6 +88,12 @@ _nc_initscr(NCURSES_SP_DCL0)
|
||||
buf.c_oflag &= (unsigned) ~(ONLCR);
|
||||
#elif HAVE_SGTTY_H
|
||||
buf.sg_flags &= ~(ECHO | CRMOD);
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
buf.dwFlagIn = CONMODE_IN_DEFAULT;
|
||||
buf.dwFlagOut = CONMODE_OUT_DEFAULT | VT_FLAG_OUT;
|
||||
if (WINCONSOLE.isTermInfoConsole) {
|
||||
buf.dwFlagIn |= VT_FLAG_IN;
|
||||
}
|
||||
#else
|
||||
memset(&buf, 0, sizeof(buf));
|
||||
#endif
|
||||
@ -195,6 +201,11 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
|
||||
current = CURRENT_SCREEN;
|
||||
its_term = (current ? current->_term : 0);
|
||||
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
_setmode(fileno(_ifp), _O_BINARY);
|
||||
_setmode(fileno(_ofp), _O_BINARY);
|
||||
#endif
|
||||
|
||||
INIT_TERM_DRIVER();
|
||||
/* this loads the capability entry, then sets LINES and COLS */
|
||||
if (
|
||||
|
@ -35,7 +35,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
/*
|
||||
* $Id: curses.priv.h,v 1.634 2020/08/29 20:11:24 tom Exp $
|
||||
* $Id: curses.priv.h,v 1.636 2020/09/06 20:53:41 tom Exp $
|
||||
*
|
||||
* curses.priv.h
|
||||
*
|
||||
@ -297,12 +297,11 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t);
|
||||
#define NO_TERMINAL 0
|
||||
#endif
|
||||
|
||||
#define CHECK_TERM_ENV(env, isNull, NOTERM) \
|
||||
(isNull = ((env == 0) || (*env == 0)), \
|
||||
(env = (isNull \
|
||||
? NOTERM \
|
||||
: env), \
|
||||
(isNull = ((env == 0) || (*env == 0)))))
|
||||
#define CHECK_TERM_ENV(term_env, no_terminal) \
|
||||
(term_env = (NonEmpty(term_env) \
|
||||
? term_env \
|
||||
: no_terminal), \
|
||||
!NonEmpty(term_env))
|
||||
|
||||
/*
|
||||
* Note: ht/cbt expansion flakes out randomly under Linux 1.1.47, but only
|
||||
|
@ -84,7 +84,7 @@
|
||||
#undef USE_OLD_TTY
|
||||
#endif /* USE_OLD_TTY */
|
||||
|
||||
MODULE_ID("$Id: lib_baudrate.c,v 1.44 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_baudrate.c,v 1.45 2020/09/05 21:15:32 tom Exp $")
|
||||
|
||||
/*
|
||||
* int
|
||||
@ -99,6 +99,7 @@ struct speed {
|
||||
int actual_speed; /* the actual speed */
|
||||
};
|
||||
|
||||
#if !defined(EXP_WIN32_DRIVER)
|
||||
#define DATA(number) { B##number, number }
|
||||
|
||||
static struct speed const speeds[] =
|
||||
@ -188,10 +189,16 @@ static struct speed const speeds[] =
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
#endif /* !EXP_WIN32_DRIVER */
|
||||
|
||||
NCURSES_EXPORT(int)
|
||||
_nc_baudrate(int OSpeed)
|
||||
{
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
/* On Windows this is a noop */
|
||||
(void) OSpeed;
|
||||
return (OK);
|
||||
#else
|
||||
#if !USE_REENTRANT
|
||||
static int last_OSpeed;
|
||||
static int last_baudrate;
|
||||
@ -230,13 +237,16 @@ _nc_baudrate(int OSpeed)
|
||||
#endif
|
||||
}
|
||||
return (result);
|
||||
#endif /* !EXP_WIN32_DRIVER */
|
||||
}
|
||||
|
||||
NCURSES_EXPORT(int)
|
||||
_nc_ospeed(int BaudRate)
|
||||
{
|
||||
int result = 1;
|
||||
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
(void) BaudRate;
|
||||
#else
|
||||
if (BaudRate >= 0) {
|
||||
unsigned i;
|
||||
|
||||
@ -247,6 +257,7 @@ _nc_ospeed(int BaudRate)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return (result);
|
||||
}
|
||||
|
||||
@ -257,6 +268,9 @@ NCURSES_SP_NAME(baudrate) (NCURSES_SP_DCL0)
|
||||
|
||||
T((T_CALLED("baudrate(%p)"), (void *) SP_PARM));
|
||||
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
result = OK;
|
||||
#else
|
||||
/*
|
||||
* In debugging, allow the environment symbol to override when we're
|
||||
* redirecting to a file, so we can construct repeatable test-cases
|
||||
@ -290,7 +304,7 @@ NCURSES_SP_NAME(baudrate) (NCURSES_SP_DCL0)
|
||||
} else {
|
||||
result = ERR;
|
||||
}
|
||||
|
||||
#endif /* !EXP_WIN32_DRIVER */
|
||||
returnCode(result);
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
#include <curses.priv.h>
|
||||
|
||||
MODULE_ID("$Id: lib_kernel.c,v 1.32 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_kernel.c,v 1.33 2020/09/05 21:37:57 tom Exp $")
|
||||
|
||||
static int
|
||||
_nc_vdisable(void)
|
||||
@ -92,6 +92,8 @@ NCURSES_SP_NAME(erasechar) (NCURSES_SP_DCL0)
|
||||
result = termp->Ottyb.c_cc[VERASE];
|
||||
if (result == _nc_vdisable())
|
||||
result = ERR;
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
result = ERR;
|
||||
#else
|
||||
result = termp->Ottyb.sg_erase;
|
||||
#endif
|
||||
@ -127,6 +129,8 @@ NCURSES_SP_NAME(killchar) (NCURSES_SP_DCL0)
|
||||
result = termp->Ottyb.c_cc[VKILL];
|
||||
if (result == _nc_vdisable())
|
||||
result = ERR;
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
result = ERR;
|
||||
#else
|
||||
result = termp->Ottyb.sg_kill;
|
||||
#endif
|
||||
@ -162,7 +166,11 @@ NCURSES_SP_NAME(flushinp) (NCURSES_SP_DCL0)
|
||||
#else
|
||||
errno = 0;
|
||||
do {
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
_nc_console_flush(_nc_console_fd2handle(termp->Filedes));
|
||||
#else
|
||||
ioctl(termp->Filedes, TIOCFLUSH, 0);
|
||||
#endif
|
||||
} while
|
||||
(errno == EINTR);
|
||||
#endif
|
||||
|
@ -50,7 +50,7 @@
|
||||
|
||||
#include <curses.priv.h>
|
||||
|
||||
MODULE_ID("$Id: lib_raw.c,v 1.24 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_raw.c,v 1.25 2020/09/05 21:29:10 tom Exp $")
|
||||
|
||||
#if HAVE_SYS_TERMIO_H
|
||||
#include <sys/termio.h> /* needed for ISC */
|
||||
@ -97,6 +97,8 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0)
|
||||
buf.c_iflag &= (unsigned) ~(COOKED_INPUT);
|
||||
buf.c_cc[VMIN] = 1;
|
||||
buf.c_cc[VTIME] = 0;
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
buf.dwFlagIn &= ~CONMODE_NORAW;
|
||||
#else
|
||||
buf.sg_flags |= RAW;
|
||||
#endif
|
||||
@ -152,6 +154,9 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0)
|
||||
buf.c_lflag |= ISIG;
|
||||
buf.c_cc[VMIN] = 1;
|
||||
buf.c_cc[VTIME] = 0;
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
buf.dwFlagIn |= CONMODE_NORAW;
|
||||
buf.dwFlagIn &= ~CONMODE_NOCBREAK;
|
||||
#else
|
||||
buf.sg_flags |= CBREAK;
|
||||
#endif
|
||||
@ -231,6 +236,8 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0)
|
||||
buf.c_lflag |= ISIG | ICANON |
|
||||
(termp->Ottyb.c_lflag & IEXTEN);
|
||||
buf.c_iflag |= COOKED_INPUT;
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
buf.dwFlagIn |= CONMODE_NORAW;
|
||||
#else
|
||||
buf.sg_flags &= ~(RAW | CBREAK);
|
||||
#endif
|
||||
@ -283,6 +290,8 @@ NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0)
|
||||
#ifdef TERMIOS
|
||||
buf.c_lflag |= ICANON;
|
||||
buf.c_iflag |= ICRNL;
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
buf.dwFlagIn |= (CONMODE_NOCBREAK | CONMODE_NORAW);
|
||||
#else
|
||||
buf.sg_flags &= ~CBREAK;
|
||||
#endif
|
||||
|
@ -49,7 +49,7 @@
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
MODULE_ID("$Id: lib_setup.c,v 1.207 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_setup.c,v 1.210 2020/09/06 21:03:33 tom Exp $")
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
@ -305,11 +305,19 @@ _nc_get_screensize(SCREEN *sp,
|
||||
bool useEnv = _nc_prescreen.use_env;
|
||||
bool useTioctl = _nc_prescreen.use_tioctl;
|
||||
|
||||
#ifdef EXP_WIN32_DRIVER
|
||||
/* If we are here, then Windows console is used in terminfo mode.
|
||||
We need to figure out the size using the console API
|
||||
*/
|
||||
_nc_console_size(linep, colp);
|
||||
T(("screen size: winconsole lines = %d columns = %d", *linep, *colp));
|
||||
#else
|
||||
/* figure out the size of the screen */
|
||||
T(("screen size: terminfo lines = %d columns = %d", lines, columns));
|
||||
|
||||
*linep = (int) lines;
|
||||
*colp = (int) columns;
|
||||
#endif
|
||||
|
||||
#if NCURSES_SP_FUNCS
|
||||
if (sp) {
|
||||
@ -566,7 +574,7 @@ NCURSES_EXPORT(int)
|
||||
_nc_unicode_locale(void)
|
||||
{
|
||||
int result = 0;
|
||||
#if defined(_WIN32) && USE_WIDEC_SUPPORT
|
||||
#if defined(_NC_WINDOWS) && USE_WIDEC_SUPPORT
|
||||
result = 1;
|
||||
#elif HAVE_LANGINFO_CODESET
|
||||
char *env = nl_langinfo(CODESET);
|
||||
@ -655,13 +663,15 @@ TINFO_SETUP_TERM(TERMINAL **tp,
|
||||
|
||||
if (tname == 0) {
|
||||
tname = getenv("TERM");
|
||||
if (tname == 0 || *tname == '\0') {
|
||||
#ifdef USE_TERM_DRIVER
|
||||
#if defined(USE_TERM_DRIVER) && !defined(EXP_WIN32_DRIVER)
|
||||
if (!NonEmpty(tname))
|
||||
tname = "unknown";
|
||||
#else
|
||||
if (!CHECK_TERM_ENV(tname, NO_TERMINAL)) {
|
||||
T(("Failure with TERM=%s", tname));
|
||||
ret_error0(TGETENT_ERR, "TERM environment variable not set.\n");
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
myname = strdup(tname);
|
||||
|
||||
|
@ -52,7 +52,7 @@
|
||||
#include <termcap.h> /* ospeed */
|
||||
#include <tic.h>
|
||||
|
||||
MODULE_ID("$Id: lib_tputs.c,v 1.103 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_tputs.c,v 1.104 2020/09/05 18:08:11 tom Exp $")
|
||||
|
||||
NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */
|
||||
NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */
|
||||
@ -129,7 +129,6 @@ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_DCL0)
|
||||
TR(TRACE_CHARPUT, ("flushing %ld bytes", (unsigned long) amount));
|
||||
while (amount) {
|
||||
ssize_t res = write(SP_PARM->_ofd, buf, amount);
|
||||
|
||||
if (res > 0) {
|
||||
/* if the write was incomplete, try again */
|
||||
amount -= (size_t) res;
|
||||
|
@ -42,7 +42,7 @@
|
||||
#define CUR SP_TERMTYPE
|
||||
#endif
|
||||
|
||||
MODULE_ID("$Id: lib_ttyflags.c,v 1.34 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_ttyflags.c,v 1.36 2020/09/05 22:54:47 tom Exp $")
|
||||
|
||||
NCURSES_EXPORT(int)
|
||||
NCURSES_SP_NAME(_nc_get_tty_mode) (NCURSES_SP_DCLx TTY * buf)
|
||||
@ -156,6 +156,8 @@ NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_DCL0)
|
||||
#ifdef TERMIOS
|
||||
if (termp->Ottyb.c_oflag & OFLAGS_TABS)
|
||||
tab = back_tab = NULL;
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
/* noop */
|
||||
#else
|
||||
if (termp->Ottyb.sg_flags & XTABS)
|
||||
tab = back_tab = NULL;
|
||||
@ -193,6 +195,8 @@ NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_DCL0)
|
||||
if (_nc_get_tty_mode(&termp->Nttyb) == OK) {
|
||||
#ifdef TERMIOS
|
||||
termp->Nttyb.c_oflag &= (unsigned) (~OFLAGS_TABS);
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
/* noop */
|
||||
#else
|
||||
termp->Nttyb.sg_flags &= (unsigned) (~XTABS);
|
||||
#endif
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
#include <curses.priv.h>
|
||||
|
||||
MODULE_ID("$Id: lib_tracebits.c,v 1.28 2020/02/02 23:34:34 tom Exp $")
|
||||
MODULE_ID("$Id: lib_tracebits.c,v 1.30 2020/09/05 22:54:47 tom Exp $")
|
||||
|
||||
#if HAVE_SYS_TERMIO_H
|
||||
#include <sys/termio.h> /* needed for ISC */
|
||||
@ -72,9 +72,15 @@ MODULE_ID("$Id: lib_tracebits.c,v 1.28 2020/02/02 23:34:34 tom Exp $")
|
||||
|
||||
#ifdef TRACE
|
||||
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
#define BITNAMELEN 36
|
||||
#else
|
||||
#define BITNAMELEN 8
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
unsigned int val;
|
||||
const char name[8];
|
||||
const char name[BITNAMELEN];
|
||||
} BITNAMES;
|
||||
|
||||
#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size)
|
||||
@ -212,6 +218,36 @@ _nc_trace_ttymode(TTY * tty)
|
||||
if (tty->c_lflag & ALLLOCAL)
|
||||
lookup_bits(buf, lflags, "lflags", tty->c_lflag);
|
||||
}
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
#define DATA(name) { name, { #name } }
|
||||
static const BITNAMES dwFlagsOut[] =
|
||||
{
|
||||
DATA(ENABLE_PROCESSED_OUTPUT),
|
||||
DATA(ENABLE_WRAP_AT_EOL_OUTPUT),
|
||||
DATA(ENABLE_VIRTUAL_TERMINAL_PROCESSING),
|
||||
DATA(DISABLE_NEWLINE_AUTO_RETURN),
|
||||
DATA(ENABLE_LVB_GRID_WORLDWIDE)
|
||||
};
|
||||
static const BITNAMES dwFlagsIn[] =
|
||||
{
|
||||
DATA(ENABLE_PROCESSED_INPUT),
|
||||
DATA(ENABLE_LINE_INPUT),
|
||||
DATA(ENABLE_ECHO_INPUT),
|
||||
DATA(ENABLE_MOUSE_INPUT),
|
||||
DATA(ENABLE_INSERT_MODE),
|
||||
DATA(ENABLE_QUICK_EDIT_MODE),
|
||||
DATA(ENABLE_EXTENDED_FLAGS),
|
||||
DATA(ENABLE_AUTO_POSITION),
|
||||
DATA(ENABLE_VIRTUAL_TERMINAL_INPUT)
|
||||
};
|
||||
|
||||
buf = _nc_trace_buf(0,
|
||||
8 + sizeof(dwFlagsOut) +
|
||||
8 + sizeof(dwFlagsIn));
|
||||
if (buf != 0) {
|
||||
lookup_bits(buf, dwFlagsIn, "dwIn", tty->dwFlagIn);
|
||||
lookup_bits(buf, dwFlagsOut, "dwOut", tty->dwFlagOut);
|
||||
}
|
||||
#else
|
||||
/* reference: ttcompat(4M) on SunOS 4.1 */
|
||||
#ifndef EVENP
|
||||
|
@ -1,8 +1,8 @@
|
||||
ncurses6 (6.2+20200831) unstable; urgency=low
|
||||
ncurses6 (6.2+20200906) unstable; urgency=low
|
||||
|
||||
* latest weekly patch
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 31 Aug 2020 15:51:51 -0400
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 06 Sep 2020 16:05:44 -0400
|
||||
|
||||
ncurses6 (5.9-20131005) unstable; urgency=low
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
ncurses6 (6.2+20200831) unstable; urgency=low
|
||||
ncurses6 (6.2+20200906) unstable; urgency=low
|
||||
|
||||
* latest weekly patch
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 31 Aug 2020 15:51:51 -0400
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 06 Sep 2020 16:05:44 -0400
|
||||
|
||||
ncurses6 (5.9-20131005) unstable; urgency=low
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
ncurses6 (6.2+20200831) unstable; urgency=low
|
||||
ncurses6 (6.2+20200906) unstable; urgency=low
|
||||
|
||||
* latest weekly patch
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 31 Aug 2020 15:51:51 -0400
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 06 Sep 2020 16:05:44 -0400
|
||||
|
||||
ncurses6 (5.9-20120608) unstable; urgency=low
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; $Id: mingw-ncurses.nsi,v 1.415 2020/08/31 19:51:51 tom Exp $
|
||||
; $Id: mingw-ncurses.nsi,v 1.417 2020/09/06 20:05:44 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 "0831"
|
||||
!define VERSION_MMDD "0906"
|
||||
!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: 20200831
|
||||
Release: 20200906
|
||||
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: 20200831
|
||||
Release: 20200906
|
||||
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: 20200831
|
||||
Release: 20200906
|
||||
License: X11
|
||||
Group: Development/Libraries
|
||||
Source: ncurses-%{version}-%{release}.tgz
|
||||
|
@ -31,7 +31,7 @@
|
||||
* Author: Thomas E. Dickey 1997-on *
|
||||
****************************************************************************/
|
||||
/*
|
||||
* $Id: progs.priv.h,v 1.51 2020/08/01 21:07:50 tom Exp $
|
||||
* $Id: progs.priv.h,v 1.52 2020/09/05 19:35:06 tom Exp $
|
||||
*
|
||||
* progs.priv.h
|
||||
*
|
||||
@ -115,6 +115,11 @@ extern char *optarg;
|
||||
extern int optind;
|
||||
#endif /* HAVE_GETOPT_H */
|
||||
|
||||
#undef _NC_WINDOWS
|
||||
#if (defined(_WIN32) || defined(_WIN64))
|
||||
#define _NC_WINDOWS 1
|
||||
#endif
|
||||
|
||||
#define NCURSES_INTERNALS 1
|
||||
#define NCURSES_OPAQUE 0
|
||||
|
||||
|
@ -53,7 +53,7 @@
|
||||
#include <sys/ptem.h>
|
||||
#endif
|
||||
|
||||
MODULE_ID("$Id: reset_cmd.c,v 1.21 2020/05/27 23:46:20 tom Exp $")
|
||||
MODULE_ID("$Id: reset_cmd.c,v 1.23 2020/09/05 22:54:47 tom Exp $")
|
||||
|
||||
/*
|
||||
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
|
||||
@ -363,6 +363,9 @@ default_erase(void)
|
||||
void
|
||||
set_control_chars(TTY * tty_settings, int my_erase, int my_intr, int my_kill)
|
||||
{
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
/* noop */
|
||||
#else
|
||||
if (DISABLED(tty_settings->c_cc[VERASE]) || my_erase >= 0) {
|
||||
tty_settings->c_cc[VERASE] = UChar((my_erase >= 0)
|
||||
? my_erase
|
||||
@ -380,6 +383,7 @@ set_control_chars(TTY * tty_settings, int my_erase, int my_intr, int my_kill)
|
||||
? my_kill
|
||||
: CKILL);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@ -389,6 +393,9 @@ set_control_chars(TTY * tty_settings, int my_erase, int my_intr, int my_kill)
|
||||
void
|
||||
set_conversions(TTY * tty_settings)
|
||||
{
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
/* FIXME */
|
||||
#else
|
||||
#ifdef ONLCR
|
||||
tty_settings->c_oflag |= ONLCR;
|
||||
#endif
|
||||
@ -412,6 +419,7 @@ set_conversions(TTY * tty_settings)
|
||||
tty_settings->c_oflag &= ~OXTABS;
|
||||
#endif /* OXTABS */
|
||||
tty_settings->c_lflag |= (ECHOE | ECHOK);
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool
|
||||
@ -551,15 +559,18 @@ show_tty_change(TTY * old_settings,
|
||||
int which,
|
||||
unsigned def)
|
||||
{
|
||||
unsigned older, newer;
|
||||
unsigned older = 0, newer = 0;
|
||||
char *p;
|
||||
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
/* noop */
|
||||
#else
|
||||
newer = new_settings->c_cc[which];
|
||||
older = old_settings->c_cc[which];
|
||||
|
||||
if (older == newer && older == def)
|
||||
return;
|
||||
|
||||
#endif
|
||||
(void) fprintf(stderr, "%s %s ", name, older == newer ? "is" : "set to");
|
||||
|
||||
if (DISABLED(newer)) {
|
||||
@ -603,9 +614,13 @@ reset_flush(void)
|
||||
void
|
||||
print_tty_chars(TTY * old_settings, TTY * new_settings)
|
||||
{
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
/* noop */
|
||||
#else
|
||||
show_tty_change(old_settings, new_settings, "Erase", VERASE, CERASE);
|
||||
show_tty_change(old_settings, new_settings, "Kill", VKILL, CKILL);
|
||||
show_tty_change(old_settings, new_settings, "Interrupt", VINTR, CINTR);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if HAVE_SIZECHANGE
|
||||
|
11
progs/tset.c
11
progs/tset.c
@ -98,7 +98,7 @@
|
||||
char *ttyname(int fd);
|
||||
#endif
|
||||
|
||||
MODULE_ID("$Id: tset.c,v 1.123 2020/08/29 23:32:18 tom Exp $")
|
||||
MODULE_ID("$Id: tset.c,v 1.125 2020/09/05 22:54:47 tom Exp $")
|
||||
|
||||
#ifndef environ
|
||||
extern char **environ;
|
||||
@ -231,8 +231,11 @@ typedef struct speeds {
|
||||
int speed;
|
||||
} SPEEDS;
|
||||
|
||||
#if (defined(_WIN32) || defined(_WIN64))
|
||||
static const SPEEDS speeds[] = { { "0", 0 } };
|
||||
#if defined(EXP_WIN32_DRIVER)
|
||||
static const SPEEDS speeds[] =
|
||||
{
|
||||
{"0", 0}
|
||||
};
|
||||
#else
|
||||
static const SPEEDS speeds[] =
|
||||
{
|
||||
@ -843,7 +846,7 @@ main(int argc, char **argv)
|
||||
oldmode = mode;
|
||||
#ifdef TERMIOS
|
||||
ospeed = (NCURSES_OSPEED) cfgetospeed(&mode);
|
||||
#elif (defined(_WIN32) || defined(_WIN64))
|
||||
#elif defined(EXP_WIN32_DRIVER)
|
||||
ospeed = 0;
|
||||
#else
|
||||
ospeed = (NCURSES_OSPEED) mode.sg_ospeed;
|
||||
|
@ -30,7 +30,7 @@
|
||||
/*
|
||||
* Author: Thomas E. Dickey
|
||||
*
|
||||
* $Id: dots_termcap.c,v 1.25 2020/08/29 16:22:03 juergen Exp $
|
||||
* $Id: dots_termcap.c,v 1.26 2020/09/05 17:58:47 juergen Exp $
|
||||
*
|
||||
* A simple demo of the termcap interface.
|
||||
*/
|
||||
@ -155,7 +155,7 @@ my_napms(int ms)
|
||||
{
|
||||
if (ms > 0) {
|
||||
#if defined(_NC_WINDOWS) || !HAVE_GETTIMEOFDAY
|
||||
Sleep((DWORD) ms);
|
||||
Sleep((unsigned int) ms);
|
||||
#else
|
||||
struct timeval data;
|
||||
data.tv_sec = 0;
|
||||
|
@ -30,7 +30,7 @@
|
||||
/*
|
||||
* Author: Thomas E. Dickey - 2000
|
||||
*
|
||||
* $Id: railroad.c,v 1.24 2020/02/02 23:34:34 tom Exp $
|
||||
* $Id: railroad.c,v 1.25 2020/09/05 21:43:37 tom Exp $
|
||||
*
|
||||
* A simple demo of the termcap interface.
|
||||
*/
|
||||
@ -191,7 +191,11 @@ railroad(char **args)
|
||||
int z;
|
||||
|
||||
if (name == 0)
|
||||
#ifdef EXP_WIN32_DRIVER
|
||||
name = "ms-terminal";
|
||||
#else
|
||||
name = "dumb";
|
||||
#endif
|
||||
|
||||
InitAndCatch(z = tgetent(buffer, name), onsig);
|
||||
if (z >= 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user