-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.251 2023/10/28 16:54:24 tom Exp $
+-- $Id: INSTALL,v 1.253 2023/11/03 20:55:47 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
to read the BSD CONVERSION NOTES section below.
If you are trying to build applications using gpm with ncurses,
-read the USING NCURSES WITH GPM section below.
+read the USING GPM section below.
If you are cross-compiling, see the note below on
BUILDING WITH A CROSS-COMPILER.
The --prefix option to configure changes the root directory for installing
ncurses. The default is normally in subdirectories of /usr/local, except
for systems where ncurses is normally installed as a system library (see
- "IF YOU ARE A SYSTEM INTEGRATOR"). Use --prefix=/usr to replace your
+ "FOR SYSTEM INTEGRATORS"). Use --prefix=/usr to replace your
default curses distribution.
The package gets installed beneath the --prefix directory as follows:
You can make curses and terminfo fall back to an existing file of termcap
definitions by configuring with --enable-termcap. If you do this, the
library will search /etc/termcap before the terminfo database, and will
- also interpret the contents of the TERM environment variable. See the
+ also interpret the contents of the $TERM environment variable. See the
section BSD CONVERSION NOTES below.
3. Type 'make'. Ignore any warnings; no error messages should be produced.
Specify a search-list of terminfo directories which will be compiled
into the ncurses library (default: DATADIR/terminfo)
- This is a colon-separated list, like the TERMINFO_DIRS environment
+ This is a colon-separated list, like the $TERMINFO_DIRS environment
variable.
--with-termlib[=XXX]
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.4022 2023/10/28 18:20:39 tom Exp $
+-- $Id: NEWS,v 1.4025 2023/11/04 21:45:02 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information.
+20231104
+ + modify reset command to avoid altering clocal if the terminal uses a
+ modem (prompted by discussion with Werner Fink, Michal Suchanek,
+ OpenSUSE #1201384, Debian #60377).
+ + build-fixes for --with-caps variations.
+ + correct a couple of section-references in INSTALL.
+
20231028
+ move xterm focus mode 1004 from xterm+sm+1006 into xterm+focus as
fe/fd capabilities, like vim (vim-pr #13440).
-5:0:10 6.4 20231028
+5:0:10 6.4 20231104
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.1574 2023/10/28 09:18:03 tom Exp $
+# $Id: dist.mk,v 1.1575 2023/11/04 10:01:01 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 6
NCURSES_MINOR = 4
-NCURSES_PATCH = 20231028
+NCURSES_PATCH = 20231104
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
-#define KEY_EVENT 0633 /* We were interrupted by an event */
+#define KEY_EVENT 0634 /* We were interrupted by an event */
#endif /* NCURSES_WGETCH_EVENTS */
#include <locale.h>
#endif
-MODULE_ID("$Id: lib_setup.c,v 1.229 2023/10/16 23:05:28 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.230 2023/11/04 21:02:27 tom Exp $")
/****************************************************************************
*
}
}
-#ifdef USE_CHECK_SIZE
+#if defined(USE_CHECK_SIZE) && defined(user6) && defined(user7)
static const char *
skip_csi(const char *value)
{
_nc_default_screensize(termp, linep, colp);
}
#else /* !USE_CHECK_SIZE */
-#define _nc_check_screensize(termp, linep, colp) /* nothing */
+#define _nc_check_screensize(termp, linep, colp) /* nothing */
#endif
#endif /* !(defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER)) */
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: lib_tparm.c,v 1.152 2023/09/16 16:30:27 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.153 2023/11/04 19:28:41 tom Exp $")
/*
* char *
want_type = 2; /* function key #1, transmit string #2 */
else if (CHECK_CAP(plab_norm))
want_type = 2; /* label #1, show string #2 */
+#ifdef pkey_plab
else if (CHECK_CAP(pkey_plab))
want_type = 6; /* function key #1, type string #2, show string #3 */
+#endif
#if NCURSES_XNAMES
else {
char *check;
-ncurses6 (6.4+20231028) unstable; urgency=low
+ncurses6 (6.4+20231104) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 28 Oct 2023 05:18:03 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 30 Oct 2023 19:59:49 -0400
ncurses6 (5.9+20131005) unstable; urgency=low
-ncurses6 (6.4+20231028) unstable; urgency=low
+ncurses6 (6.4+20231104) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 28 Oct 2023 05:18:03 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 30 Oct 2023 19:59:49 -0400
ncurses6 (5.9+20131005) unstable; urgency=low
-ncurses6 (6.4+20231028) unstable; urgency=low
+ncurses6 (6.4+20231104) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 28 Oct 2023 05:18:03 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 30 Oct 2023 19:59:49 -0400
ncurses6 (5.9+20120608) unstable; urgency=low
-; $Id: mingw-ncurses.nsi,v 1.614 2023/10/28 09:18:03 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.615 2023/11/03 07:58:06 tom Exp $\r
\r
; TODO add examples\r
; TODO bump ABI to 6\r
!define VERSION_MAJOR "6"\r
!define VERSION_MINOR "4"\r
!define VERSION_YYYY "2023"\r
-!define VERSION_MMDD "1028"\r
+!define VERSION_MMDD "1104"\r
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
\r
!define MY_ABI "5"\r
Summary: shared libraries for terminal handling
Name: mingw32-ncurses6
Version: 6.4
-Release: 20231028
+Release: 20231104
License: X11
Group: Development/Libraries
URL: https://invisible-island.net/ncurses/
Summary: shared libraries for terminal handling
Name: ncurses6
Version: 6.4
-Release: 20231028
+Release: 20231104
License: X11
Group: Development/Libraries
URL: https://invisible-island.net/ncurses/
Summary: Curses library with POSIX thread support.
Name: ncursest6
Version: 6.4
-Release: 20231028
+Release: 20231104
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
#include <sys/ptem.h>
#endif
-MODULE_ID("$Id: reset_cmd.c,v 1.29 2023/01/07 21:50:34 tom Exp $")
+MODULE_ID("$Id: reset_cmd.c,v 1.35 2023/11/05 00:02:37 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
# endif
#endif
+#define set_flags(target, mask) target |= mask
+#define clear_flags(target, mask) target &= ~((unsigned)(mask))
+
static FILE *my_file;
static bool use_reset = FALSE; /* invoked as reset */
#define reset_char(item, value) \
tty_settings->c_cc[item] = CHK(tty_settings->c_cc[item], value)
+/*
+ * Simplify ifdefs
+ */
+#ifndef BSDLY
+#define BSDLY 0
+#endif
+#ifndef CRDLY
+#define CRDLY 0
+#endif
+#ifndef ECHOCTL
+#define ECHOCTL 0
+#endif
+#ifndef ECHOKE
+#define ECHOKE 0
+#endif
+#ifndef ECHOPRT
+#define ECHOPRT 0
+#endif
+#ifndef FFDLY
+#define FFDLY 0
+#endif
+#ifndef IMAXBEL
+#define IMAXBEL 0
+#endif
+#ifndef IUCLC
+#define IUCLC 0
+#endif
+#ifndef IXANY
+#define IXANY 0
+#endif
+#ifndef NLDLY
+#define NLDLY 0
+#endif
+#ifndef OCRNL
+#define OCRNL 0
+#endif
+#ifndef OFDEL
+#define OFDEL 0
+#endif
+#ifndef OFILL
+#define OFILL 0
+#endif
+#ifndef OLCUC
+#define OLCUC 0
+#endif
+#ifndef ONLCR
+#define ONLCR 0
+#endif
+#ifndef ONLRET
+#define ONLRET 0
+#endif
+#ifndef ONOCR
+#define ONOCR 0
+#endif
+#ifndef OXTABS
+#define OXTABS 0
+#endif
+#ifndef TAB3
+#define TAB3 0
+#endif
+#ifndef TABDLY
+#define TABDLY 0
+#endif
+#ifndef TOSTOP
+#define TOSTOP 0
+#endif
+#ifndef VTDLY
+#define VTDLY 0
+#endif
+#ifndef XCASE
+#define XCASE 0
+#endif
+
/*
* Reset the terminal mode bits to a sensible state. Very useful after
* a child program dies in raw mode.
void
reset_tty_settings(int fd, TTY * tty_settings, int noset)
{
+ unsigned mask;
+#ifdef TIOCMGET
+ int modem_bits;
+#endif
+
GET_TTY(fd, tty_settings);
#ifdef TERMIOS
reset_char(VWERASE, CWERASE);
#endif
- tty_settings->c_iflag &= ~((unsigned) (IGNBRK
- | PARMRK
- | INPCK
- | ISTRIP
- | INLCR
- | IGNCR
-#ifdef IUCLC
- | IUCLC
-#endif
-#ifdef IXANY
- | IXANY
-#endif
- | IXOFF));
-
- tty_settings->c_iflag |= (BRKINT
- | IGNPAR
- | ICRNL
- | IXON
-#ifdef IMAXBEL
- | IMAXBEL
-#endif
- );
-
- tty_settings->c_oflag &= ~((unsigned) (0
-#ifdef OLCUC
- | OLCUC
-#endif
-#ifdef OCRNL
- | OCRNL
-#endif
-#ifdef ONOCR
- | ONOCR
-#endif
-#ifdef ONLRET
- | ONLRET
-#endif
-#ifdef OFILL
- | OFILL
-#endif
-#ifdef OFDEL
- | OFDEL
-#endif
-#ifdef NLDLY
- | NLDLY
-#endif
-#ifdef CRDLY
- | CRDLY
-#endif
-#ifdef TABDLY
- | TABDLY
-#endif
-#ifdef BSDLY
- | BSDLY
-#endif
-#ifdef VTDLY
- | VTDLY
-#endif
-#ifdef FFDLY
- | FFDLY
-#endif
- ));
-
- tty_settings->c_oflag |= (OPOST
-#ifdef ONLCR
- | ONLCR
-#endif
- );
-
- tty_settings->c_cflag &= ~((unsigned) (CSIZE
- | CSTOPB
- | PARENB
- | PARODD
- | CLOCAL));
- tty_settings->c_cflag |= (CS8 | CREAD);
- tty_settings->c_lflag &= ~((unsigned) (ECHONL
- | NOFLSH
-#ifdef TOSTOP
- | TOSTOP
-#endif
-#ifdef ECHOPTR
- | ECHOPRT
-#endif
-#ifdef XCASE
- | XCASE
-#endif
- ));
-
- tty_settings->c_lflag |= (ISIG
- | ICANON
- | ECHO
- | ECHOE
- | ECHOK
-#ifdef ECHOCTL
- | ECHOCTL
-#endif
-#ifdef ECHOKE
- | ECHOKE
-#endif
- );
-#endif
+ clear_flags(tty_settings->c_iflag, (IGNBRK
+ | PARMRK
+ | INPCK
+ | ISTRIP
+ | INLCR
+ | IGNCR
+ | IUCLC
+ | IXANY
+ | IXOFF));
+
+ set_flags(tty_settings->c_iflag, (BRKINT
+ | IGNPAR
+ | ICRNL
+ | IXON
+ | IMAXBEL));
+
+ clear_flags(tty_settings->c_oflag, (0
+ | OLCUC
+ | OCRNL
+ | ONOCR
+ | ONLRET
+ | OFILL
+ | OFDEL
+ | NLDLY
+ | CRDLY
+ | TABDLY
+ | BSDLY
+ | VTDLY
+ | FFDLY));
+
+ set_flags(tty_settings->c_oflag, (OPOST
+ | ONLCR));
+
+ mask = (CSIZE | CSTOPB | PARENB | PARODD);
+#ifdef TIOCMGET
+ /* leave clocal alone if this appears to use a modem */
+ if (ioctl(fd, TIOCMGET, &modem_bits) == -1)
+ mask |= CLOCAL;
+#else
+ /* cannot check - use the behavior from tset */
+ mask |= CLOCAL;
+#endif
+ clear_flags(tty_settings->c_cflag, mask);
+
+ set_flags(tty_settings->c_cflag, (CS8 | CREAD));
+ clear_flags(tty_settings->c_lflag, (ECHONL
+ | NOFLSH
+ | TOSTOP
+ | ECHOPRT
+ | XCASE));
+
+ set_flags(tty_settings->c_lflag, (ISIG
+ | ICANON
+ | ECHO
+ | ECHOE
+ | ECHOK
+ | ECHOCTL
+ | ECHOKE));
+#endif /* TERMIOS */
if (!noset) {
SET_TTY(fd, tty_settings);
#if defined(EXP_WIN32_DRIVER)
/* FIXME */
#else
-#ifdef ONLCR
- tty_settings->c_oflag |= ONLCR;
-#endif
- tty_settings->c_iflag |= ICRNL;
- tty_settings->c_lflag |= ECHO;
-#ifdef OXTABS
- tty_settings->c_oflag |= OXTABS;
-#endif /* OXTABS */
+ set_flags(tty_settings->c_oflag, ONLCR);
+ set_flags(tty_settings->c_iflag, ICRNL);
+ set_flags(tty_settings->c_lflag, ECHO);
+ set_flags(tty_settings->c_oflag, OXTABS);
/* test used to be tgetflag("NL") */
if (VALID_STRING(newline) && newline[0] == '\n' && !newline[1]) {
/* Newline, not linefeed. */
-#ifdef ONLCR
- tty_settings->c_oflag &= ~((unsigned) ONLCR);
-#endif
- tty_settings->c_iflag &= ~((unsigned) ICRNL);
+ clear_flags(tty_settings->c_oflag, ONLCR);
+ clear_flags(tty_settings->c_iflag, ICRNL);
}
-#ifdef OXTABS
+#if OXTABS
/* test used to be tgetflag("pt") */
if (VALID_STRING(set_tab) && VALID_STRING(clear_all_tabs))
- tty_settings->c_oflag &= ~OXTABS;
+ clear_flags(tty_settings->c_oflag, OXTABS);
#endif /* OXTABS */
- tty_settings->c_lflag |= (ECHOE | ECHOK);
+ set_flags(tty_settings->c_lflag, (ECHOE | ECHOK));
#endif
}
bool need_flush = FALSE;
(void) old_settings;
-#ifdef TAB3
+#if TAB3
if (old_settings != 0 &&
old_settings->c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) {
old_settings->c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET);
if (VALID_STRING(clear_margins)) {
need_flush |= sent_string(clear_margins);
- } else
+ }
#if defined(set_lr_margin)
- if (VALID_STRING(set_lr_margin)) {
+ else if (VALID_STRING(set_lr_margin)) {
need_flush |= sent_string(TIPARM_2(set_lr_margin, 0, columns - 1));
- } else
+ }
#endif
#if defined(set_left_margin_parm) && defined(set_right_margin_parm)
- if (VALID_STRING(set_left_margin_parm)
- && VALID_STRING(set_right_margin_parm)) {
+ else if (VALID_STRING(set_left_margin_parm)
+ && VALID_STRING(set_right_margin_parm)) {
need_flush |= sent_string(TIPARM_1(set_left_margin_parm, 0));
need_flush |= sent_string(TIPARM_1(set_right_margin_parm,
columns - 1));
- } else
+ }
#endif
- if (VALID_STRING(set_left_margin)
- && VALID_STRING(set_right_margin)) {
+ else if (VALID_STRING(set_left_margin)
+ && VALID_STRING(set_right_margin)) {
need_flush |= to_left_margin();
need_flush |= sent_string(set_left_margin);
if (VALID_STRING(parm_right_cursor)) {
#include <progs.priv.h>
#include <tty_settings.h>
-MODULE_ID("$Id: tabs.c,v 1.52 2023/05/27 20:13:10 tom Exp $")
+MODULE_ID("$Id: tabs.c,v 1.53 2023/11/04 20:46:09 tom Exp $")
static GCC_NORETURN void usage(void);
}
tputs(set_left_margin, 1, putch);
}
- } else if (VALID_STRING(set_left_margin_parm)) {
+ }
+#if defined(set_left_margin_parm) && defined(set_right_margin_parm)
+ else if (VALID_STRING(set_left_margin_parm)) {
result = TRUE;
if (!no_op) {
if (VALID_STRING(set_right_margin_parm)) {
tputs(TIPARM_2(set_left_margin_parm, margin, max_cols), 1, putch);
}
}
- } else if (VALID_STRING(set_lr_margin)) {
+ }
+#endif
+#if defined(set_lr_margin)
+ else if (VALID_STRING(set_lr_margin)) {
result = TRUE;
if (!no_op) {
tputs(TIPARM_2(set_lr_margin, margin, max_cols), 1, putch);
}
}
+#endif
return result;
}
#include <parametrized.h>
#include <transform.h>
-MODULE_ID("$Id: tic.c,v 1.323 2023/09/30 21:17:23 Branden.Robinson Exp $")
+MODULE_ID("$Id: tic.c,v 1.324 2023/11/04 19:43:43 tom Exp $")
#define STDIN_NAME "<stdin>"
* In particular, any ECMA-48 terminal should support these, though the details
* for u9 are implementation dependent.
*/
+#if defined(user6) && defined(user7) && defined(user8) && defined(user9)
static void
check_user_6789(TERMTYPE2 *tp)
{
break;
}
}
+#else
+#define check_user_6789(tp) /* nothing */
+#endif
/* other sanity-checks (things that we don't want in the normal
* logic that reads a terminfo entry)