-
- Announcing ncurses 5.2
-
- The ncurses (new curses) library is a free software emulation of
- curses in System V Release 4.0, and more. It uses terminfo format,
- supports pads and color and multiple highlights and forms characters
- and function-key mapping, and has all the other SYSV-curses
- enhancements over BSD curses.
-
- In mid-June 1995, the maintainer of 4.4BSD curses declared that he
- considered 4.4BSD curses obsolete, and is encouraging the keepers of
- Unix releases such as BSD/OS, freeBSD and netBSD to switch over to
- ncurses.
-
- The ncurses code was developed under GNU/Linux. It should port easily
- to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2
- Warp!
+ Announcing ncurses 6.5
+
+Overview
+
+ The ncurses (new curses) library is a free software emulation of
+ curses in System V Release 4.0 (SVr4), and more. It uses terminfo
+ format, supports pads and color and multiple highlights and forms
+ characters and function-key mapping, and has all the other SVr4-curses
+ enhancements over BSD curses. SVr4 curses became the basis of X/Open
+ Curses.
+
+ In mid-June 1995, the maintainer of 4.4BSD curses declared that he
+ considered 4.4BSD curses obsolete, and encouraged the keepers of unix
+ releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
+
+ Since 1995, ncurses has been ported to many systems:
+ * It is used in almost every system based on the Linux kernel (aside
+ from some embedded applications).
+ * It is used as the system curses library on OpenBSD, FreeBSD and
+ MacOS.
+ * It is used in environments such as Cygwin and MinGW. The first of
+ these was EMX on OS/2 Warp.
+ * It is used (though usually not as the system curses) on all of the
+ vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris,
+ Tru64.
+ * It should work readily on any ANSI/POSIX-conforming unix.
The distribution includes the library and support utilities, including
- a terminfo compiler tic(1), a decompiler infocmp(1), clear(1),
- tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full
- manual pages are provided for the library and tools.
-
- The ncurses distribution is available via anonymous FTP at the GNU
- distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses.
- It is also available at [2]ftp://dickey.his.com/ncurses.
-
- Release Notes
-
- This release is designed to be upward compatible from ncurses 5.0 and
- 5.1; very few applications will require recompilation, depending on
- the platform. These are the highlights from the change-log since
- ncurses 5.1 release.
-
- Interface changes:
- * change type of ospeed variable back to short to match its use in
- legacy applications. It was altered after ncurses 4.2 to speed_t
- to repair a type mismatch which was introduced after 1.9.4 in
- 1995. The principal users of termcap continued to use short, which
- is not the same size.
- NOTE: A few applications will have to be recompiled (about 1% of
- the programs in a typical Linux distribution, 10% of the programs
- that use ncurses). These are easy to identify with nm or strings.
- * remove a private function _nc_can_clear_with(), which was built
- with the configure --enable-expanded option but not used.
- * add several private functions (prefixed with "_nc_") for tracing
- chtype values in the debug library, and for better access and
- buffer limit checking.
-
- New features and improvements:
- * rewrote tgoto() to make it better support existing termcap
- applications which use hardcoded strings rather than obtain all of
- their information from the termcap file. If the string does not
- appear to be a terminfo string (i.e., does not refer to a "%p"
- parameter, or terminfo-style padding), and termcap support is
- configured, tgoto() will interpret it as termcap. Otherwise, as
- before, it will use tparm().
- * to ensure that the tgoto() changes work properly, added checks to
- tic which report capabilities that do not reference the expected
- number of parameters.
- * new configure script options:
- + option --disable-root-environ adds runtime checks which tell
- ncurses to disregard $TERMINFO and similar environment
- variables if the current user is root, or running
- setuid/setgid.
- + option --disable-assumed-color allows you to use the pre-5.1
- convention of default colors used for color-pair 0 to be
- configured (see assume_default_colors()).
- + implement configure script options that transform installed
- program names, e.g., --program-prefix, including the manpage
- names and cross references.
- + option --with-database allows you to specify a different
- terminfo source-file to install. On OS/2 EMX, the default is
- misc/emx.src, otherwise misc/terminfo.src
- + option --with-default-terminfo-dir allows you to specify the
- default terminfo database directory.
- + option --with-libtool allows you to build with libtool.
- NOTE: libtool uses a different notation for numbering shared
- library versions from the existing ncurses configuration.
- + option --with-manpage-tbl causes the manpages to be
- preprocessed by tbl(1) prior to installation,
- + option --without-curses-h causes the installation process to
- install curses.h as ncurses.h and make appropriate changes to
- headers and manpages.
- * modified configure script options:
- + change symbol used by the --install-prefix configure option
- from INSTALL_PREFIX to DESTDIR (the latter has become common
- usage although the name is misleading).
- + modify ld -rpath options (e.g., Linux, and Solaris) to use an
- absolute pathname for the build tree's lib directory,
- avoiding confusion with directories relative to the current
- one with the installed programs.
- + modified misc/run_tic.in to use tic -o, to eliminate
- dependency on $TERMINFO variable for installs.
- * terminfo database:
- + updated xterm terminfo entries to match XFree86 xterm patch
- #146.
- + added amiga-vnc, Matrix Orbital, and QNX qansi to
- misc/terminfo.src.
- + added os2 entry to misc/emx.src.
- + add S0 and E0 extensions to screen's terminfo entry since
- otherwise the FreeBSD port makes it pass termcap equivalents
- to tgoto, which would be misinterpreted by older versions of
- ncurses.
- * improvements to program usability:
- + modify programs to use curses_version() string to report the
- version of ncurses with which they are compiled rather than
- the NCURSES_VERSION string. The function returns the patch
- level in addition to the major and minor version numbers.
- + modify tput program so it can be renamed or invoked via a
- link as 'reset' or 'init', producing the same effect as
- tput reset or tput init.
- + add error checking to infocmp's -v and -m options to ensure
- that the option value is indeed a number.
- * improved performance:
- + replace a lookup table in lib_vidattr.c used to decode
- no_color_video with a logic expression which is faster.
-
- Major bug fixes:
- * correct manlinks.sed script introduced in ncurses 5.1 to avoid
- using ERE "\+", which is not understood by standard versions of
- sed. This happens to work with GNU sed, but is not portable, and
- was the initial motivation for this release.
- * remove "hpux10.*" case from CF_SHARED_OPTS configure script macro.
- This differed from the "hpux*" case by using reversed symbolic
- links, which made the 5.1 version not match the configuration of
- 5.0 shared libraries.
- * guard against corrupt terminfo data:
- + modify tparm() to disallow arithmetic on strings, analyze the
- varargs list to read strings as strings and numbers as
- numbers.
- + modify tparm()'s internal function spop() to treat a null
- pointer as an empty string.
- + modify parse_format() in lib_tparm.c to ignore precision if
- it is longer than 10000.
- + rewrote limit checks in lib_mvcur.c using new functions
- _nc_safe_strcat(), etc. Made other related changes to check
- lengths used for strcat() and strcpy().
- * corrections to screen optimization:
- + added special case in lib_vidattr.c to reset underline and
- standout for devices that have no sgr0 defined.
- + change handling of non_dest_scroll_region in tty_update.c to
- clear text after it is shifted in rather than before shifting
- out. Also correct row computation.
- + modify rs2 capability in xterm-r6 and similar entries where
- cursor save/restore bracketed the sequence for resetting
- video attributes. The cursor restore would undo that.
- * UTF-8 support:
- + when checking LC_ALL, LC_CTYPE, and LANG environment
- variables for UTF-8 locale, ignore those which are set to an
- empty value, as per SUSV2.
- + encode 0xFFFD in UTF-8 with 3 bytes, not 2.
- + modify _nc_utf8_outch() to avoid sign-extension when checking
- for out-of-range value.
- * other library fixes:
- + added checks for an empty $HOME environment variable, to
- avoid retrieving terminfo descriptions from ./.terminfo .
- + change functions _nc_parse_entry() and postprocess_termcap()
- to avoid using strtok(), because it is non-reentrant.
- + initialize fds[] array to 0's in _nc_timed_wait(); apparently
- poll() only sets the revents members of that array when there
- is activity corresponding to the related file.
- + add a check for null pointer in Make_Enum_Type().
- + fix a heap problem with the c++ binding.
- + correct missing includes for <string.h> in several places,
- including the C++ binding. This is not noted by gcc unless we
- use the -fno-builtin option.
- * several fixes for tic:
- + add a check for empty buffers returned by fgets() in
- comp_scan.c next_char() function, in case tic is run on a
- non-text file (fixes a core dump).
- + modify tic to verify that its inputs are really files, in
- case someone tries to read a directory (or /dev/zero).
- + correct an uninitialized parameter to open_tempfile() in
- tic.c which made "tic -I" give an ambiguous error message
- about tmpnam.
- + correct logic in adjust_cancels(), which did not check both
- alternatives when reclassifying an extended name between
- boolean, number and string, causing an infinite loop in tic.
- * using new checks in tic for parameter counts in capability
- strings, found/fixed several errors both in the terminfo database
- and in the include/Caps file.
- + modified several terminfo capability strings, including the
- definitions for setaf, setab, in include/Caps to indicate
- that the entries are parameterized. This information is used
- to tell which strings are translated when converting to
- termcap. This fixes a problem where the generated termcap
- would contain a spurious "%p1" for the terminfo "%p1%d".
- + correct parameter counts in include/Caps for dclk as well as
- some printer-specific capabilities: csnm, defc, scs, scsd,
- smgtp, smglp.
- * various fixes for install scripts used to support configure
- --srcdir and --with-install-prefix.
- * correct several mismatches between manpage filename and ".TH"
- directives, renaming dft_fgbg.3x to default_colors.3x and
- menu_attribs.3x to menu_attributes.3x.
-
- Portability:
- * configure script:
- + newer config.guess, config.sub, including changes to support
- OS/2 EMX. The configure script for OS/2 EMX still relies on a
- patch since there is no (working) support for that platform
- in the main autoconf distribution.
- + make configure script checks on variables $GCC and $GXX
- consistently compare against 'yes' rather than test if they
- are nonnull, since either may be set to the corresponding
- name of the C or C++ compiler.
- + change configure script to use AC_CANONICAL_SYSTEM rather
- than AC_CANONICAL_HOST, which means that configure --target
- will set a default program-prefix.
- + modify the check for big-core to force a couple of memory
- accesses, which may work as needed for older/less-capable
- machines (if not, there's still the explicit configure
- option).
- + modify configure test for tcgetattr() to allow for old
- implementations, e.g., on BeOS, which only defined it as a
- macro.
- + add configure check for filesystems (such as OS/2 EMX) which
- do not distinguish between upper/lowercase filenames, use
- this to fix tags rules in makefiles.
- + add MKncurses_def.sh to generate fallback definitions for
- ncurses_cfg.h, to quiet gcc -Wundef warnings, modified
- ifdef's in code to consistently use "#if" rather than
- "#ifdef".
- + change most remaining unquoted parameters of test in
- configure script to use quotes, for instance fixing a problem
- in the --disable-database option.
- + modify scripts so that "make install.data" works on OS/2 EMX.
- + modify scripts and makefiles so the Ada95 directory builds on
- OS/2 EMX.
- * library:
- + replaced case-statement in _nc_tracebits() for CSIZE with a
- table to simplify working around implementations that define
- random combinations of the related macros to zero.
- + improved OS/2 mouse support by retrying as a 2-button mouse
- if code fails to set up a 3-button mouse.
- + added private entrypoint _nc_basename(), used to consolidate
- related code in progs, as well as accommodating OS/2 EMX
- pathnames.
- + alter definition of NCURSES_CONST to make it non-empty.
- + redefine 'TEXT' in menu.h for AMIGA, since it is reported to
- have an (unspecified) symbol conflict.
- * programs:
- + modified progs/tset.c and tack/sysdep.c to build with sgttyb
- interface if neither termio or termios is available. Tested
- this with FreeBSD 2.1.5 (which does have termios - but the
- sgttyb does work).
-
- Features of Ncurses
-
- The ncurses package is fully compatible with SVr4 (System V Release 4)
- curses:
- * All 257 of the SVr4 calls have been implemented (and are
- documented).
- * Full support for SVr4 curses features including keyboard mapping,
- color, forms-drawing with ACS characters, and automatic
+ * captoinfo, a termcap conversion tool
+ * clear, utility for clearing the screen
+ * infocmp, the terminfo decompiler
+ * tabs, set tabs on a terminal
+ * tic, the terminfo compiler
+ * toe, list (table of) terminfo entries
+ * tput, utility for retrieving terminal capabilities in shell
+ scripts
+ * tset, to initialize the terminal
+
+ Full manual pages are provided for the library and tools.
+
+ The ncurses distribution is available at ncurses' homepage:
+
+ https://invisible-island.net/archives/ncurses/ or
+ https://invisible-mirror.net/archives/ncurses/ .
+
+ It is also available at the GNU distribution site
+
+ https://ftp.gnu.org/gnu/ncurses/ .
+
+Release Notes
+
+ These notes are for ncurses 6.5, released April 27, 2024.
+
+ This release is designed to be source-compatible with ncurses 5.0
+ through 6.4; providing extensions to the application binary interface
+ (ABI). Although the source can still be configured to support the
+ ncurses 5 ABI, the reason for the release is to reflect improvements
+ to the ncurses 6 ABI and the supporting utility programs.
+
+ There are, of course, numerous other improvements, listed in this
+ announcement.
+
+ The most important bug-fixes/improvements dealt with robustness
+ issues. The release notes also mention some other bug-fixes, but are
+ focused on new features and improvements to existing features since
+ ncurses 6.4 release.
+
+ Library improvements
+
+ New features
+
+ These are new features:
+ * The low-level terminfo and termcap interfaces are used both by the
+ higher-level curses library, as well as by many applications.
+ The functions which convert parameterized terminal capability
+ strings for output to the terminal (tiparm and tparm) analyze the
+ capability string to determine which parameters are strings (i.e.,
+ addresses), versus numbers (not addresses).
+ The library's analysis of a capability string may differ from the
+ calling application's design if environment variables are used to
+ point to an invalid terminal database. This is a longstanding
+ problem with all implementations of terminfo, dating from the
+ early 1980s.
+ Two new functions address this problem: by providing a function
+ which allows the calling application to tell ncurses how many
+ string-parameters to expect:
+ + tiscan_s helps applications check formatting capabilities
+ that would be passed to tiparm_s.
+ + tiparm_s provides applications a way to tell ncurses what the
+ expected parameters are for a capability.
+ * The ncurses library supports a compile-time feature (enabled with
+ the configure --enable-check-size option) which simplifies
+ initialization with terminals which do not negotiate window
+ (screen) size. This is done in setupterm, by providing for using
+ ANSI cursor-position report (in user6/user7 terminfo capabilities)
+ to obtain the screen size if neither environment variables or
+ ioctl is used.
+ The ncurses test-program with options "-E -T" demonstrates this
+ feature.
+ * add functions to query tty-flags in SCREEN
+
+ This release drops compatibility with obsolete versions of tack, e.g.,
+ pre-1.08
+
+ Other improvements
+
+ These are improvements to existing features:
+ * In addition to the new, safer function tiparm_s, ncurses adds
+ checks to make the older tiparm, tparm and tgoto functions safer:
+ + the terminfo functions tiparm and tparm ensure that the
+ capability string comes from the terminal description which
+ ncurses loads, rather than from random data which the
+ application happens to have.
+ + the tgoto function disallows capabilities which its analysis
+ shows will attempt to use string parameters.
+ + ncurses uses internal functions which correspond to tiparm,
+ and tgoto which ensure that the capability strings which are
+ passed to these functions come from the loaded terminal
+ description.
+ * improve check in lib_tparm.c, ensuring that a char* fits into a
+ TPARM_ARG
+ * modify _nc_syserr_abort to use _nc_env_access, rather than only
+ checking root uid
+ * improve thread lock in lib_trace.c
+ * modify flushinp to use file descriptors in SCREEN, rather than
+ from TERMINAL, and check if they are for a terminal, like SVr4
+ * modify mcprint to use file descriptor in SCREEN, for consistency
+ * modify internal function _nc_read_file_entry to show relevant
+ filename in warnings
+ * improve checks in internal function convert_string for corrupt
+ terminfo entry
+ * review/improve handling of out-of-memory conditions
+ * limit delays to 30 seconds, i.e., padding delays in terminfo, as
+ well as napms and delay_output functions
+ * fix reallocation loop for vsnprintf in _nc_sprintf_string by
+ copying the va_list variable
+ * modify delscreen to limit the windows which it creates to just
+ those associated with the screen
+ * modify endwin to return an error if it is called again without an
+ intervening screen update
+ * modify wenclose to handle pads
+ * eliminate use of PATH_MAX in lib_trace.c
+ * provide for any CCHARW_MAX greater than 1
+
+ These are corrections to existing features:
+ * correct loop termination condition in waddnstr and waddnwstr
+ * improve parsing in internal function _nc_msec_cost, allowing a
+ single decimal point
+ * amend parameter check for entire string versus specific length in
+ winsnstr and wins_nwstr to match Solaris; make similar correction
+ to wins_nwstr
+ * correct internal function wadd_wch_literal when adding a
+ non-spacing character to a double-width character
+ * correct definition of Charable macro for non-wide ncurses library
+ .
+
+ Program improvements
+
+ Several improvements were made to the utility programs. Some were done
+ to make the infocmp option "-u" option help refactor the terminal
+ database.
+
+ infocmp
+
+ + add limit checks for processing extended capabilities with
+ the "-u" option
+ + correct initial alignment of extended capabilities, so that
+ the "-u" option can be used for more than two terminal types
+ + modify "-u" option to not report cancels for strings which
+ were already cancelled in a use'd chunk.
+ + correct an assignment "-u" for detecting if a boolean is
+ unset in a base entry and set in a use'd chunk, i.e., if it
+ was cancelled.
+
+ tic
+
+ + correct limit-check when dumping tc/use clause via "-I"
+ + check return value of _nc_save_str, in special case where
+ extended capabilities are processed but the terminal
+ description was not initialized
+ + modify check for multiply defined aliases to report problems
+ within the current runtime rather than for conflicts with
+ pre-existing terminal descriptions.
+ + disallow using $TERMINFO or $HOME/.terminfo when "-o" option
+ is used
+
+ tput and tset
+
+ + add "-v" option to tput, to show warnings
+ + modify reset command to avoid altering clocal if the terminal
+ uses a modem
+ + modify reset feature to avoid 1-second sleep if running in a
+ pseudo-terminal
+
+ Examples
+
+ Along with the library and utilities, improvements were made to the
+ ncurses-examples:
+ * modify test_tparm to account for extended capabilities
+ * corrected mouse mask in test/testcurs.c
+ * modify test/clip_printw.c to optionally test non-wrapped updates
+ * modify test/test_mouse.c to use curses api for raw/noraw
+ * modify test/clip_printw.c to optionally test non-wrapped updates
+
+ There is one new demo/test programs:
+
+ test/test_endwin.c
+ This program shows the return-status from endwin with different
+ combinations of endwin (repeated), initscr, newterm.
+
+ Terminal database
+
+ There are several new terminal descriptions:
+ * ansi+apparrows
+ * contour
+ * linux+kbs for terminals which imitate xterm's behavior with Linux
+ * rio, rio-direct
+ * mostlike
+ * ms-vt100-16color, winconsole
+ * vt100+noapp, vt100+noapp+pc, xterm+app+pc, xterm+decedit from
+ xterm #389
+ * putty+cursor to reflect amending of modified cursor-keys in 2021
+ * wezterm
+
+ There are many changes to existing terminal descriptions. Some were
+ updates to several descriptions, using the infocmp "-u" option in a
+ script to determine which building-block entries could be used to
+ replace multiple capability settings (and trim redundant information).
+
+ Other changes include:
+ * document XF, kxIN and kxOUT
+ * add note on sun regarding wscons/cmdtool/shelltool
+ * remove DECCOLM+DECSCLM from foot
+ * add xterm+focus to foot+base
+ * add ecma+strikeout to putty
+ * use CSI 3J in vte-2017
+ * use oldxterm+sm+1006 in vte-2014
+ * modify xgterm to work around line-drawing bug
+ * add xterm focus mode 1004 to xterm+focus as fe/fd capabilities,
+ like vim.
+ * add xterm+focus to alacritty+common
+ * add XR/xr, to work with vim, and use RV/rv to denote DA2 and its
+ response
+ * add XF flag to xterm+focus so that termcap applications can be
+ aware of terminals which may support focus in/out
+ * use xterm+focus in xterm-p370 and tmux
+ * remove xterm+sm+1006 from tmux
+ * NetBSD-related fixes for x68k and wsvt25
+
+ Documentation
+
+ As usual, this release
+ * improves documentation by describing new features,
+ * attempts to improve the description of features which users have
+ found confusing
+ * fills in overlooked descriptions of features which were described
+ in the NEWS file but treated sketchily in manual pages.
+
+ In addition to providing background information to explain these
+ features and show how they evolved, there are corrections,
+ clarifications, etc.:
+ * Corrections:
+ + add assignment in CF_MAN_PAGES to fill in value for
+ TERMINFO_DIRS in ncurses, terminfo and tic manpages.
+ + clarify interaction of -R option versus -C, -I and -r in
+ infocmp manpage.
+ + correct manpage description of panel_hidden.
+ + improve manpage description for addch versus unctrl format
+ used for non-printable characters.
+ + improve manpages discussing file descriptors in low-level
+ functions.
+ + improve description of search rules for terminal descriptions
+ in terminfo manpage.
+ + modify dist.mk to avoid passing developer's comments in
+ manpages into the generated html documentation.
+ + modify test-package "ncurses6-doc" to use manpage-aliases,
+ which in turn required a change to the configure script to
+ factor in the extra-suffix option when deriving alias names.
+ * New/improved history and portability sections:
+ + add information about "ttycap", termcap's forerunner, to
+ tset.1
+ + document limitations of tparm, and error-returns in
+ curs_terminfo.3x
+ + document limitations of tgoto, and error-returns in
+ curs_termcap.3x
+ * Other improvements:
+ + This release has many changes to improve the formatting and
+ style of the manpages.
+ + Manpages now use consistent section-naming, page headers and
+ footers (including the modification date for each page).
+ + Table layout has been revised.
+
+ There are no new manual pages (all of the manual page updates are to
+ existing pages).
+
+ Interesting bug-fixes
+
+ The changes to tparm, tgoto which improve the design of the low-level
+ interfaces are interesting, but are not bug-fixes per se.
+
+ Configuration changes
+
+ Major changes
+
+ These are the major changes (aside from introducing tiparm_s):
+ * use wide-character (ncursesw) by default
+ * use opaque typedefs by default
+
+ However, most of the work on configure scripts was done to reduce
+ warnings within the configure script:
+ * intrusive warnings from GNU grep regarding fgrep and egrep
+ * fatal errors in compile-checks, arising from recent "Modern C"
+ efforts by some developers which caused longstanding configure
+ checks to fail.
+ After repairing the configure script, none of that activity
+ affected ncurses because stricter warnings are used routinely in
+ development.
+
+ Other improvements made to configure checks include
+ * use string-hacks in alloc_entry.c, alloc_type.c and hardscroll.c,
+ overlooked due to compiler changes in recent OpenBSD releases
+ * revise progs.priv.h to provide for NC_ISATTY reuse
+ * configure check for MB_LEN_MAX provides warning as needed
+ * trim a space after some "-R" options, fixing builds for
+ applications built using clang and ncurses on Solaris
+ * work around misconfiguration of MacPorts gcc13, which exposes
+ invalid definition of MB_LEN_MAX in gcc's fallback copy of
+ limits.h
+ * modified experimental Windows driver works with xterm mouse
+ protocol
+
+ Configuration options
+
+ There are a few new configure options:
+
+ --disable-setuid-environ
+ Compile with environment restriction, so certain environment
+ variables are not available when running via a setuid/setgid
+ application. These are (for example $TERMINFO) those that allow
+ the search path for the terminfo or termcap entry to be
+ customized.
+
+ A setuid/setgid application inherits its environment variables
+ from the current user, in contrast to sudo which may limit the
+ environment variables that ncurses uses.
+
+ --enable-check-size
+ Compile-in feature to detect screensize for terminals which do
+ not advertise their screensize, e.g., serial terminals.
+
+ --with-abi-altered=NUM
+ Override the displayed (rather than compiled-in) ABI. Only
+ packagers who have created configurations where the ABI differs
+ from ncurses should be interested in this option.
+
+ --with-strip-program=XXX
+ When stripping executables during install, use the specified
+ program rather than "strip" overriding program chosen by the
+ install program for stripping executables.
+
+ These configure options are modified:
+
+ --with-pkg-config-libdir[=DIR]
+ The optional DIR parameter can now be "auto" to automatically
+ use pkg-config's library directory.
+
+ The default is $(libdir).
+
+ --with-xterm-kbs[=XXX]
+ The default is "auto" which tells the configure script to
+ choose BS or DEL according to platform defaults.
+
+ Portability
+
+ Many of the portability changes are implemented via the configure
+ script:
+ * add/use configure check for clock_gettime, to supersede
+ gettimeofday.
+ * modify configure script check for pkg-config library directory to
+ take into account an older version 0.15.0 which used
+ PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR
+ * allow for MinGW32-/64-bit configurations to use _DEFAULT_SOURCE
+ * modify CF_XOPEN_SOURCE macro's amend default case to avoid
+ undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined
+ * updated configure script macro CF_XOPEN_SOURCE, for uClibc-ng
+ * modify version-check for gcc/g++, now works for msys2
+ * build-fixes related to configure-options and/or platform:
+ + fix for --enable-fvisibility
+ + fix for unusual values of --with-rel-version
+ + fix for unusual values of --with-abi-version
+ + fix for --disable-tcap-names
+ + fix for termcap in nc_access.h
+ * other configure-script improvements:
+ + recent msys2 headers work with _DEFAULT_SOURCE; amend check
+ + use $ac_includes_default in most cases where stdlib.h should
+ work
+ + use #error consistently vs "make an error"
+ + add configure macro for gettimeofday vs inline check
+
+ Here are some of the other portability fixes:
+ * modify configure scripts/makefiles to omit KEY_RESIZE if the
+ corresponding SIGWINCH feature is disabled
+ * increase MB_CUR_MAX to 16, matching glibc's MB_LEN_MAX
+ * add BSD erase2 to characters handled by tset/reset
+ * use getauxval when available, to improve setuid/setgid checks
+ * set dwShareMode in calls to CreateConsoleScreenBuffer
+ * use CreateFile with "CONIN$", "CONOUT$" rather than GetStdHandle
+ to obtain a handle on the actual console, avoiding redirection in
+ the MinGW/Win32 configurations
+ * modify MinGW driver to return KEY_BACKSPACE when an unmodified
+ VK_BACK virtual key is entered
+ * modify MinGW configuration to provide for running in MSYS/MSYS2
+ shells, assuming ConPTY support
+ _________________________________________________________________
+
+Features of ncurses
+
+ The ncurses package is fully upward-compatible with SVr4 (System V
+ Release 4) curses:
+ * All of the SVr4 calls have been implemented (and are documented).
+ * ncurses supports the features of SVr4 curses including keyboard
+ mapping, color, form drawing with ACS characters, and automatic
recognition of keypad and function keys.
- * An emulation of the SVr4 panels library, supporting a stack of
- windows with backing store, is included.
- * An emulation of the SVr4 menus library, supporting a uniform but
- flexible interface for menu programming, is included.
- * An emulation of the SVr4 form library, supporting data collection
- through on-screen forms, is included.
- * Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
- SVr4 curses uses.
- * The utilities have options to allow you to filter terminfo entries
- for use with less capable curses/terminfo versions such as the
- HP/UX and AIX ports.
+ * ncurses provides work-alike replacements of SVr4 supplemental
+ libraries based on curses, but which were not specified by X/Open
+ Curses:
+ + the panel library, supporting a stack of windows with backing
+ store
+ + the menu library, supporting a uniform but flexible interface
+ for menu programming
+ + the form library, supporting data collection through
+ on-screen forms
+ * ncurses's terminal database is fully compatible with that used by
+ SVr4 curses.
+ + ncurses supports user-defined capabilities that it can see,
+ but which are hidden from SVr4 curses applications using the
+ same terminal database.
+ + It can be optionally configured to match the format used in
+ related systems such as AIX and Tru64.
+ + Alternatively, ncurses can be configured to use hashed
+ databases rather than the directory of files used by SVr4
+ curses.
+ * The ncurses utilities have options to allow you to filter terminfo
+ entries for use with less capable curses/terminfo versions such as
+ the HP-UX and AIX ports.
The ncurses package also has many useful extensions over SVr4:
- * The API is 8-bit clean and base-level conformant with the X/OPEN
- curses specification, XSI curses (that is, it implements all BASE
- level features, but not all EXTENDED features). Most
- EXTENDED-level features not directly concerned with wide-character
- support are implemented, including many function calls not
- supported under SVr4 curses (but portability of all calls is
- documented so you can use the SVr4 subset only).
- * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
- corner of the screen if your terminal has an insert-character
+ * The API is 8-bit clean and base-level conformant with the X/Open
+ Curses specification, XSI curses (that is, it implements all BASE
+ level features, and almost all EXTENDED features). It includes
+ many function calls not supported under SVr4 curses (but
+ portability of all calls is documented so you can use the SVr4
+ subset only).
+ * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
+ corner of the screen if your terminal has an insert-character
capability.
* Ada95 and C++ bindings.
- * Support for mouse event reporting with X Window xterm and OS/2
- console windows.
+ * Support for mouse event reporting with X Window xterm and FreeBSD
+ and OS/2 console windows.
* Extended mouse support via Alessandro Rubini's gpm package.
- * The function wresize() allows you to resize windows, preserving
+ * The function wresize allows you to resize windows, preserving
their data.
- * The function use_default_colors() allows you to use the terminal's
+ * The function use_default_colors allows you to use the terminal's
default colors for the default color pair, achieving the effect of
transparent colors.
- * The functions keyok() and define_key() allow you to better control
- the use of function keys, e.g., disabling the ncurses KEY_MOUSE,
- or by defining more than one control sequence to map to a given
- key code.
- * Support for 16-color terminals, such as aixterm and XFree86 xterm.
- * Better cursor-movement optimization. The package now features a
+ * The functions keyok and define_key allow you to better control the
+ use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
+ defining more than one control sequence to map to a given key
+ code.
+ * Support for direct-color terminals, such as modern xterm.
+ * Support for 256-color terminals, such as modern xterm.
+ * Support for 16-color terminals, such as aixterm and modern xterm.
+ * Better cursor-movement optimization. The package now features a
cursor-local-movement computation more efficient than either BSD's
or System V's.
- * Super hardware scrolling support. The screen-update code
- incorporates a novel, simple, and cheap algorithm that enables it
- to make optimal use of hardware scrolling, line-insertion, and
- line-deletion for screen-line movements. This algorithm is more
- powerful than the 4.4BSD curses quickch() routine.
- * Real support for terminals with the magic-cookie glitch. The
- screen-update code will refrain from drawing a highlight if the
- magic- cookie unattributed spaces required just before the
- beginning and after the end would step on a non-space character.
- It will automatically shift highlight boundaries when doing so
- would make it possible to draw the highlight without changing the
+ * Super hardware scrolling support. The screen-update code
+ incorporates a novel, simple, and cheap algorithm that enables it
+ to make optimal use of hardware scrolling, line-insertion, and
+ line-deletion for screen-line movements. This algorithm is more
+ powerful than the 4.4BSD curses quickch routine.
+ * Real support for terminals with the magic-cookie glitch. The
+ screen-update code will refrain from drawing a highlight if the
+ magic- cookie unattributed spaces required just before the
+ beginning and after the end would step on a non-space character.
+ It will automatically shift highlight boundaries when doing so
+ would make it possible to draw the highlight without changing the
visual appearance of the screen.
- * It is possible to generate the library with a list of pre-loaded
- fallback entries linked to it so that it can serve those terminal
- types even when no terminfo tree or termcap file is accessible
- (this may be useful for support of screen-oriented programs that
+ * It is possible to generate the library with a list of pre-loaded
+ fallback entries linked to it so that it can serve those terminal
+ types even when no terminfo tree or termcap file is accessible
+ (this may be useful for support of screen-oriented programs that
must run in single-user mode).
- * The tic(1)/captoinfo utility provided with ncurses has the ability
- to translate many termcaps from the XENIX, IBM and AT&T extension
+ * The tic/captoinfo utility provided with ncurses has the ability to
+ translate many termcaps from the XENIX, IBM and AT&T extension
sets.
- * A BSD-like tset(1) utility is provided.
+ * A BSD-like tset utility is provided.
* The ncurses library and utilities will automatically read terminfo
- entries from $HOME/.terminfo if it exists, and compile to that
- directory if it exists and the user has no write access to the
- system directory. This feature makes it easier for users to have
- personal terminfo entries without giving up access to the system
+ entries from $HOME/.terminfo if it exists, and compile to that
+ directory if it exists and the user has no write access to the
+ system directory. This feature makes it easier for users to have
+ personal terminfo entries without giving up access to the system
terminfo directory.
- * You may specify a path of directories to search for compiled
- descriptions with the environment variable TERMINFO_DIRS (this
- generalizes the feature provided by TERMINFO under stock System
+ * You may specify a path of directories to search for compiled
+ descriptions with the environment variable TERMINFO_DIRS (this
+ generalizes the feature provided by TERMINFO under stock System
V.)
- * In terminfo source files, use capabilities may refer not just to
+ * In terminfo source files, use capabilities may refer not just to
other entries in the same source file (as in System V) but also to
- compiled entries in either the system terminfo directory or the
+ compiled entries in either the system terminfo directory or the
user's $HOME/.terminfo directory.
- * A script (capconvert) is provided to help BSD users transition
- from termcap to terminfo. It gathers the information in a TERMCAP
- environment variable and/or a ~/.termcap local entries file and
- converts it to an equivalent local terminfo tree under
- $HOME/.terminfo.
- * Automatic fallback to the /etc/termcap file can be compiled in
- when it is not possible to build a terminfo tree. This feature is
- neither fast nor cheap, you don't want to use it unless you have
- to, but it's there.
- * The table-of-entries utility toe makes it easy for users to see
+ * The table-of-entries utility toe makes it easy for users to see
exactly what terminal types are available on the system.
- * The library meets the XSI requirement that every macro entry point
- have a corresponding function which may be linked (and will be
- prototype-checked) if the macro definition is disabled with
- #undef.
- * An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
- interface.
-
- State of the Package
-
- Numerous bugs present in earlier versions have been fixed; the library
- is far more reliable than it used to be. Bounds checking in many
- `dangerous' entry points has been improved. The code is now type-safe
- according to gcc -Wall. The library has been checked for malloc leaks
- and arena corruption by the Purify memory-allocation tester.
-
- The ncurses code has been tested with a wide variety of applications
- including (versions starting with those noted):
+ * X/Open Curses permits most functions it specifies to be made
+ available as macros as well. ncurses does this
+ + to improve performance, e.g., for operations composed of
+ simpler functions such as cursor movement following by adding
+ text to the screen,
+ + to simplify the implementation by reusing functions which use
+ common parameters, e.g., the standard screen stdscr, and
+ + to provide functions that return values via their parameters
+ Except for the last case, ncurses provides a non-macro
+ implementation of the function. If the macro definition is
+ disabled with #undef, or by defining NCURSES_NOMACROS the function
+ may be linked (and its calls will be checked against the
+ prototype).
+ * Extensive documentation is provided (see the Additional Reading
+ section of the ncurses FAQ for online documentation).
+
+Applications using ncurses
+
+ The ncurses distribution includes a selection of test programs
+ (including a few games). These are available separately as
+ ncurses-examples
+
+ The ncurses library has been tested with a wide variety of
+ applications including:
+
+ aptitude
+ FrontEnd to Apt, the debian package manager
+
+ https://wiki.debian.org/Aptitude
cdk
Curses Development Kit
- [3]http://www.vexus.ca/CDK.html
- [4]http://dickey.his.com/cdk.
+
+ https://invisible-island.net/cdk/
ded
directory-editor
- [5]http://dickey.his.com/ded.
+
+ https://invisible-island.net/ded/
dialog
- the underlying application used in Slackware's setup, and the
- basis for similar applications on GNU/Linux.
- [6]http://dickey.his.com/dialog.
+ the underlying application used in Slackware's setup, and the
+ basis for similar install/configure applications on many
+ systems.
+
+ https://invisible-island.net/dialog/
lynx
- the character-screen WWW browser
- [7]http://lynx.isc.org/release.
+ the text WWW browser
- Midnight Commander 4.1
- file manager
- [8]www.gnome.org/mc/.
+ https://lynx.invisible-island.net/
mutt
mail utility
- [9]http://www.mutt.org.
+
+ http://www.mutt.org/
ncftp
file-transfer utility
- [10]http://www.ncftp.com.
+
+ https://www.ncftp.com/
nvi
- New vi versions 1.50 are able to use ncurses versions 1.9.7 and
- later.
- [11]http://www.bostic.com/vi/.
+ New vi uses ncurses.
+
+ https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-
+ vi-editor-home-page
+
+ ranger
+ A console file manager with VI key bindings in Python.
+
+ https://ranger.github.io/
tin
newsreader, supporting color, MIME
- [12]http://www.tin.org.
- taper
- tape archive utility
- [13]http://members.iinet.net.au/~yusuf/taper/.
+ http://www.tin.org/
- vh-1.6
- Volks-Hypertext browser for the Jargon File
- [14]http://www.bg.debian.org/Packages/unstable/text/vh.html.
+ vifm
+ File manager with vi like keybindings
+
+ https://vifm.info/
as well as some that use ncurses for the terminfo support alone:
minicom
- terminal emulator
- [15]http://www.pp.clinet.fi/~walker/minicom.html.
+ terminal emulator for serial modem connections
+
+ https://salsa.debian.org/minicom-team/minicom
+
+ mosh
+ a replacement for ssh.
+
+ https://mosh.org/
+
+ tack
+ terminfo action checker
+
+ https://invisible-island.net/ncurses/tack.html
+
+ tmux
+ terminal multiplexor
+
+ https://github.com/tmux/tmux/wiki
vile
- vi-like-emacs
- [16]http://dickey.his.com/vile.
+ vi-like-emacs may be built to use the terminfo, termcap or
+ curses interfaces.
+
+ https://invisible-island.net/vile/
+
+ and finally, those which use only the termcap interface:
+
+ emacs
+ text editor
+
+ https://www.gnu.org/software/emacs/
+
+ less
+ The most commonly used pager (a program that displays text
+ files).
+
+ http://www.greenwoodsoftware.com/less/
- The ncurses distribution includes a selection of test programs
- (including a few games).
+ screen
+ terminal multiplexor
-Who's Who and What's What
+ https://www.gnu.org/software/screen/
- The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric
- S. Raymond. Ongoing work is being done by [19]Thomas Dickey and
- [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the
- Free Software Foundation, which holds the copyright on ncurses.
- Contact the current maintainers at [22]bug-ncurses@gnu.org.
+ vim
+ text editor
+
+ https://www.vim.org/
+
+Development activities
+
+ Zeyd Ben-Halim started ncurses from a previous package pcurses,
+ written by Pavel Curtis. Eric S. Raymond continued development.
+ Juergen Pfeifer wrote most of the form and menu libraries.
+
+ Ongoing development work is done by Thomas E. Dickey. Thomas E. Dickey
+ has acted as the maintainer for the Free Software Foundation, which
+ held a copyright on ncurses for releases 4.2 through 6.1. Following
+ the release of ncurses 6.1, effective as of release 6.2, copyright for
+ ncurses reverted to Thomas E. Dickey (see the ncurses FAQ for
+ additional information).
+
+ Contact the current maintainers at
+
+ bug-ncurses@gnu.org
To join the ncurses mailing list, please write email to
- bug-ncurses-request@gnu.org containing the line:
- subscribe <name>@<host.domain>
+
+ bug-ncurses-request@gnu.org
+
+ containing the line:
+
+ subscribe <name>@<host.domain>
This list is open to anyone interested in helping with the development
and testing of this package.
- Beta versions of ncurses and patches to the current release are made
- available at [23]ftp://dickey.his.com/ncurses.
-
-Future Plans
-
- * Extended-level XPG4 conformance, with internationalization
- support.
- * Ports to more systems, including DOS and Windows.
-
- We need people to help with these projects. If you are interested in
- working on them, please join the ncurses list.
-
-Other Related Resources
-
- The distribution includes and uses a version of the terminfo-format
- terminal description file maintained by Eric Raymond.
- [24]http://earthspace.net/~esr/terminfo.
-
- You can find lots of information on terminal-related topics not
- covered in the terminfo file at [25]Richard Shuford's archive.
-
-References
-
- 1. ftp://ftp.gnu.org/pub/gnu/ncurses
- 2. ftp://dickey.his.com/ncurses
- 3. http://www.vexus.ca/CDK.html
- 4. http://dickey.his.com/cdk/cdk.html
- 5. http://dickey.his.com/ded/ded.html
- 6. http://dickey.his.com/dialog/dialog.html
- 7. http://lynx.isc.org/release/
- 8. file://localhost/usr/build/ncurses/ncurses-5.2-20001021/doc/html/www.gnome.org/mc/
- 9. http://www.mutt.org/
- 10. http://www.ncftp.com/
- 11. http://www.bostic.com/vi/
- 12. http://www.tin.org/
- 13. http://members.iinet.net.au/~yusuf/taper/
- 14. http://www.bg.debian.org/Packages/unstable/text/vh.html
- 15. http://www.pp.clinet.fi/~walker/minicom.html
- 16. http://dickey.his.com/vile/vile.html
- 17. mailto:zmbenhal@netcom.com
- 18. http://www.ccil.org/~esr/home.html
- 19. mailto:dickey@herndon4.his.com
- 20. mailto:juergen.pfeifer@gmx.net
- 21. mailto:dickey@herndon4.his.com
- 22. mailto:bug-ncurses@gnu.org
- 23. ftp://dickey.his.com/ncurses
- 24. http://earthspace.net/~esr/terminfo
- 25. http://www.cs.utk.edu/~shuford/terminal_index.html
+ Beta versions of ncurses are made available at
+
+ https://invisible-island.net/archives/ncurses/current/ and
+ https://invisible-mirror.net/archives/ncurses/current/ .
+
+ Patches to the current release are made available at
+
+ https://invisible-island.net/archives/ncurses/6.4/ and
+ https://invisible-mirror.net/archives/ncurses/6.4/ .
+
+ There is an archive of the mailing list here:
+
+ https://lists.gnu.org/archive/html/bug-ncurses .
+
+Related resources
+
+ The release notes make scattered references to these pages, which may
+ be interesting by themselves:
+ * ncurses licensing
+ * Symbol versioning in ncurses
+ * Comments on ncurses versus slang (S-Lang)
+ * Comments on OpenBSD
+ * tack - terminfo action checker
+ * tctest - termcap library checker
+ * Terminal Database
+
+Other resources
+
+ The distribution provides a newer version of the terminfo-format
+ terminal description file once maintained by Eric Raymond . Unlike the
+ older version, the termcap and terminfo data are provided in the same
+ file, which also provides several user-definable extensions beyond the
+ X/Open Curses specification.
+
+ You can find lots of information on terminal-related topics not
+ covered in the terminfo file in Richard Shuford's archive (original).
+ The collection of computer manuals at bitsavers.org has also been
+ useful.
+
+ * Overview
+ * Release Notes
+ + Library improvements
+ o New features
+ o Other improvements
+ + Program improvements
+ o Utilities
+ o Examples
+ + Terminal database
+ + Documentation
+ + Interesting bug-fixes
+ + Configuration changes
+ o Major changes
+ o Configuration options
+ + Portability
+ * Features of ncurses
+ * Applications using ncurses
+ * Development activities
+ * Related resources
+ * Other resources