From 02f02dcd4464143580e783ae32c822d8eb8cdcbf Mon Sep 17 00:00:00 2001
From: "Thomas E. Dickey"
Date: Sun, 9 Aug 2015 00:19:07 +0000
Subject: [PATCH] ncurses 6.0 - patch 20150808
+ build-fix for Ada95 on older platforms without stdint.h
+ build-fix for Solaris, whose /bin/sh and /usr/bin/sed are non-POSIX.
+ update release announcement, summarizing more than 800 changes across
more than 200 snapshots.
+ minor fixes to manpages, etc., to simplify linking from announcement
page.
---
ANNOUNCE | 1261 ++++++++++++--
Ada95/Makefile.in | 8 +-
Ada95/aclocal.m4 | 30 +-
Ada95/configure | 24 +-
Ada95/doc/Makefile.in | 6 +-
Ada95/gen/Makefile.in | 4 +-
Ada95/include/Makefile.in | 8 +-
Ada95/samples/Makefile.in | 6 +-
Ada95/src/Makefile.in | 6 +-
Ada95/src/c_threaded_variables.h | 14 +-
Ada95/src/c_varargs_to_ada.h | 12 +-
Ada95/src/ncurses_compat.c | 16 +-
Makefile.in | 6 +-
NEWS | 12 +-
VERSION | 2 +-
aclocal.m4 | 36 +-
announce.html.in | 2550 +++++++++++++++++++++++++----
c++/Makefile.in | 10 +-
configure | 26 +-
configure.in | 6 +-
dist.mk | 4 +-
doc/html/ada/table.html | 40 +-
doc/html/announce.html | 2614 ++++++++++++++++++++++++++----
doc/html/man/captoinfo.1m.html | 2 +-
doc/html/man/clear.1.html | 2 +-
doc/html/man/form.3x.html | 7 +-
doc/html/man/form_driver.3x.html | 311 ++--
doc/html/man/infocmp.1m.html | 2 +-
doc/html/man/infotocap.1m.html | 2 +-
doc/html/man/menu.3x.html | 2 +-
doc/html/man/ncurses.3x.html | 19 +-
doc/html/man/panel.3x.html | 2 +-
doc/html/man/tabs.1.html | 2 +-
doc/html/man/terminfo.5.html | 2 +-
doc/html/man/tic.1m.html | 2 +-
doc/html/man/toe.1m.html | 2 +-
doc/html/man/tput.1.html | 2 +-
doc/html/man/tset.1.html | 2 +-
form/Makefile.in | 6 +-
include/Makefile.in | 16 +-
man/Makefile.in | 14 +-
man/form.3x | 5 +-
man/form_driver.3x | 265 +--
man/ncurses.3x | 9 +-
menu/Makefile.in | 6 +-
misc/Makefile.in | 6 +-
ncurses/Makefile.in | 18 +-
ncurses/base/MKlib_gen.sh | 8 +-
ncurses/base/lib_set_term.c | 4 +-
package/debian-mingw/changelog | 4 +-
package/debian-mingw64/changelog | 4 +-
package/debian/changelog | 4 +-
package/mingw-ncurses.nsi | 4 +-
package/mingw-ncurses.spec | 2 +-
package/ncurses.spec | 2 +-
panel/Makefile.in | 6 +-
progs/Makefile.in | 10 +-
test/Makefile.in | 6 +-
test/aclocal.m4 | 6 +-
test/configure | 457 ++++--
test/configure.in | 3 +-
test/demo_termcap.c | 4 +-
62 files changed, 6472 insertions(+), 1459 deletions(-)
diff --git a/ANNOUNCE b/ANNOUNCE
index 11933c5f..858c7f2f 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,78 +1,823 @@
- Announcing ncurses 5.9
+ Announcing ncurses 6.0
+
+Overview
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.
+ 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 is better known today as
+ 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
+ considered 4.4BSD curses obsolete, and encouraged 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 has been in use for
- some time with OpenBSD as the system curses library, and on FreeBSD
- and NetBSD as an external package. It should port easily to any
- ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
+ 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
+ OSX.
+ * 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.
+ * [1]captoinfo, a termcap conversion tool
+ * [2]clear, utility for clearing the screen
+ * [3]infocmp, the terminfo decompiler
+ * [4]tabs, set tabs on a terminal
+ * [5]tic, the terminfo compiler
+ * [6]toe, list (table of) terminfo entries
+ * [7]tput, utility for retrieving terminal capabilities in shell
+ scripts
+ * [8]tset, to initialize the terminal
+
+ 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/gnu/ncurses/ .
- It is also available at [2]ftp://invisible-island.net/ncurses/ .
-
- Release Notes
-
- This release is designed to be upward compatible from ncurses 5.0
- through 5.8; very few applications will require recompilation,
- depending on the platform. These are the highlights from the
- change-log since ncurses 5.8 release.
-
- This is a bug-fix release, correcting a small number of urgent
- problems in the ncurses library from the 5.8 release.
-
- It also improves the Ada95 binding:
- * fixes a longstanding portability problem with its use of the
- [3]set_field_type function. Because that function uses
- variable-length argument lists, its interface with gnat does not
- work with certain platforms.
- * improves configurability and portability, particularly when built
- separately from the main ncurses tree. The 5.8 release introduced
- scripts which can be used to construct separate tarballs for the
- Ada95 and ncurses examples.
- Those were a proof of concept. For the 5.9 release, those scripts
- are augmented with rpm- and dpkg-scripts used in test builds
- against a variety of gnat- and system ncurses versions as old as
- gnat 3.15 and ncurses 5.4 (see snapshots and systems tested
- [4]here.
- * additional improvements were made for portability of the ncurses
- examples, adding rpm- and dpkg-scripts for test-builds. See
- [5]this page for snapshots and other information.
-
- 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
- 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.
+ distribution site
+
+ [9]ftp://ftp.gnu.org/gnu/ncurses/ .
+
+ It is also available at
+
+ [10]ftp://invisible-island.net/ncurses/ .
+
+Release Notes
+
+ These notes are for ncurses 6.0, released August 8, 2015.
+
+ This release is designed to be source-compatible with ncurses 5.0
+ through 5.9; providing a new application binary interface (ABI).
+ Although the source can still be configured to support the ncurses 5
+ ABI, the intent of the release is to provide extensions which are
+ generally useful, but binary-incompatible with ncurses 5:
+ * Extend the cchar_t structure to allow more than 16 colors to be
+ encoded.
+ * Modify the encoding of mouse state to make room for a 5th mouse
+ button. That allows one to use ncurses with a wheel mouse with
+ xterm or similar X terminal emulators.
+
+ There are, of course, numerous other improvements, including
+ * fixes made based on the Clang and Coverity static analyzers.
+ * memory leak fixes using Valgrind
+
+ The release notes mention some bug-fixes, but are focused on new
+ features and improvements to existing features log since ncurses 5.9
+ release.
+
+ While the intent of the release is to provide a new stable ABI, there
+ are other development activities which are summarized below.
+ * The original release plan, e.g., for "5.10" was to improve the
+ MinGW port. Ultimately that was completed (wide-character support,
+ mouse, etc), but was deferred to focus on termcap support and
+ performance issues. Also, pinpointing the problems with Console2
+ took a while.
+ * A review of termcap compatibility in 2011 led to several minor
+ fixes in the library and improvements to utilities. To do this
+ properly, a review of the various extent termcap implementations
+ was needed.
+ The [11]termcap library checker (tctest) (not part of ncurses) was
+ one result. A followup review of performance using
+ [12]ncurses-examples in 2014 led to additional improvements.
+ * Output buffering provided a further, but worthwhile distraction. A
+ bug report in 2012 regarding the use of signal handlers in
+ ncurses) pointed out [13]a problem with the use of unsafe
+ functions for handling SIGTSTP. Other signals could be addressed
+ with workarounds; repairing SIGTSTP required a different approach.
+ The solution required changing internal behavior of the library:
+ how it handles output buffering.
+ Now ncurses buffers its own output, independently of the standard
+ output. A few applications relied upon the library's direct reuse
+ of the standard output buffering; however that is unspecified
+ behavior and has never been a recommended practice. Identifying
+ these applications as well as refining the change to permit
+ low-level applications to work consistently took time.
+ * Since the introduction of the experimental support for 256 colors
+ early in [14]2005 (released in [15]ncurses 5.5), there has been
+ increased user interest. Almost all packagers continue providing
+ the ncurses ABI 5 which cannot support 256 colors.
+ * Symbol versioning, or the lack of it in ncurses, is the main
+ reason why packagers would be reluctant to add a new ncurses ABI.
+ This release provides the new ABI along with script-generated
+ lists of versioned symbols which can be used for both ABI 5 and 6
+ (with distinct names to keep the two separate). This took time to
+ development, as reported in [16]Symbol versioning in ncurses.
+
+ Library improvements
+
+ Output buffering
+
+ X/Open curses provides more than one initialization function:
+ * [17]initscr (the simplest) accepts no parameters.
+ * [18]newterm accepts parameters for the stream input and output
+ * [19]setupterm (the low-level function) accepts a parameter for the
+ file descriptor of the output.
+
+ They are documented in X/Open as if initscr calls newterm using stdout
+ for output stream, and in turn newterm calls setupterm using
+ fileno(stdout) for the file descriptor. As long as an implementation
+ acts as if it does this, it conforms. In practice, implementations do
+ what is implied. This creates a problem: the low-level setupterm
+ function's file descriptor is unbuffered, while newterm implies
+ buffered output. X/Open Curses says that all output is done through
+ the file descriptor, and does not say how the output stream is
+ actually used.
+
+ Initially, ncurses used the file descriptor (obtained from the output
+ stream passed to newterm) for changing the terminal modes, and relied
+ upon the output parameter of newterm for buffered output. Later (to
+ avoid using unsafe buffered I/O in signal handlers), ncurses was
+ modified to use the file descriptor (unbuffered output) when cleaning
+ up on receipt of a signal. Otherwise (when not handling a signal), it
+ continued to use the buffered output.
+
+ That approach worked reasonably well and as a side effect, using the
+ same buffered output as an application might use for printf meant that
+ no flushing was needed when switching between normal- and
+ screen-modes.
+
+ There were a couple of problems:
+ * to get good performance, curses (not only ncurses, but SVr4 curses
+ in general) set an output buffer using setbuf or similar function.
+ There is no standard (or portable) way to turn that output buffer
+ off, and revert to line-buffering. The [20]NCURSES_NO_SETBUF
+ environment variable did make it optional.
+ * to handle SIGTSTP (the "stop" signal), ncurses relied upon unsafe
+ functions. That is, due to the complexity of the feature, it
+ relied upon reusing existing functions which should not have been
+ called via the signal handler.
+
+ Conveniently, solving the second problem (by making ncurses do its own
+ output buffering) also fixed the first one. But there were special
+ cases to resolve: [21]low-level functions such as mvcur, putp, vidattr
+ explicitly use the standard output. Those functions were reused
+ internally, and required modification to distinguish whether they were
+ used by the high-level or low-level interfaces.
+
+ Finally, there may still be a few programs which should be modified to
+ improve their portability, e.g., adding an
+
+fflush(stdout);
+
+ when switching from "[22]shell" mode to "[23]program" (curses) mode.
+ Those are fairly rare because most programmers have learned not to mix
+ printf and [24]printw.
+
+ Symbol versioning
+
+ This release introduces symbol-versioning to ncurses because without
+ it, the change of ABI would be less successful. A lengthy discussion
+ will be presented in [25]Symbol versioning in ncurses. These notes
+ summarize what has changed, and what can be done with the new release.
+
+ Symbol-versioning allows the developers of a library to mark each
+ public symbol (both data and functions) with an identifier denoting
+ the library name and the version for which it was built. By doing
+ this, users of the library have a way to help ensure that applications
+ do not accidentally load an incompatible library. In addition, private
+ symbols can be hidden entirely.
+
+ This release provides sample files for the four principal
+ configurations of ncurses libraries: ncurses, ncursesw, ncursest and
+ ncursestw. Each sample is given in two forms:
+
+ ".map"
+ These list all public symbols, together with version names.
+
+ ".sym"
+ These list all public symbols, without version names.
+
+ The sample files are generated by scripts which take into account a
+ few special cases such as [26]tack to omit many of the ncurses private
+ symbols (beginning with "_nc_"). Here are counts of globals versus
+ locals:
+
+ Config Symbols Globals Locals "_nc_"
+ ncurses 976 796 180 332
+ ncursesw 1089 905 184 343
+ ncursest 979 804 175 358
+ ncursestw 1098 914 184 372
+
+ Although only four sample configurations are presented, each is formed
+ by merging symbols from several combinations of configure-script
+ options, taking into account advice from downstream packagers. Because
+ they are formed by merging, the sample files may list a symbol which
+ is not in a given package. That is expected. The samples have been
+ tested and are working with systems (such as Fedora, FreeBSD and
+ Debian) which fully support this feature. There are other systems
+ which do not support the feature, and a few (such as Solaris) which
+ provide incomplete support.
+
+ The version-naming convention used allows these sample files to build
+ distinct libraries for ABI 5 and 6. Version names consist of
+ * configuration name, e.g., "NCURSESW" for the wide-character
+ libraries
+ * ABI version (if not 5)
+ * library name for two special cases which have the same interface
+ across configurations: "TINFO" and "TIC"
+ * release version
+ * patch date (for the release version)
+
+ For example, running nm -D on the libraries in the ncurses6 test
+ package shows these symbol-versions:
+
+0000000000000000 A NCURSES6_TIC_5.0.19991023
+0000000000000000 A NCURSES6_TIC_5.1.20000708
+0000000000000000 A NCURSES6_TIC_5.5.20051010
+0000000000000000 A NCURSES6_TIC_5.7.20081102
+0000000000000000 A NCURSES6_TIC_5.9.20150530
+0000000000000000 A NCURSES6_TINFO_5.0.19991023
+0000000000000000 A NCURSES6_TINFO_5.1.20000708
+0000000000000000 A NCURSES6_TINFO_5.2.20001021
+0000000000000000 A NCURSES6_TINFO_5.3.20021019
+0000000000000000 A NCURSES6_TINFO_5.4.20040208
+0000000000000000 A NCURSES6_TINFO_5.5.20051010
+0000000000000000 A NCURSES6_TINFO_5.6.20061217
+0000000000000000 A NCURSES6_TINFO_5.7.20081102
+0000000000000000 A NCURSES6_TINFO_5.8.20110226
+0000000000000000 A NCURSES6_TINFO_5.9.20150530
+0000000000000000 A NCURSESW6_5.1.20000708
+0000000000000000 A NCURSESW6_5.3.20021019
+0000000000000000 A NCURSESW6_5.4.20040208
+0000000000000000 A NCURSESW6_5.5.20051010
+0000000000000000 A NCURSESW6_5.6.20061217
+0000000000000000 A NCURSESW6_5.7.20081102
+0000000000000000 A NCURSESW6_5.8.20110226
+0000000000000000 A NCURSESW6_5.9.20150530
+
+ As a special case, this release (which makes the final change for ABI
+ 5) is marked with release version 5.9 and patch date 20150530.
+
+ Miscellaneous
+
+ The new release has several improvements for performance and building.
+ For instance:
+ * several files in ncurses- and progs-directories were modified to
+ allow const data used in internal tables to be put by the linker
+ into the readonly text segment.
+ * various improvements were made to building the Ada95 binding, both
+ in simplifying the generated files as well as improving the way it
+ uses gnatmake
+
+ There are also new features in the libraries:
+ * added [27]use_tioctl function
+ * added [28]wgetdelay to retrieve _delay member of WINDOW if it
+ happens to be opaque, e.g., in the pthread configuration.
+ * added [29]A_ITALIC extension.
+ * added form library extension [30]O_DYNAMIC_JUSTIFY option which
+ can be used to override the different treatment of justification
+ for static versus dynamic fields .
+ * rewrote [31]putwin and [32]getwin, making an extended version
+ which is capable of reading screen-dumps between the wide/normal
+ ncurses configurations. These are text files, except for a magic
+ code at the beginning:
+
+0 string \210\210 Screen-dump (ncurses)
+
+ * several changes to mouse support include:
+ + added decoder for xterm SGR 1006 mouse mode.
+ + added experimental support for "%u" format to terminfo.
+ + improved behavior of wheel-mice for xterm protocol: noting
+ that there are only button-presses for buttons "4" and "5",
+ so there is no need to wait to combine events into
+ double-clicks .
+
+ There are a few new configure options dealing with library
+ customization:
+ * add "--enable-ext-putwin" configure option to turn on the extended
+ putwin/getwin. By default, this is enabled for ABI 6 and disabled
+ with ABI 5.
+ * add "--enable-string-hacks" option to control whether strlcat and
+ strlcpy may be used. Because ncurses already does the requisite
+ buffer-limit checks, this feature is mainly of interest to quiet
+ compiler-warnings on a few systems.
+ * add configure option "--with-tparm-arg" to allow [33]tparm's
+ parameters to be something more likely to be the same size as a
+ pointer, e.g., intptr_t (again, the default is set for ABI 6).
+
+ Program improvements
+
+ Utilities
+
+ Most of the termcap-related changes based on development of [34]tctest
+ (termcap library checker) are implemented in the tic and infocmp
+ programs rather than affecting the library. As noted in the
+ [35]discussion of tctest, ncurses's ability to translate between
+ terminfo and termcap formats has been improved at different times, but
+ subject to feedback from "real" termcap users. There are very few of
+ those. Nowadays, virtually all termcap users are using ncurses (or
+ NetBSD, with its own terminfo library) and their programs are actually
+ using terminfo rather than termcap data.
+
+ Still, there are a few. A comment about the translation of the ASCII
+ NUL character prompted a review:
+ * Both terminfo and termcap store string capabilities as
+ NUL-terminated strings.
+ * In terminfo, a \0 in a terminal description is stored as \200.
+ * There are no (known) terminals which would behave differently when
+ sent \0 or \200.
+ * When translating to terminfo format (or displaying a printable
+ version of an entry using infocmp), ncurses shows \200 as \0.
+ * It has done this since 1998 (quoting from the NEWS file):
+
+[36]980103
+...
+ + modify _nc_tic_expand() to generate \0 rather than \200.
+...
+ + correct translation of terminfo "^@", to \200, like \0.
+
+ * However, the _nc_tic_expand function (which optionally produces
+ terminfo or termcap format) did not address this special case for
+ termcap. Even the later 4.4BSD [37]cgetstr interprets a \0
+ literally, ending that string (rather than using the terminfo
+ improvement).
+
+ As a result of the review, several improvements were made to ncurses
+ translation to/from termcap format -- and improving the checks made in
+ tic for consistency of entries. Most of these are not of general
+ interest, except for two new command-line options for tic and infocmp:
+ * the "-0" option generates termcap/terminfo source on a single
+ line.
+ * the "-K" option provides stricter BSD-compatibility for termcap
+ output.
+
+ Other user-visible improvements and new features include:
+ * added "-D" option to tic and infocmp, to show the database
+ locations that it could use.
+ * added "-s" option to toe, to sort its output.
+ * extended "-c" and "-n" options of infocmp to allow comparing more
+ than two entries.
+ * modified toe's report when "-a" and "-s" options are combined, to
+ add a column showing which entries belong to a given database.
+ * modified the clear program to take into account the "E3" extended
+ capability to clear the terminal's scrollback buffer.
+
+ Examples
+
+ Along with the library and utilities, many improvements were made to
+ the [38]ncurses-examples. Some were made to allow building (and
+ comparison-testing) against NetBSD curses and PDCurses. Both lack some
+ of the X/Open Curses features, necessitating customization. But this
+ activity was useful because it showed some remaining performance
+ issues (which have been resolved in this release).
+
+ These changes were made to verify compatibility or compare performance
+ of ncurses:
+ * made workarounds for compiling test-programs with NetBSD curses,
+ though it lacks some common functions such as [39]use_env.
+ * added dots_termcap test-program
+ * added dots_curses test-program, for comparison with the low-level
+ examples.
+ * added test_setupterm test-proram to demonstrate normal/error
+ returns from the setupterm and restartterm functions.
+ * added "-d", "-e" and "-q" options to the demo_terminfo and
+ demo_termcap test-programs.
+ * added "-y" option to demo_termcap and test/demo_terminfo
+ test-programs to demonstrate behavior with/without extended
+ capabilities.
+ * modified demo_termcap and demo_terminfo test-programs to make
+ their options more directly comparable, and add "-i" option to
+ specify a terminal description filename to parse for names to
+ lookup.
+ * rewrote the tests for [40]mvderwin and test for recursive
+ [41]mvwin in the movewindow test-program.
+
+ These changes were made to help with the MinGW port:
+ * added test-screens to the ncurses test-program to show
+ 256-characters at a time, to help with MinGW port.
+ * modified the view test-program to load UTF-8 when built with MinGW
+ by using regular win32 API because the MinGW functions mblen and
+ mbtowc do not work.
+ * added "-s" option to the view test-program to allow it to start in
+ single-step mode, reducing size of trace files when it is used for
+ debugging MinGW changes.
+
+ These changes were made to verify new extensions in ncurses:
+ * added [42]form_driver_w entrypoint to wide-character forms
+ library, as well as form_driver_w test-program.
+ * modified ncurses test-program's b/B tests to display lines only
+ for the attributes which a given terminal supports, to make room
+ for an italics test.
+ * modified ncurses test-program, adding "-E" and "-T" options to
+ demonstrate use_env versus use_tioctl.
+ * modified ncurses test-program's c/C tests to cycle through subsets
+ of the total number of colors, to better illustrate
+ 8/16/88/256-colors by providing directly comparable screens.
+ * modified the ncurses test-program to also show position reports in
+ 'a' test.
+
+ These changes were made to make the examples more useful:
+ * added scripts for building dpkg and rpm test-packages
+ * modified the hanoi test-program to show the minimum number of
+ moves possible for the given number of tiles.
+ * modified the knight test-program to show the number of choices
+ possible for each position in automove option, e.g., to allow user
+ to follow Warnsdorff's rule to solve the puzzle.
+
+ Terminal database
+
+ This release provides improvements to tic's "-c" checking option,
+ which was used for example to
+ * make sgr in several entries agree with other caps.
+ * correct padding in some entries where earlier versions had
+ miscounted the number of octal digits.
+
+ There are several new terminal descriptions:
+ * [43]mlterm is now aliased to mlterm3
+ * [44]nsterm is now derived from nsterm-256color
+ * [45]putty-sco
+ * [46]teken is FreeBSD's "xterm" console.
+ * [47]terminator
+ * [48]terminology
+ * [49]tmux is derived from screen.
+ * several screen.XXX entries support the respective variations for
+ 256 colors.
+ * [50]simpleterm is now 0.5
+ * [51]vte is aliased to vte-2012
+ * [52]vt520ansi
+
+ A few entries use extensions (user-defined terminal capabilities):
+ * E3, used in linux, putty and xterm-basic is tested in the
+ [53]clear program to erase a terminal's scrollback.
+ * TS is used in the [54]xterm+sl building block to help deprecate
+ the misuse of tsl for xterm's title-string.
+ * XT is used in some terminfo entries to improve usefulness for
+ other applications than screen, which would like to pretend that
+ xterm's title is a status-line.
+ * xm is used in examples [55]xterm-1005 and [56]xterm-1006 to
+ illustrate a way to make mouse handling more general
+
+ A few terminals support italics and/or dim capabilities. In
+ particular, screen does not. Documented that, and accommodated the
+ terminals where this feature works with the A_ITALIC extension.
+ * konsole, mlterm3 (italics)
+ * nsterm (dim)
+ * screen (dim)
+ * vte (dim, italics)
+ * xterm (dim, italics)
+
+ 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 [57]NEWS file but treated sketchily in manual pages.
+
+ In addition, the mechanism for producing HTML versions of the
+ documentation has been improved:
+ * use an improved version of [58]man2html to generate html manpages.
+ * regenerated [59]NCURSES-Programming-HOWTO.html to fix some of the
+ broken html emitted by docbook.
+
+ Interesting bug-fixes
+
+ * Ada95 binding:
+ + modify makefile rules to ensure that the PIC option is not
+ used when building a static library
+ + make Ada95 build-fix for big-endian architectures such as
+ sparc. This undoes one of the fixes from [60]20110319, which
+ added an "Unused" member to representation clauses, replacing
+ that with pragmas to suppress warnings about unused bits.
+ * Color and attributes:
+ + parenthesize parameter of COLOR_PAIR and PAIR_NUMBER in
+ curses.h in case it happens to be a comma-expression.
+ + improve [61]20021221 workaround for broken acs, handling a
+ case where that ACS_xxx character is not in the acsc string
+ but there is a known wide-character which can be used.
+ + modify [62]init_pair to accept -1's for color value after
+ [63]assume_default_colors has been called.
+ + add a check in [64]start_color to limit color-pairs to 256
+ when extended colors are not supported.
+ * Resizing the screen:
+ + propagate error-returns from wresize, i.e., the internal
+ increase_size and decrease_size functions through
+ [65]resize_term.
+ + add check for zero/negative dimensions for resizeterm and
+ resize_term.
+ + modify resizeterm to always push a KEY_RESIZE onto the fifo,
+ even if screensize is unchanged. Modify library to push a
+ KEY_RESIZE if there was a SIGWINCH, even if it does not call
+ resizeterm). These changes eliminate the case where a
+ SIGWINCH is received, but ERR is returned from wgetch or
+ wgetnstr because the screen dimensions did not change.
+ * Low-level interfaces
+ + fix an old bug in the termcap emulation; "%i" was ignored in
+ tparm because the parameters to be incremented were already
+ on the internal stack.
+ + change "%l" behavior in tparm to push the string length onto
+ the stack rather than saving the formatted length into the
+ output buffer.
+ + modify name-comparison for tgetstr, etc., to accommodate
+ legacy applications as well as to improve compatbility with
+ BSD 4.2 termcap implementations (see note for [66]980725).
+ * High-level interfaces
+ + modify internal recursion in wgetch which handles cooked mode
+ to check if the call to wgetnstr returned an error. This can
+ happen when both nocbreak and nodelay are set, for instance
+ (see note for [67]960418).
+ + add a check in internal function waddch_nosync to ensure that
+ tab characters are treated as control characters; some broken
+ locales claim they are printable.
+ + modify menu library to ensure that a menu's top-row is
+ adjusted as needed to ensure that the current item is on the
+ screen
+ + fix special case where double-width character overwrites a
+ single- width character in the first column.
+
+ Configuration changes
+
+ Major changes
+
+ The ncurses 6.0 configure script makes changes to the default value of
+ several configure options, depending on the --with-abi-version option
+ (i.e., whether its value is "5" or "6"):
+
+ --enable-const
+ Feature introduced in [68]970405 supports the use of const
+ where X/Open Curses should have, but did not. NetBSD curses
+ does something similar with const.
+
+ --enable-ext-colors
+ Extends the cchar_t structure to allow more than 16 colors to
+ be encoded. This applies only to the wide-character
+ (--enable-widec) configuration.
+
+ --enable-ext-mouse
+ Modifies the encoding of mouse state to make room for a 5th
+ mouse button. That allows one to use ncurses with a wheel mouse
+ with xterm or similar X terminal emulators.
+
+ --enable-ext-putwin
+ Modifies the file-format written by putwin to use printable
+ text rather than binary files, allowing getwin to read screen
+ dumps written by differently-configured ncurses libraries. The
+ extended getwin can still read binary screen dumps from the
+ same configuration of ncurses. This does not change the ABI
+ (the binary interface seen by calling applications).
+
+ --enable-interop
+ Modifies the FIELDTYPE structure used for the form library to
+ make it more generic.
+
+ --enable-lp64
+ Allows an application to define _LP64 to declare chtype and
+ mmask_t as simply "unsigned" rather than the configured types
+ using the --with-chtype and --with-mmask_t options.
+
+ --enable-sp-funcs
+ Compile-in support for extended functions which accept a SCREEN
+ pointer, reducing the need for juggling the global SP value
+ with [69]set_term and [70]delscreen.
+
+ --with-chtype=uint32_t
+ Makes chtype explicitly a 32-bit unsigned value.
+
+ --with-mmask_t=uint32_t
+ Makes mmask_t explicitly a 32-bit unsigned value.
+
+ --with-tparm-arg=intptr_t
+ X/Open Curses declares [71]tparm using long for each of the
+ parameters aside from the formatting string, presuming that
+ long and char* are the same size. This configure option uses
+ intptr_t which provides a better guarantee of the sizes.
+
+ The configure script no longer checks for antique compilers; c89 is
+ assumed as a minimum. There are a few features from later revisions
+ which are used when available. The configure script makes checks to
+ turn on useful warnings from clang, gcc and icc. You should be able to
+ build ncurses 6.0 with any of the current (or not so current) C
+ compilers available in 2015.
+
+ The configure script, by the way, makes changes which do not work with
+ systems whose /bin/sh is non-POSIX. This mainly affects Solaris (the
+ other vendor unix systems have followed the POSIX guidelines for the
+ past twenty years). If you must build on Solaris, its [72]xpg4
+ binaries suffice, e.g.,
+
+ #!/bin/sh
+ WHAT=`hostname|sed -e 's/\..*//'`
+ OUT=configure.out
+ cat >>$OUT <&1 | tee -a $OUT
+
+ Other major changes to the configure script include:
+ * ABI 6 is now the default, intending that the existing ABI 5 should
+ build as before using the "--with-abi-version=5" option.
+ * added --with-extra-suffix option to help with installing
+ nonconflicting ncurses6 packages, e.g., avoiding header- and
+ library-conflicts.
+ NOTE: as a side-effect, this renames
+
+ adacurses-config to adacurses5-config and
+ adacursesw-config to adacursesw5-config
+ * the configure script looks for gnatgcc if the Ada95 binding is
+ built, in preference to the default gcc/cc. The script also
+ ensures that the Ada95 binding is built with the level of
+ optimization as the C libraries.
+ * the configure script captures define's related to -D_XOPEN_SOURCE
+ from the configure check and adds those to the *-config and *.pc
+ files, to simplify use for the wide-character libraries.
+
+ Configuration options
+
+ There are several new (or extended) configure options:
+
+ --disable-db-install
+ Do not install the terminal database. This is used to omit
+ features for packages, as done with --without-progs. The option
+ simplifies building cross-compile support packages.
+
+ --disable-gnat-projects
+ This option is used for regression testing
+
+ --disable-lib-suffixes
+ Suppress the "w", "t" or "tw" suffixes which normally would be
+ added to the library names for the --enable-widec and
+ --with-pthread options.
+
+ --with-cxx-shared
+ When --with-shared is set, build libncurses++ as a shared
+ library. This implicitly relies upon building with gcc/g++,
+ since other compiler suites may have differences in the way
+ shared libraries are built. libtool by the way has similar
+ limitations.
+
+ --with-hashed-db
+ Extended this configure option to simplify building with
+ different versions of Berkeley database using FreeBSD ports.
+
+ --with-pc-suffix
+ If ".pc" files are installed, optionally add a suffix to the
+ files and corresponding package names to separate unusual
+ configurations. If no option value is given (or if it is
+ "none"), no suffix is added. This option is used in the test
+ package for ncurses6.
+
+ --with-xterm-kbs
+ Configure xterm's terminfo entries to use either BS (^H, i.e.,
+ ASCII backspace) or DEL (^?, or 127).
+
+ Portability
+
+ MinGW
+
+ Most of the portability-related work since [73]ncurses 5.9 extended
+ and improved the MinGW port introduced in [74]ncurses 5.8.
+
+ The MinGW port can be readily cross-compiled:
+ * modified configure script to allow creating dll's for MinGW when
+ cross-compiling.
+ * enforced Windows-style path-separator if cross-compiling,
+ * added scripts for test-builds of cross-compiled packages for
+ ncurses6 to MinGW.
+ * added pc-files to the MinGW cross-compiling test-packages.
+ * added script for building test-packages of binaries cross-compiled
+ to MinGW using NSIS.
+ * added nc_mingw.h to installed headers for MinGW port; this is
+ needed for cross-compiling [75]ncurses-examples.
+ * added test-packages for cross-compiling ncurses-examples using the
+ MinGW test-packages.
+
+ The MinGW-specific Windows driver accounts for several changes:
+ * wide-character display is made usable by replacing MinGW's
+ non-working wcrtomb and wctomb functions.
+ * implemented some display features: [76]beep, [77]flash,
+ [78]curs_set.
+ * the driver handles repainting on endwin/refresh combination.
+ * modified treatment of TERM variable for MinGW port to allow
+ explicit use of the Windows console driver by checking if $TERM is
+ set to "#win32console" or an abbreviation of that.
+ * the Windows driver also matches the special TERM value "unknown"
+ * the driver now returns characters for special keys, (like ansi.sys
+ does), when keypad mode is off, rather than returning nothing at
+ all.
+ * the driver checks a new environment variable [79]NCURSES_CONSOLE2
+ to optionally work around a deficiency in Console2 (and its
+ descendent ConsoleZ) which hang when an application creates a
+ console buffer.
+
+ Finally, there are other improvements:
+ * MinGW is one of the configurations where ncurses installs by
+ default into /usr
+ * configuration for cross-compiling uses AC_CHECK_TOOLS in
+ preference to AC_PATH_PROGS when searching for ncurses*-config,
+ e.g., in Ada95/configure and test/configure.
+ * extend Windows support to work with MSYS2;
+ + this works with a scenario where there is an ANSI-escape
+ handler such as ansicon running in the console window.
+ + wrap isatty calls with a macro, provide a corresponding set
+ of support routines to address differences between MinGW and
+ MSYS2.
+ * ensure WINVER is defined in makefiles rather than using headers.
+ * add check for the gnatprep "-T" option.
+ * work around a bug introduced by [80]gcc 4.8.1 in MinGW which
+ breaks "trace" feature.
+ * add a driver-name method to each of the drivers.
+
+ Other ports
+
+ These changes affect certain platforms (ports):
+ * the configure script knows how to build shared libraries with
+ DragonFlyBSD and Interix.
+ * support for AIX shared libraries is improved, tested with AIX 5.3,
+ 6.1 and 7.1 with both gcc 4.2.4 and cc:
+ + the shared-library suffix for AIX 5 and 6 is now ".so"
+ + the -brtl option is used with AIX 5-7; it is needed to link
+ with the shared libraries.
+ * the configure --enable-pc-files option takes into account the
+ [81]PKG_CONFIG_PATH variable.
+ * the configure option --with-pkg-config-libdir provides control
+ over the actual directory into which pc-files are installed.
+ * the build scripts add explicit -ltinfo, etc., to the generated
+ ".pc" file when ld option "--as-needed" is used, or when ncurses
+ and tinfo are installed without using rpath.
+ * the configure script disallows conflicting options
+ "--with-termlib" and "--enable-term-driver".
+ * the check for missing c++ compiler to work when no error is
+ reported, and no variables set is improved (see note for
+ [82]20021206).
+ * the misc/gen_edit.sh script selects a "linux" entry which works
+ with the current kernel rather than assuming it is always
+ "linux3.0"
+ * the test/configure script makes it simpler to override names of
+ curses-related libraries, to help with linking with pdcurses in
+ MinGW environment.
+ * the configure-script/ifdef's allow the BSD OLD_TTY feature to be
+ suppressed if the type of ospeed is configured using the option
+ --with-ospeed to not be a short. By default, it is a short for
+ termcap-compatibility.
+ * the MKlib_gen.sh script works around a recent change in gcc 5
+ (released [83]mid-2015) which essentially emits multiple #line
+ statements for the same position in a file.
+ * the configure script works with Minix3.2 (see [84]note on
+ portability)
+ * OS/2 redux:
+ + the configure script supports OS/2 kLIBC.
+ + the --with-lib-prefix option allows configuring for old/new
+ flavors of OS/2 EMX.
+ * improved configure-script checks for _XOPEN_SOURCE:
+ + the definition works starting with Solaris 10.
+ + the definition is suppressed for IRIX64, since its header
+ files have a conflict versus _SGI_SOURCE.
+ _________________________________________________________________
+
+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 all of the for SVr4 curses features including
+ keyboard mapping, color, forms-drawing with ACS characters, and
+ automatic recognition of keypad and function keys.
+ * ncurses provides these SVr4 add-on libraries (not part of X/Open
+ Curses):
+ + the panels library, supporting a stack of windows with
+ backing store.
+ + the menus 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 which 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
@@ -96,8 +841,7 @@
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 256-color terminals, such as modern xterm, when
- configured using the --enable-ext-colors option.
+ * 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
@@ -119,10 +863,10 @@
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
- sets.
- * A BSD-like tset(1) utility is provided.
+ * The [85]tic/[86]captoinfo utility provided with ncurses has the
+ ability to translate many termcaps from the XENIX, IBM and AT&T
+ extension sets.
+ * A BSD-like [87]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
@@ -137,152 +881,345 @@
other entries in the same source file (as in System V) but also to
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
- exactly what terminal types are available on the system.
+ * The table-of-entries utility [88]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.
+ * Extensive documentation is provided (see the [89]Additional
+ Reading section of the [90]ncurses FAQ for online documentation).
- State of the Package
+Applications using ncurses
- 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 distribution includes a selection of test programs
+ (including a few games). These are available separately as
+ [91]ncurses-examples
- The ncurses code has been tested with a wide variety of applications
- including (versions starting with those noted):
+ The ncurses library has been tested with a wide variety of
+ applications including:
cdk
Curses Development Kit
- [6]http://invisible-island.net/cdk/
- [7]http://www.vexus.ca/products/CDK/
+
+ [92]http://invisible-island.net/cdk/
ded
directory-editor
- [8]http://invisible-island.net/ded/
+
+ [93]http://invisible-island.net/ded/
dialog
the underlying application used in Slackware's setup, and the
- basis for similar applications on GNU/Linux.
- [9]http://invisible-island.net/dialog/
+ basis for similar install/configure applications on many
+ systems.
+
+ [94]http://invisible-island.net/dialog/
lynx
- the character-screen WWW browser
- [10]http://lynx.isc.org/release/
+ the text WWW browser
+
+ [95]http://lynx.isc.org/
Midnight Commander
file manager
- [11]http://www.midnight-commander.org/
+
+ [96]http://www.midnight-commander.org/
mutt
mail utility
- [12]http://www.mutt.org/
+
+ [97]http://www.mutt.org/
ncftp
file-transfer utility
- [13]http://www.ncftp.com/
+
+ [98]http://www.ncftp.com/
nvi
- New vi versions 1.50 are able to use ncurses versions 1.9.7 and
- later.
- [14]https://sites.google.com/a/bostic.com/keithbostic/nvi
+ New vi uses ncurses.
- pinfo
- Lynx-like info browser.
- [15]https://alioth.debian.org/projects/pinfo/
+ [99]https://sites.google.com/a/bostic.com/keithbostic/nvi
tin
- newsreader, supporting color, MIME [16]http://www.tin.org/
+ newsreader, supporting color, MIME
+
+ [100]http://www.tin.org/
as well as some that use ncurses for the terminfo support alone:
minicom
- terminal emulator
- [17]http://alioth.debian.org/projects/minicom/
+ terminal emulator for serial modem connections
+
+ [101]http://alioth.debian.org/projects/minicom/
+
+ mosh
+ a replacement for ssh.
+
+ [102]https://mosh.mit.edu/
+
+ tack
+ terminfo action checker
+
+ [103]http://invisible-island.net/ncurses/tack.html
+
+ tmux
+ terminal multiplexor
+
+ [104]http://tmux.github.io/
vile
- vi-like-emacs
- [18]http://invisible-island.net/vile/
+ vi-like-emacs may be built to use the terminfo, termcap or
+ curses interfaces.
- The ncurses distribution includes a selection of test programs
- (including a few games).
+ [105]http://invisible-island.net/vile/
+
+ and finally, those which use only the termcap interface:
+
+ emacs
+ text editor
+
+ [106]http://www.gnu.org/software/emacs/
+
+ screen
+ terminal multiplexor
+
+ [107]http://www.gnu.org/software/screen/
+
+ vim
+ text editor
+
+ [108]http://www.vim.org/
-Who's Who and What's What
+Development activities
- Zeyd Ben-Halim started it 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 work is being done
- by [19]Thomas Dickey. Thomas Dickey acts as the maintainer for the
- Free Software Foundation, which holds the copyright on ncurses.
- Contact the current maintainers at [20]bug-ncurses@gnu.org.
+ 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 [109]Thomas Dickey. Thomas Dickey also
+ acts as the maintainer for the Free Software Foundation, which holds
+ the [110]copyright on ncurses.
- To join the ncurses mailing list, please write email to
- bug-ncurses-request@gnu.org containing the line:
- subscribe @
+ Contact the current maintainers at
+
+ [111]bug-ncurses@gnu.org
+
+ To join the ncurses mailing list, please write email to
+
+ [112]bug-ncurses-request@gnu.org
+
+ containing the line:
+
+ subscribe @
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 [21]ftp://invisible-island.net/ncurses/ .
+ available at
+
+ [113]ftp://invisible-island.net/ncurses/ .
-Future Plans
+ There is an archive of the mailing list here:
- * Extended-level XPG4 conformance, with internationalization
- support.
- * Ports to more systems, including DOS and Windows.
+ [114]http://lists.gnu.org/archive/html/bug-ncurses (also
+ [115]https)
- We need people to help with these projects. If you are interested in
- working on them, please join the ncurses list.
+Related resources
-Other Related Resources
+ The release notes make scattered references to these pages, which may
+ be interesting by themselves:
+ * [116]man2html
+ * [117]ncurses licensing
+ * [118]Symbol versioning in ncurses
+ * [119]The MinGW port of ncurses
+ * [120]tack - terminfo action checker
+ * [121]tar versus portability
+ * [122]tctest - termcap library checker
+ * [123]Terminal Database
+
+Other resources
The distribution provides a newer version of the terminfo-format
- terminal description file once maintained by [22]Eric Raymond . Unlike
- the older version, the termcap and terminfo data are provided in the
- same file, and provides several user-definable extensions beyond the
- X/Open specification.
+ terminal description file once maintained by [124]Eric Raymond .
+ Unlike the older version, the termcap and terminfo data are provided
+ in the same file, and provides several user-definable extensions
+ beyond the X/Open specification.
You can find lots of information on terminal-related topics not
- covered in the terminfo file at [23]Richard Shuford's archive .
+ covered in the terminfo file at [125]Richard Shuford's archive .
+
+ * [126]Overview
+ * [127]Release Notes
+ + [128]Library improvements
+ o [129]Output buffering
+ o [130]Symbol versioning
+ o [131]Miscellaneous
+ + [132]Program improvements
+ o [133]Utilities
+ o [134]Examples
+ + [135]Terminal database
+ + [136]Documentation
+ + [137]Interesting bug-fixes
+ + [138]Configuration changes
+ o [139]Major changes
+ o [140]Configuration options
+ + [141]Portability
+ o [142]MinGW
+ o [143]Other ports
+ * [144]Features of ncurses
+ * [145]Applications using ncurses
+ * [146]Development activities
+ * [147]Related resources
+ * [148]Other resources
References
- 1. ftp://ftp.gnu.org/gnu/ncurses/
- 2. ftp://invisible-island.net/ncurses/
- 3. http://invisible-island.net/ncurses/man/form_fieldtype.3x
- 4. http://invisible-island.net/ncurses/ncurses-Ada95.html
- 5. http://invisible-island.net/ncurses/ncurses-examples.html
- 6. http://invisible-island.net/cdk/
- 7. http://www.vexus.ca/products/CDK/
- 8. http://invisible-island.net/ded/
- 9. http://invisible-island.net/dialog/
- 10. http://lynx.isc.org/release/
- 11. http://www.midnight-commander.org/
- 12. http://www.mutt.org/
- 13. http://www.ncftp.com/
- 14. https://sites.google.com/a/bostic.com/keithbostic/nvi
- 15. https://alioth.debian.org/projects/pinfo/
- 16. http://www.tin.org/
- 17. http://alioth.debian.org/projects/minicom/
- 18. http://invisible-island.net/vile/
- 19. mailto:dickey@invisible-island.net
- 20. mailto:bug-ncurses@gnu.org
- 21. ftp://invisible-island.net/ncurses/
- 22. http://www.catb.org/~esr/terminfo/
- 23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
+ 1. http://invisible-island.net/ncurses/man/captoinfo.1m.html
+ 2. http://invisible-island.net/ncurses/man/clear.1.html
+ 3. http://invisible-island.net/ncurses/man/infocmp.1m.html
+ 4. http://invisible-island.net/ncurses/man/tabs.1.html
+ 5. http://invisible-island.net/ncurses/man/tic.1m.html
+ 6. http://invisible-island.net/ncurses/man/toe.1m.html
+ 7. http://invisible-island.net/ncurses/man/tput.1.html
+ 8. http://invisible-island.net/ncurses/man/tset.1.html
+ 9. ftp://ftp.gnu.org/gnu/ncurses/
+ 10. ftp://invisible-island.net/ncurses/
+ 11. http://invisible-island.net/ncurses/tctest.html
+ 12. http://invisible-island.net/ncurses/ncurses-examples.html
+ 13. http://lists.gnu.org/archive/html/bug-ncurses/2012-07/msg00029.html
+ 14. http://invisible-island.net/ncurses/NEWS.html#t20050101
+ 15. http://invisible-island.net/ncurses/announce-5.5.html
+ 16. http://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 17. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr
+ 18. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm
+ 19. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization
+ 20. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_NO_SETBUF
+ 21. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html
+ 22. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode
+ 23. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode
+ 24. http://invisible-island.net/ncurses/man/curs_printw.3x.html
+ 25. http://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 26. http://invisible-island.net/ncurses/tack.html
+ 27. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl
+ 28. http://invisible-island.net/ncurses/man/curs_opaque.3x.html
+ 29. http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY
+ 30. http://invisible-island.net/ncurses/man/form_field_opts.3x.html
+ 31. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin
+ 32. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin
+ 33. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output
+ 34. http://invisible-island.net/ncurses/tctest.html
+ 35. http://invisible-island.net/ncurses/tctest.html#my-better-translation
+ 36. http://invisible-island.net/ncurses/NEWS.html#t980103
+ 37. https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&view=markup#l784
+ 38. http://invisible-island.net/ncurses/ncurses-examples.html
+ 39. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env
+ 40. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-derwin
+ 41. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-mvwin
+ 42. http://invisible-island.net/ncurses/man/form_driver.3x.html#h3-form_driver_w
+ 43. http://invisible-island.net/ncurses/terminfo.src.html#toc-_M_L_T_E_R_M
+ 44. http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm
+ 45. http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco
+ 46. http://invisible-island.net/ncurses/terminfo.src.html#tic-teken
+ 47. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R
+ 48. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y
+ 49. http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux
+ 50. http://invisible-island.net/ncurses/terminfo.src.html#toc-_S_I_M_P_L_E_T_E_R_M
+ 51. http://invisible-island.net/ncurses/terminfo.src.html#tic-vte
+ 52. http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi
+ 53. http://aerie.jexium-island.net/ncurses/man/clear.1.html
+ 54. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_sl
+ 55. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1005
+ 56. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1006
+ 57. http://invisible-island.net/ncurses/NEWS.html
+ 58. http://invisible-island.net/scripts/man2html.html
+ 59. http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html
+ 60. http://invisible-island.net/ncurses/NEWS.html#t20110319
+ 61. http://invisible-island.net/ncurses/NEWS.html#t20021221
+ 62. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions
+ 63. http://invisible-island.net/ncurses/man/default_colors.3x.html
+ 64. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions
+ 65. http://invisible-island.net/ncurses/man/resizeterm.3x.html
+ 66. http://invisible-island.net/ncurses/NEWS.html#t980725
+ 67. http://invisible-island.net/ncurses/NEWS.html#t960418
+ 68. http://invisible-island.net/ncurses/NEWS.html#t970405
+ 69. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-set_term
+ 70. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-delscreen
+ 71. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output
+ 72. http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html
+ 73. http://invisible-island.net/ncurses/announce-5.9.html
+ 74. http://invisible-island.net/ncurses/announce-5.8.html
+ 75. http://invisible-island.net/ncurses/ncurses-examples.html
+ 76. http://invisible-island.net/ncurses/man/curs_beep.3x.html
+ 77. http://invisible-island.net/ncurses/man/curs_beep.3x.html
+ 78. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set
+ 79. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_CONSOLE2
+ 80. http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual
+ 81. http://linux.die.net/man/1/pkg-config
+ 82. http://invisible-island.net/ncurses/NEWS.html#t20021206
+ 83. https://gcc.gnu.org/gcc-5/
+ 84. http://invisible-island.net/autoconf/portability-test.html
+ 85. http://invisible-island.net/ncurses/man/tic.1m.html
+ 86. http://invisible-island.net/ncurses/man/captoinfo.1m.html
+ 87. http://invisible-island.net/ncurses/man/tset.1.html
+ 88. http://invisible-island.net/ncurses/man/toe.1m.html
+ 89. http://invisible-island.net/ncurses/ncurses.faq.html#additional_reading
+ 90. http://invisible-island.net/ncurses/ncurses.faq.html
+ 91. http://invisible-island.net/ncurses/ncurses-examples.html
+ 92. http://invisible-island.net/cdk/
+ 93. http://invisible-island.net/ded/
+ 94. http://invisible-island.net/dialog/
+ 95. http://lynx.isc.org/
+ 96. http://www.midnight-commander.org/
+ 97. http://www.mutt.org/
+ 98. http://www.ncftp.com/
+ 99. https://sites.google.com/a/bostic.com/keithbostic/nvi
+ 100. http://www.tin.org/
+ 101. http://alioth.debian.org/projects/minicom/
+ 102. https://mosh.mit.edu/
+ 103. http://invisible-island.net/ncurses/tack.html
+ 104. http://tmux.github.io/
+ 105. http://invisible-island.net/vile/
+ 106. http://www.gnu.org/software/emacs/
+ 107. http://www.gnu.org/software/screen/
+ 108. http://www.vim.org/
+ 109. mailto:dickey@invisible-island.net
+ 110. http://invisible-island.net/ncurses/ncurses-license.html
+ 111. mailto:bug-ncurses@gnu.org
+ 112. mailto:bug-ncurses-request@gnu.org
+ 113. ftp://invisible-island.net/ncurses/
+ 114. http://lists.gnu.org/archive/html/bug-ncurses
+ 115. https://lists.gnu.org/archive/html/bug-ncurses
+ 116. http://invisible-island.net/scripts/man2html.html
+ 117. http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html
+ 118. http://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 119. http://invisible-island.net/ncurses/ncurses-mingw.html
+ 120. http://invisible-island.net/ncurses/tack.html
+ 121. http://invisible-island.net/autoconf/portability-tar.html
+ 122. http://invisible-island.net/ncurses/tctest.html
+ 123. http://invisible-island.net/ncurses/ncurses.html#download_database
+ 124. http://www.catb.org/~esr/terminfo/
+ 125. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
+ 126. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-overview
+ 127. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-release-notes
+ 128. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-library
+ 129. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-setbuf
+ 130. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-versioning
+ 131. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-other
+ 132. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-programs
+ 133. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-utilities
+ 134. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-examples
+ 135. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-database
+ 136. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-documentation
+ 137. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-bug-fixes
+ 138. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-config-config
+ 139. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-major
+ 140. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-options
+ 141. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-portability
+ 142. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-mingw
+ 143. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-systems
+ 144. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-features
+ 145. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-who-uses
+ 146. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-development
+ 147. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-this-stuff
+ 148. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-other-stuff
diff --git a/Ada95/Makefile.in b/Ada95/Makefile.in
index f8207933..4d80fe38 100644
--- a/Ada95/Makefile.in
+++ b/Ada95/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.21 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.22 2015/08/05 23:15:41 tom Exp $
##############################################################################
-# Copyright (c) 1998-2003,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2010,2015 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -30,9 +30,9 @@
# Author: Juergen Pfeifer, 1996
#
# Version Control
-# $Revision: 1.21 $
+# $Revision: 1.22 $
#
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
diff --git a/Ada95/aclocal.m4 b/Ada95/aclocal.m4
index 4f5cd66c..c83f6acb 100644
--- a/Ada95/aclocal.m4
+++ b/Ada95/aclocal.m4
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 2010-2013,2014 Free Software Foundation, Inc. *
+dnl Copyright (c) 2010-2014,2015 Free Software Foundation, Inc. *
dnl *
dnl Permission is hereby granted, free of charge, to any person obtaining a *
dnl copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey
dnl
-dnl $Id: aclocal.m4,v 1.104 2015/06/06 18:03:45 tom Exp $
+dnl $Id: aclocal.m4,v 1.105 2015/08/08 14:25:40 tom Exp $
dnl Macros used in NCURSES Ada95 auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
@@ -1915,7 +1915,7 @@ fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MAKEFLAGS version: 16 updated: 2015/04/15 19:08:48
+dnl CF_MAKEFLAGS version: 17 updated: 2015/08/05 20:44:28
dnl ------------
dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
dnl options to lower-levels. It's very useful for "make -n" -- if we have it.
@@ -1928,7 +1928,7 @@ AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -3042,14 +3042,14 @@ CF_EOF
;;
(msys*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=msysdll
cf_cv_shlib_version_infix=msysdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -3143,10 +3143,10 @@ CF_EOF
EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -3701,14 +3701,14 @@ eval $3="$withval"
AC_SUBST($3)dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PKG_CONFIG_LIBDIR version: 8 updated: 2015/06/06 13:49:58
+dnl CF_WITH_PKG_CONFIG_LIBDIR version: 9 updated: 2015/06/06 19:26:44
dnl -------------------------
dnl Allow the choice of the pkg-config library directory to be overridden.
AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
-AC_MSG_CHECKING(for $PKG_CONFIG library directory)
if test "x$PKG_CONFIG" = xnone ; then
PKG_CONFIG_LIBDIR=no
else
+ AC_MSG_CHECKING(for $PKG_CONFIG library directory)
AC_ARG_WITH(pkg-config-libdir,
[ --with-pkg-config-libdir=XXX use given directory for installing pc-files],
[PKG_CONFIG_LIBDIR=$withval],
diff --git a/Ada95/configure b/Ada95/configure
index 09f4c24f..501e71e1 100644
--- a/Ada95/configure
+++ b/Ada95/configure
@@ -2547,11 +2547,11 @@ elif test "x$cf_pkg_config" != xno ; then
echo "$as_me: WARNING: pkg-config is not installed" >&2;}
fi
-echo "$as_me:2550: checking for $PKG_CONFIG library directory" >&5
-echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6
if test "x$PKG_CONFIG" = xnone ; then
PKG_CONFIG_LIBDIR=no
else
+ echo "$as_me:2553: checking for $PKG_CONFIG library directory" >&5
+echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6
# Check whether --with-pkg-config-libdir or --without-pkg-config-libdir was given.
if test "${with_pkg_config_libdir+set}" = set; then
@@ -2896,7 +2896,7 @@ else
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <&5
echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
@@ -5747,7 +5747,7 @@ fi
cf_ncuconfig_root=ncursesw
cf_have_ncuconfig=no
-if test "x$PKG_CONFIG" != xnone; then
+if test "x${PKG_CONFIG:=none}" != xnone; then
echo "$as_me:5751: checking pkg-config for $cf_ncuconfig_root" >&5
echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
@@ -7292,7 +7292,7 @@ else
cf_ncuconfig_root=ncurses
cf_have_ncuconfig=no
-if test "x$PKG_CONFIG" != xnone; then
+if test "x${PKG_CONFIG:=none}" != xnone; then
echo "$as_me:7296: checking pkg-config for $cf_ncuconfig_root" >&5
echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
@@ -9139,14 +9139,14 @@ echo "${ECHO_T}$CC_SHARED_OPTS" >&6
;;
(cygwin*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\$1
IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
shift
@@ -9161,14 +9161,14 @@ CF_EOF
;;
(msys*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=msysdll
cf_cv_shlib_version_infix=msysdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\$1
IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
shift
@@ -9307,10 +9307,10 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\$1
IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\`
shift
diff --git a/Ada95/doc/Makefile.in b/Ada95/doc/Makefile.in
index 9a74489a..09738274 100644
--- a/Ada95/doc/Makefile.in
+++ b/Ada95/doc/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.3 2012/08/11 21:31:56 tom Exp $
+# $Id: Makefile.in,v 1.4 2015/08/05 23:15:41 tom Exp $
##############################################################################
-# Copyright (c) 2011 Free Software Foundation, Inc. #
+# Copyright (c) 2011-2012,2015 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -31,7 +31,7 @@
#
# Makefile for AdaCurses manual pages.
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR = @DESTDIR@
diff --git a/Ada95/gen/Makefile.in b/Ada95/gen/Makefile.in
index 7d19d177..48df3187 100644
--- a/Ada95/gen/Makefile.in
+++ b/Ada95/gen/Makefile.in
@@ -28,11 +28,11 @@
#
# Author: Juergen Pfeifer, 1996
#
-# $Id: Makefile.in,v 1.84 2015/06/06 21:27:35 tom Exp $
+# $Id: Makefile.in,v 1.85 2015/08/05 23:06:31 tom Exp $
#
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
diff --git a/Ada95/include/Makefile.in b/Ada95/include/Makefile.in
index 23ab32d6..0a89ed61 100644
--- a/Ada95/include/Makefile.in
+++ b/Ada95/include/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.3 2011/03/19 23:39:59 tom Exp $
+# $Id: Makefile.in,v 1.4 2015/08/05 23:15:41 tom Exp $
##############################################################################
-# Copyright (c) 2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2010-2011,2015 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -39,7 +39,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -68,7 +68,7 @@ install :: $(AUTO_SRC)
uninstall ::
ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh
- AWK=$(AWK) sh $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
+ AWK=$(AWK) $(SHELL) $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
tags:
ctags *.[ch]
diff --git a/Ada95/samples/Makefile.in b/Ada95/samples/Makefile.in
index 89498629..5b400273 100644
--- a/Ada95/samples/Makefile.in
+++ b/Ada95/samples/Makefile.in
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2015 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,11 +28,11 @@
#
# Author: Juergen Pfeifer, 1996
#
-# $Id: Makefile.in,v 1.48 2012/10/06 19:00:42 tom Exp $
+# $Id: Makefile.in,v 1.49 2015/08/05 23:15:41 tom Exp $
#
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
diff --git a/Ada95/src/Makefile.in b/Ada95/src/Makefile.in
index 9726d43e..b0e80de5 100644
--- a/Ada95/src/Makefile.in
+++ b/Ada95/src/Makefile.in
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,11 +28,11 @@
#
# Author: Juergen Pfeifer, 1996
#
-# $Id: Makefile.in,v 1.70 2014/08/02 20:31:47 tom Exp $
+# $Id: Makefile.in,v 1.71 2015/08/05 23:15:41 tom Exp $
#
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
diff --git a/Ada95/src/c_threaded_variables.h b/Ada95/src/c_threaded_variables.h
index eac3e1b1..5f0f62f1 100644
--- a/Ada95/src/c_threaded_variables.h
+++ b/Ada95/src/c_threaded_variables.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2011-2014,2015 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -26,9 +26,21 @@
* authorization. *
****************************************************************************/
+/* $Id: c_threaded_variables.h,v 1.3 2015/08/06 23:09:47 tom Exp $ */
+
#ifndef __C_THREADED_VARIABLES_H
#define __C_THREADED_VARIABLES_H
+#include
+
+#if HAVE_INTTYPES_H
+# include
+#else
+# if HAVE_STDINT_H
+# include
+# endif
+#endif
+
#include
extern WINDOW *stdscr_as_function(void);
diff --git a/Ada95/src/c_varargs_to_ada.h b/Ada95/src/c_varargs_to_ada.h
index ee6a7a7c..f2697058 100644
--- a/Ada95/src/c_varargs_to_ada.h
+++ b/Ada95/src/c_varargs_to_ada.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2011,2015 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -26,11 +26,19 @@
* authorization. *
****************************************************************************/
-/* $Id: c_varargs_to_ada.h,v 1.3 2011/03/19 19:07:41 tom Exp $ */
+/* $Id: c_varargs_to_ada.h,v 1.4 2015/08/06 23:08:47 tom Exp $ */
#ifndef __C_VARARGS_TO_ADA_H
#define __C_VARARGS_TO_ADA_H
+#ifdef HAVE_CONFIG_H
+#include
+#else
+#include
+#endif
+
+#include
+
#include
extern int set_field_type_alnum(FIELD * /* field */ ,
diff --git a/Ada95/src/ncurses_compat.c b/Ada95/src/ncurses_compat.c
index b3d0607a..e44f3d0f 100644
--- a/Ada95/src/ncurses_compat.c
+++ b/Ada95/src/ncurses_compat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2011,2015 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,12 +32,22 @@
/*
Version Control
- $Id: ncurses_compat.c,v 1.2 2011/03/28 00:29:04 tom Exp $
+ $Id: ncurses_compat.c,v 1.3 2015/08/06 23:09:10 tom Exp $
--------------------------------------------------------------------------*/
/*
* Provide compatibility with older versions of ncurses.
*/
+#include
+
+#if HAVE_INTTYPES_H
+# include
+#else
+# if HAVE_STDINT_H
+# include
+# endif
+#endif
+
#include
#if defined(NCURSES_VERSION_PATCH)
@@ -49,7 +59,7 @@ extern int _nc_has_mouse(void);
bool
has_mouse(void)
{
- return (bool) _nc_has_mouse();
+ return (bool)_nc_has_mouse();
}
#endif
diff --git a/Makefile.in b/Makefile.in
index 8420b38c..d5691685 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.39 2014/12/13 21:52:19 tom Exp $
+# $Id: Makefile.in,v 1.40 2015/08/05 23:15:41 tom Exp $
##############################################################################
-# Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -31,7 +31,7 @@
#
# Master Makefile for ncurses library.
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR=@DESTDIR@
diff --git a/NEWS b/NEWS
index f54d83a4..f24d2c80 100644
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.2470 2015/07/25 23:04:43 tom Exp $
+-- $Id: NEWS,v 1.2476 2015/08/08 23:29:51 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,16 @@ 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.
+20150808 6.0 release for upload to ftp.gnu.org
+
+20150808
+ + build-fix for Ada95 on older platforms without stdint.h
+ + build-fix for Solaris, whose /bin/sh and /usr/bin/sed are non-POSIX.
+ + update release announcement, summarizing more than 800 changes across
+ more than 200 snapshots.
+ + minor fixes to manpages, etc., to simplify linking from announcement
+ page.
+
20150725
+ updated llib-* files.
+ build-fixes for ncurses library "test_progs" rule.
diff --git a/VERSION b/VERSION
index 145760e8..519fa3d1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:9 6.0 20150725
+5:0:9 6.0 20150808
diff --git a/aclocal.m4 b/aclocal.m4
index c7b9e24e..de1f704c 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -28,7 +28,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: aclocal.m4,v 1.759 2015/06/27 23:10:38 tom Exp $
+dnl $Id: aclocal.m4,v 1.761 2015/08/06 00:46:34 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
@@ -3228,7 +3228,7 @@ ifelse($1,,,[$1=$LIB_PREFIX])
AC_SUBST(LIB_PREFIX)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_RULES version: 82 updated: 2015/06/27 19:09:23
+dnl CF_LIB_RULES version: 83 updated: 2015/08/05 20:44:28
dnl ------------
dnl Append definitions and rules for the given models to the subdirectory
dnl Makefiles, and the recursion rule for the top-level Makefile. If the
@@ -3700,7 +3700,7 @@ rm -f headers.sed headers.sh
dnl ( generating this script makes the makefiles a little tidier :-)
echo creating headers.sh
cat >headers.sh <cf_makeflags.tmp <./edit_man.sed
+ $SHELL $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed
fi
fi
@@ -4340,7 +4340,7 @@ AC_ARG_WITH(manpage-tbl,
AC_MSG_RESULT($MANPAGE_TBL)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MAN_PAGES version: 45 updated: 2015/04/18 08:56:57
+dnl CF_MAN_PAGES version: 46 updated: 2015/08/05 20:44:28
dnl ------------
dnl Try to determine if the man-pages on the system are compressed, and if
dnl so, what format is used. Use this information to construct a script that
@@ -4393,7 +4393,7 @@ cf_edit_man=./edit_man.sh
cf_man_alias=`pwd`/man_alias.sed
cat >$cf_edit_man <mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -5632,14 +5632,14 @@ CF_EOF
;;
(msys*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=msysdll
cf_cv_shlib_version_infix=msysdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -5733,10 +5733,10 @@ CF_EOF
EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
diff --git a/announce.html.in b/announce.html.in
index a07dc057..89fb3ebe 100644
--- a/announce.html.in
+++ b/announce.html.in
@@ -1,7 +1,7 @@
-
+
@@ -39,372 +39,2296 @@
+
-
Announcing ncurses @VERSION@
+
Announcing ncurses @VERSION@
-
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.
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 is better known today
+ as 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.
+ 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 OSX.
+
+
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
These notes are for ncurses
+ @VERSION@, released August 8, 2015.
+
+
This release is designed to be source-compatible with
+ ncurses 5.0 through 5.9; providing a
+ new application binary interface (ABI). Although the source can
+ still be configured to support the ncurses 5 ABI, the intent of the release is to
+ provide extensions which are generally useful, but
+ binary-incompatible with ncurses
+ 5:
+
+
+
+
Extend the cchar_t structure to allow more
+ than 16 colors to be encoded.
+
+
+
+
Modify the encoding of mouse state to make room for a 5th
+ mouse button. That allows one to use ncurses with a wheel mouse with xterm or
+ similar X terminal emulators.
+
+
+
+
There are, of course, numerous other improvements,
+ including
+
+
+
+
fixes made based on the Clang and Coverity static
+ analyzers.
+
+
+
+
memory leak fixes using Valgrind
+
+
+
+
The release notes mention some bug-fixes, but are focused on
+ new features and improvements to existing features log since
+ ncurses 5.9 release.
+
+
While the intent of the release is to provide a new stable
+ ABI, there are other development activities which are summarized
+ below.
+
+
+
+
The original release plan, e.g., for "5.10" was to improve
+ the MinGW port. Ultimately that was completed (wide-character
+ support, mouse, etc), but was deferred to focus on termcap
+ support and performance issues. Also, pinpointing the
+ problems with Console2 took a while.
+
+
+
+
A review of termcap compatibility in 2011 led to several
+ minor fixes in the library and improvements to utilities. To
+ do this properly, a review of the various extent termcap
+ implementations was needed.
Output buffering provided a further, but worthwhile
+ distraction. A bug report in 2012 regarding the use of signal
+ handlers in ncurses) pointed out
+
+ a problem with the use of unsafe functions for handling
+ SIGTSTP. Other signals could be addressed with
+ workarounds; repairing SIGTSTP required a
+ different approach. The solution required changing internal
+ behavior of the library: how it handles output buffering.
+
+
Now ncurses buffers its own
+ output, independently of the standard output. A few
+ applications relied upon the library's direct reuse of the
+ standard output buffering; however that is
+ unspecified behavior and has never been a
+ recommended practice. Identifying these applications as well
+ as refining the change to permit low-level applications to
+ work consistently took time.
+
+
+
+
Since the introduction of the experimental support for 256
+ colors early in 2005
+ (released in ncurses
+ 5.5), there has been increased user interest. Almost all
+ packagers continue providing the ncurses ABI 5 which cannot
+ support 256 colors.
+
+
+
+
Symbol versioning, or the lack of it in ncurses, is the
+ main reason why packagers would be reluctant to add a new
+ ncurses ABI.
+
+
This release provides the new ABI along with
+ script-generated lists of versioned symbols which can be used
+ for both ABI 5 and 6 (with distinct names to keep the two
+ separate). This took time to development, as reported in
+ Symbol
+ versioning in ncurses.
+ newterm accepts parameters for the stream input and
+ output
+
+
+ setupterm (the low-level function) accepts a parameter for
+ the file descriptor of the output.
+
+
+
They are documented in X/Open as if
+ initscr calls newterm using
+ stdout for output stream, and in turn
+ newterm calls setupterm using
+ fileno(stdout) for the file descriptor. As long as
+ an implementation acts as if it does this, it conforms.
+ In practice, implementations do what is implied. This creates a
+ problem: the low-level setupterm function's file
+ descriptor is unbuffered, while newterm implies
+ buffered output. X/Open Curses says that all output is done
+ through the file descriptor, and does not say how the output
+ stream is actually used.
+
+
Initially, ncurses used the file
+ descriptor (obtained from the output stream passed to
+ newterm) for changing the terminal modes, and relied
+ upon the output parameter of newterm for buffered
+ output. Later (to avoid using unsafe buffered I/O in signal
+ handlers), ncurses was modified to
+ use the file descriptor (unbuffered output) when cleaning up on
+ receipt of a signal. Otherwise (when not handling a signal), it
+ continued to use the buffered output.
+
+
That approach worked reasonably well and as a side effect,
+ using the same buffered output as an application might use for
+ printf meant that no flushing was needed when
+ switching between normal- and screen-modes.
+
+
There were a couple of problems:
+
+
+
+
to get good performance, curses (not only ncurses, but SVr4 curses in general) set an
+ output buffer using setbuf or similar function.
+ There is no standard (or portable) way to turn that output
+ buffer off, and revert to line-buffering. The
+ NCURSES_NO_SETBUF environment variable did make it
+ optional.
+
+
+
+
to handle SIGTSTP (the “stop”
+ signal), ncurses relied upon
+ unsafe functions. That is, due to the complexity of the
+ feature, it relied upon reusing existing functions which
+ should not have been called via the signal handler.
+
+
+
+
Conveniently, solving the second problem (by making ncurses do its own output buffering)
+ also fixed the first one. But there were special cases to
+ resolve:
+ low-level functions such as mvcur, putp, vidattr
+ explicitly use the standard output. Those functions were reused
+ internally, and required modification to distinguish whether they
+ were used by the high-level or low-level interfaces.
+
+
Finally, there may still be a few programs which should be
+ modified to improve their portability, e.g., adding an
+
+
+
+fflush(stdout);
+
+
+
+
when switching from “shell”
+ mode to “program”
+ (curses) mode. Those are fairly rare because most programmers
+ have learned not to mix printf and printw.
This release introduces symbol-versioning to ncurses because without it, the change of ABI
+ would be less successful. A lengthy discussion will be presented
+ in Symbol
+ versioning in ncurses. These
+ notes summarize what has changed, and what can be done with the
+ new release.
+
+
Symbol-versioning allows the developers of a library to mark
+ each public symbol (both data and functions) with an identifier
+ denoting the library name and the version for which it was built.
+ By doing this, users of the library have a way to help ensure
+ that applications do not accidentally load an incompatible
+ library. In addition, private symbols can be hidden entirely.
+
+
This release provides sample files for the four principal
+ configurations of ncurses libraries:
+ ncurses, ncursesw,
+ ncursest and ncursestw. Each sample is
+ given in two forms:
+
+
+
+
“.map”
+
+
These list all public symbols, together with version
+ names.
+
+
“.sym”
+
+
These list all public symbols, without version
+ names.
+
+
+
+
The sample files are generated by scripts which take
+ into account a few special cases such as tack to omit
+ many of the ncurses private symbols
+ (beginning with “_nc_”). Here are
+ counts of globals versus locals:
+
+
+
+
+
Config
+
+
Symbols
+
+
Globals
+
+
Locals
+
+
"_nc_"
+
+
+
+
ncurses
+
+
976
+
+
796
+
+
180
+
+
332
+
+
+
+
ncursesw
+
+
1089
+
+
905
+
+
184
+
+
343
+
+
+
+
ncursest
+
+
979
+
+
804
+
+
175
+
+
358
+
+
+
+
ncursestw
+
+
1098
+
+
914
+
+
184
+
+
372
+
+
+
+
+
Although only four sample configurations are presented, each
+ is formed by merging symbols from several combinations of
+ configure-script options, taking into account advice from
+ downstream packagers. Because they are formed by merging, the
+ sample files may list a symbol which is not in a given package.
+ That is expected. The samples have been tested and are working
+ with systems (such as Fedora, FreeBSD and Debian) which fully
+ support this feature. There are other systems which do
+ not support the feature, and a few (such as Solaris)
+ which provide incomplete support.
+
+
The version-naming convention used allows these sample files
+ to build distinct libraries for ABI 5 and 6. Version names
+ consist of
+
+
+
+
configuration name, e.g.,
+ “NCURSESW” for the wide-character
+ libraries
+
+
+
+
ABI version (if not 5)
+
+
+
+
library name for two special cases which have the same
+ interface across configurations:
+ “TINFO” and
+ “TIC”
+
+
+
+
release version
+
+
+
+
patch date (for the release version)
+
+
+
+
For example, running nm -D on the libraries in
+ the ncurses6 test package shows these symbol-versions:
+
+
+
+0000000000000000 A NCURSES6_TIC_5.0.19991023
+0000000000000000 A NCURSES6_TIC_5.1.20000708
+0000000000000000 A NCURSES6_TIC_5.5.20051010
+0000000000000000 A NCURSES6_TIC_5.7.20081102
+0000000000000000 A NCURSES6_TIC_5.9.20150530
+0000000000000000 A NCURSES6_TINFO_5.0.19991023
+0000000000000000 A NCURSES6_TINFO_5.1.20000708
+0000000000000000 A NCURSES6_TINFO_5.2.20001021
+0000000000000000 A NCURSES6_TINFO_5.3.20021019
+0000000000000000 A NCURSES6_TINFO_5.4.20040208
+0000000000000000 A NCURSES6_TINFO_5.5.20051010
+0000000000000000 A NCURSES6_TINFO_5.6.20061217
+0000000000000000 A NCURSES6_TINFO_5.7.20081102
+0000000000000000 A NCURSES6_TINFO_5.8.20110226
+0000000000000000 A NCURSES6_TINFO_5.9.20150530
+0000000000000000 A NCURSESW6_5.1.20000708
+0000000000000000 A NCURSESW6_5.3.20021019
+0000000000000000 A NCURSESW6_5.4.20040208
+0000000000000000 A NCURSESW6_5.5.20051010
+0000000000000000 A NCURSESW6_5.6.20061217
+0000000000000000 A NCURSESW6_5.7.20081102
+0000000000000000 A NCURSESW6_5.8.20110226
+0000000000000000 A NCURSESW6_5.9.20150530
+
+
+
+
As a special case, this release (which makes the final change
+ for ABI 5) is marked with release version 5.9 and patch date
+ 20150530.
The new release has several improvements for performance and
+ building. For instance:
+
+
+
+
several files in ncurses- and progs-directories were
+ modified to allow const data used in internal
+ tables to be put by the linker into the readonly text
+ segment.
+
+
+
+
various improvements were made to building the Ada95
+ binding, both in simplifying the generated files as well as
+ improving the way it uses gnatmake
added form library extension
+ O_DYNAMIC_JUSTIFY option which can be used to override
+ the different treatment of justification for static versus
+ dynamic fields .
+
+
+
+
rewrote
+ putwin and
+ getwin, making an extended version which is capable of
+ reading screen-dumps between the wide/normal ncurses configurations. These are text
+ files, except for a magic code at the beginning:
+
+
+
+0 string \210\210 Screen-dump (ncurses)
+
+
+
+
+
+
several changes to mouse support include:
+
+
+
added decoder for xterm SGR 1006 mouse mode.
+
+
added experimental support for
+ “%u” format to terminfo.
+
+
improved behavior of wheel-mice for xterm protocol:
+ noting that there are only button-presses for buttons
+ “4” and “5”, so there is no need to
+ wait to combine events into double-clicks .
+
+
+
+
+
There are a few new configure options dealing with library
+ customization:
+
+
+
+
add “--enable-ext-putwin”
+ configure option to turn on the extended putwin/getwin. By
+ default, this is enabled for ABI 6 and disabled with ABI
+ 5.
+
+
+
+
add “--enable-string-hacks”
+ option to control whether strlcat and strlcpy may be used.
+ Because ncurses already does the
+ requisite buffer-limit checks, this feature is mainly of
+ interest to quiet compiler-warnings on a few systems.
+
+
+
+
add configure option
+ “--with-tparm-arg” to allow
+ tparm's parameters to be something more likely to be the
+ same size as a pointer, e.g., intptr_t (again,
+ the default is set for ABI 6).
Most of the termcap-related changes based on development of
+ tctest
+ (termcap library checker) are implemented in the tic and
+ infocmp programs rather than affecting the library. As noted in
+ the
+ discussion of tctest, ncurses's ability to translate between terminfo
+ and termcap formats has been improved at different times, but
+ subject to feedback from "real" termcap users. There are very few
+ of those. Nowadays, virtually all termcap users are
+ using ncurses (or NetBSD, with its
+ own terminfo library) and their programs are actually using
+ terminfo rather than termcap data.
+
+
Still, there are a few. A comment about the translation of the
+ ASCII NUL character prompted a review:
+
+
+
+
Both terminfo and termcap store string capabilities as
+ NUL-terminated strings.
+
+
+
+
In terminfo, a \0 in a terminal description
+ is stored as \200.
+
+
+
+
There are no (known) terminals which would behave
+ differently when sent \0 or
+ \200.
+
+
+
+
When translating to terminfo format (or displaying a
+ printable version of an entry using infocmp), ncurses shows \200 as
+ \0.
+
+
+
+
It has done this since 1998 (quoting from the NEWS
+ file):
+
+
+
+980103
+...
+ + modify _nc_tic_expand() to generate \0 rather than \200.
+...
+ + correct translation of terminfo "^@", to \200, like \0.
+
+
+
+
+
+
However, the _nc_tic_expand function (which
+ optionally produces terminfo or termcap format) did not
+ address this special case for termcap. Even the later 4.4BSD
+
+ cgetstr interprets a \0 literally, ending
+ that string (rather than using the terminfo
+ improvement).
+
+
+
+
As a result of the review, several improvements were made to
+ ncurses translation to/from termcap
+ format — and improving the checks made in tic for
+ consistency of entries. Most of these are not of general
+ interest, except for two new command-line options for tic and
+ infocmp:
+
+
+
+
the “-0” option generates
+ termcap/terminfo source on a single line.
+
+
+
+
the “-K” option provides stricter
+ BSD-compatibility for termcap output.
+
+
+
+
Other user-visible improvements and new features include:
+
+
+
+
added “-D” option to tic and
+ infocmp, to show the database locations that it could
+ use.
+
+
+
+
added “-s” option to toe, to sort
+ its output.
+
+
+
+
extended “-c” and
+ “-n” options of infocmp to allow
+ comparing more than two entries.
+
+
+
+
modified toe's report when “-a”
+ and “-s” options are combined, to
+ add a column showing which entries belong to a given
+ database.
+
+
+
+
modified the clear program to take into account the
+ “E3” extended capability to clear
+ the terminal's scrollback buffer.
Along with the library and utilities, many improvements were
+ made to the ncurses-examples.
+ Some were made to allow building (and comparison-testing) against
+ NetBSD curses and PDCurses. Both lack some of the X/Open Curses
+ features, necessitating customization. But this activity was
+ useful because it showed some remaining performance issues (which
+ have been resolved in this release).
+
+
These changes were made to verify compatibility or compare
+ performance of ncurses:
+
+
+
+
made workarounds for compiling test-programs with NetBSD
+ curses, though it lacks some common functions such as
+
+ use_env.
+
+
+
+
added dots_termcap test-program
+
+
+
+
added dots_curses test-program, for comparison with the
+ low-level examples.
+
+
+
+
added test_setupterm test-proram to demonstrate
+ normal/error returns from the setupterm and restartterm
+ functions.
+
+
+
+
added “-d”,
+ “-e” and
+ “-q” options to the demo_terminfo
+ and demo_termcap test-programs.
+
+
+
+
added “-y” option to demo_termcap
+ and test/demo_terminfo test-programs to demonstrate behavior
+ with/without extended capabilities.
+
+
+
+
modified demo_termcap and demo_terminfo test-programs to
+ make their options more directly comparable, and add
+ “-i” option to specify a terminal
+ description filename to parse for names to lookup.
+
+
+
+
rewrote the tests for
+ mvderwin and test for recursive
+ mvwin in the movewindow test-program.
+
+
+
+
These changes were made to help with the MinGW port:
+
+
+
+
added test-screens to the ncurses test-program to show
+ 256-characters at a time, to help with MinGW port.
+
+
+
+
modified the view test-program to load UTF-8 when built
+ with MinGW by using regular win32 API because the MinGW
+ functions mblen and mbtowc do not work.
+
+
+
+
added “-s” option to the view
+ test-program to allow it to start in single-step mode,
+ reducing size of trace files when it is used for debugging
+ MinGW changes.
+
+
+
+
These changes were made to verify new extensions in ncurses:
+
+
+
+
added
+ form_driver_w entrypoint to wide-character forms library,
+ as well as form_driver_w test-program.
+
+
+
+
modified ncurses test-program's b/B tests to display lines
+ only for the attributes which a given terminal supports, to
+ make room for an italics test.
+
+
+
+
modified ncurses test-program, adding
+ “-E” and
+ “-T” options to demonstrate use_env
+ versus use_tioctl.
+
+
+
+
modified ncurses test-program's c/C tests to cycle through
+ subsets of the total number of colors, to better illustrate
+ 8/16/88/256-colors by providing directly comparable
+ screens.
+
+
+
+
modified the ncurses test-program to also show position
+ reports in 'a' test.
+
+
+
+
These changes were made to make the examples more useful:
+
+
+
+
added scripts for building dpkg and rpm test-packages
+
+
+
+
modified the hanoi test-program to show the minimum number
+ of moves possible for the given number of tiles.
+
+
+
+
modified the knight test-program to show the number of
+ choices possible for each position in automove option, e.g.,
+ to allow user to follow Warnsdorff's rule to solve the
+ puzzle.
A few entries use extensions (user-defined terminal
+ capabilities):
+
+
+
+
E3, used in linux, putty and xterm-basic is
+ tested in the clear
+ program to erase a terminal's scrollback.
+
+
+
+
TS is used in the
+ xterm+sl building block to help deprecate the misuse of
+ tsl for xterm's title-string.
+
+
+
+
XT is used in some terminfo entries to
+ improve usefulness for other applications than screen, which
+ would like to pretend that xterm's title is a
+ status-line.
+
+
+
+
xm is used in examples
+ xterm-1005 and
+ xterm-1006 to illustrate a way to make mouse handling
+ more general
+
+
+
+
A few terminals support italics and/or dim capabilities. In
+ particular, screen does not. Documented that, and accommodated
+ the terminals where this feature works with the
+ A_ITALIC extension.
modify makefile rules to ensure that the PIC option is
+ not used when building a static library
+
+
+
+
make Ada95 build-fix for big-endian architectures such
+ as sparc. This undoes one of the fixes from
+ 20110319, which added an
+ “Unused” member to
+ representation clauses, replacing that with pragmas to
+ suppress warnings about unused bits.
+
+
+
+
+
+
Color and attributes:
+
+
+
+
parenthesize parameter of COLOR_PAIR and
+ PAIR_NUMBER in curses.h in case it happens
+ to be a comma-expression.
+
+
+
+
improve
+ 20021221 workaround for broken acs, handling a case
+ where that ACS_xxx character is not in the
+ acsc string but there is a known
+ wide-character which can be used.
add a check in
+ start_color to limit color-pairs to 256 when extended
+ colors are not supported.
+
+
+
+
+
+
Resizing the screen:
+
+
+
+
propagate error-returns from wresize, i.e., the
+ internal increase_size and decrease_size functions
+ through
+ resize_term.
+
+
+
+
add check for zero/negative dimensions for
+ resizeterm and resize_term.
+
+
+
+
modify resizeterm to always push a
+ KEY_RESIZE onto the fifo, even if screensize
+ is unchanged. Modify library to push a
+ KEY_RESIZE if there was a SIGWINCH, even if
+ it does not call resizeterm). These changes
+ eliminate the case where a SIGWINCH is received, but ERR
+ is returned from wgetch or
+ wgetnstr because the screen dimensions did
+ not change.
+
+
+
+
+
+
Low-level interfaces
+
+
+
+
fix an old bug in the termcap emulation;
+ “%i” was ignored in
+ tparm because the parameters to be
+ incremented were already on the internal stack.
+
+
+
+
change “%l” behavior in tparm
+ to push the string length onto the stack rather than
+ saving the formatted length into the output buffer.
+
+
+
+
modify name-comparison for tgetstr, etc., to
+ accommodate legacy applications as well as to improve
+ compatbility with BSD 4.2 termcap implementations (see
+ note for 980725).
+
+
+
+
+
High-level interfaces
+
+
+
+
modify internal recursion in wgetch which
+ handles cooked mode to check if the call to
+ wgetnstr returned an error. This can happen
+ when both nocbreak and nodelay
+ are set, for instance (see note for 960418).
+
+
+
+
add a check in internal function
+ waddch_nosync to ensure that tab characters
+ are treated as control characters; some broken locales
+ claim they are printable.
+
+
+
+
modify menu library to ensure that a menu's top-row is
+ adjusted as needed to ensure that the current item is on
+ the screen
+
+
+
+
fix special case where double-width character
+ overwrites a single- width character in the first
+ column.
The ncurses code was developed under GNU/Linux. It has been in
- use for some time with OpenBSD as the system curses library, and
- on FreeBSD and NetBSD as an external package. It should port
- easily to any ANSI/POSIX-conforming UNIX. It has even been ported
- to OS/2 Warp!
+
The ncurses 6.0 configure script
+ makes changes to the default value of several configure
+ options, depending on the --with-abi-version option
+ (i.e., whether its value is “5” or
+ “6”):
-
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.
+
+
--enable-const
+
+
+
Feature introduced in 970405
+ supports the use of const where X/Open Curses
+ should have, but did not. NetBSD curses does something
+ similar with const.
+
+
+
--enable-ext-colors
+
+
+
Extends the cchar_t structure to allow more
+ than 16 colors to be encoded. This applies only to the
+ wide-character (--enable-widec)
+ configuration.
+
+
+
--enable-ext-mouse
+
+
+
Modifies the encoding of mouse state to make room for a
+ 5th mouse button. That allows one to use ncurses with a wheel
+ mouse with xterm or similar X terminal emulators.
+
+
+
--enable-ext-putwin
+
+
+
Modifies the file-format written by putwin to
+ use printable text rather than binary files, allowing
+ getwin to read screen dumps written by
+ differently-configured ncurses libraries. The extended
+ getwin can still read binary screen dumps from
+ the same configuration of ncurses. This does not
+ change the ABI (the binary interface seen by calling
+ applications).
+
+
+
--enable-interop
+
+
+
Modifies the FIELDTYPE structure used for the
+ form library to make it more generic.
+
+
+
--enable-lp64
+
+
+
Allows an application to define _LP64 to
+ declare chtype and mmask_t as
+ simply “unsigned” rather than the
+ configured types using the --with-chtype and
+ --with-mmask_t options.
+
+
+
--enable-sp-funcs
+
+
+
Compile-in support for extended functions which accept a
+ SCREEN pointer, reducing the need for juggling the global SP
+ value with
+ set_term and
+ delscreen.
+
-
The ncurses distribution is available via anonymous FTP at the
- GNU distribution site ftp://ftp.gnu.org/gnu/ncurses/ .
+
Makes chtype explicitly a 32-bit unsigned
+ value.
+
+
+
--with-mmask_t=uint32_t
-
Release Notes
+
+
Makes mmask_t explicitly a 32-bit unsigned
+ value.
+
-
This release is designed to be upward compatible from ncurses
- 5.0 through 5.8; very few applications will require
- recompilation, depending on the platform. These are the
- highlights from the change-log since ncurses 5.8 release.
+
--with-tparm-arg=intptr_t
-
This is a bug-fix release, correcting a small number of urgent
- problems in the ncurses library from the 5.8 release.
+
+
X/Open Curses declares
+ tparm using long for each of the parameters
+ aside from the formatting string, presuming that
+ long and char* are the same size.
+ This configure option uses intptr_t which
+ provides a better guarantee of the sizes.
+
+
-
It also improves the Ada95 binding:
+
The configure script no longer checks for antique compilers;
+ c89 is assumed as a minimum. There are a few
+ features from later revisions which are used when available. The
+ configure script makes checks to turn on useful warnings from
+ clang, gcc and icc. You should be able to build ncurses 6.0 with any of the current (or not so
+ current) C compilers available in 2015.
+
+
The configure script, by the way, makes changes which do not
+ work with systems whose /bin/sh is non-POSIX. This
+ mainly affects Solaris (the other vendor unix systems have followed the POSIX guidelines
+ for the past twenty years). If you must build on Solaris, its
+ xpg4
+ binaries suffice, e.g.,
Other major changes to the configure script include:
-
fixes a longstanding portability problem with its use of
- the set_field_type
- function. Because that function uses variable-length argument
- lists, its interface with gnat does not work with certain
- platforms.
+
+
ABI 6 is now the default, intending that the existing ABI
+ 5 should build as before using the
+ “--with-abi-version=5” option.
+
+
+
+
added --with-extra-suffix option to help with
+ installing nonconflicting ncurses6 packages, e.g., avoiding
+ header- and library-conflicts.
+
+
NOTE: as a side-effect, this renames
-
improves configurability and portability, particularly when
- built separately from the main ncurses tree. The 5.8 release
- introduced scripts which can be used to construct separate
- tarballs for the Ada95 and ncurses examples.
+
+
adacurses-config to
+ adacurses5-config and
+ adacursesw-config to
+ adacursesw5-config
+
+
-
Those were a proof of concept. For the 5.9 release, those
- scripts are augmented with rpm- and dpkg-scripts used in test
- builds against a variety of gnat- and system ncurses versions
- as old as gnat 3.15 and ncurses 5.4 (see snapshots and
- systems tested here.
+
+
the configure script looks for gnatgcc if the Ada95
+ binding is built, in preference to the default gcc/cc. The
+ script also ensures that the Ada95 binding is built with the
+ level of optimization as the C libraries.
-
additional improvements were made for portability of the
- ncurses examples, adding rpm- and dpkg-scripts for test-builds.
- See this
- page for snapshots and other information.
+
+
the configure script captures define's related to
+ -D_XOPEN_SOURCE from the configure check and adds those to
+ the *-config and *.pc files, to simplify use for the
+ wide-character libraries.
There are several new (or extended) configure options:
+
+
+
--disable-db-install
+
+
+
Do not install the terminal database. This is used to omit
+ features for packages, as done with
+ --without-progs. The option simplifies building
+ cross-compile support packages.
+
+
+
--disable-gnat-projects
+
+
+
This option is used for regression testing
+
+
+
--disable-lib-suffixes
+
+
+
Suppress the “w”, “t” or
+ “tw” suffixes which normally would be added to
+ the library names for the --enable-widec and
+ --with-pthread options.
+
+
+
--with-cxx-shared
+
+
+
When --with-shared is set, build libncurses++
+ as a shared library. This implicitly relies upon building
+ with gcc/g++, since other compiler suites may have
+ differences in the way shared libraries are built. libtool by
+ the way has similar limitations.
+
+
+
--with-hashed-db
+
+
+
Extended this configure option to simplify building with
+ different versions of Berkeley database using FreeBSD
+ ports.
+
+
+
--with-pc-suffix
-
The ncurses package is fully compatible with SVr4 (System V
- Release 4) curses:
+
+
If ".pc" files are installed, optionally add a suffix to
+ the files and corresponding package names to separate unusual
+ configurations. If no option value is given (or if it is
+ "none"), no suffix is added. This option is used in the test
+ package for ncurses6.
+
+
+
--with-xterm-kbs
+
+
+
Configure xterm's terminfo entries to use either BS
+ (^H, i.e., ASCII backspace) or DEL
+ (^?, or 127).
Most of the portability-related work since
+ ncurses 5.9 extended and improved the MinGW port
+ introduced in
+ ncurses 5.8.
+
+
The MinGW port can be readily cross-compiled:
-
All 257 of the SVr4 calls have been implemented (and are
- documented).
+
+
modified configure script to allow creating dll's for
+ MinGW when cross-compiling.
+
-
Full support for SVr4 curses features including keyboard
- mapping, color, forms-drawing with ACS characters, and
- automatic recognition of keypad and function keys.
+
+
enforced Windows-style path-separator if
+ cross-compiling,
+
-
An emulation of the SVr4 panels library, supporting a stack
- of windows with backing store, is included.
+
+
added scripts for test-builds of cross-compiled packages
+ for ncurses6 to MinGW.
+
-
An emulation of the SVr4 menus library, supporting a
- uniform but flexible interface for menu programming, is
- included.
+
+
added pc-files to the MinGW cross-compiling
+ test-packages.
+
-
An emulation of the SVr4 form library, supporting data
- collection through on-screen forms, is included.
+
+
added script for building test-packages of binaries
+ cross-compiled to MinGW using NSIS.
+
-
Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
- SVr4 curses uses.
+
+
added nc_mingw.h to installed headers for
+ MinGW port; this is needed for cross-compiling ncurses-examples.
+
-
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.
+
+
added test-packages for cross-compiling ncurses-examples
+ using the MinGW test-packages.
+
-
The ncurses package also has many useful extensions over
- SVr4:
+
The MinGW-specific Windows driver accounts for several
+ changes:
-
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 most 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).
+
+
wide-character display is made usable by replacing MinGW's
+ non-working wcrtomb and wctomb
+ functions.
Unlike SVr3 curses, ncurses can write to the
- rightmost-bottommost corner of the screen if your terminal has
- an insert-character capability.
+
+
the driver handles repainting on endwin/refresh
+ combination.
+
-
Ada95 and C++ bindings.
+
+
modified treatment of TERM variable for MinGW
+ port to allow explicit use of the Windows console driver by
+ checking if $TERM is set to
+ “#win32console” or an abbreviation
+ of that.
+
-
Support for mouse event reporting with X Window xterm and
- FreeBSD and OS/2 console windows.
+
+
the Windows driver also matches the special
+ TERM value “unknown”
+
-
Extended mouse support via Alessandro Rubini's gpm
- package.
+
+
the driver now returns characters for special keys, (like
+ ansi.sys does), when keypad mode is off, rather
+ than returning nothing at all.
+
-
The function wresize allows you to resize
- windows, preserving their data.
+
+
the driver checks a new environment variable
+ NCURSES_CONSOLE2 to optionally work around a deficiency
+ in Console2 (and its descendent
+ ConsoleZ) which hang when an application creates
+ a console buffer.
+
+
-
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.
+
Finally, there are other improvements:
-
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.
+
+
+
MinGW is one of the configurations where ncurses installs by default into /usr
+
-
Support for 256-color terminals, such as modern xterm, when
- configured using the --enable-ext-colors
- option.
+
configuration for cross-compiling uses AC_CHECK_TOOLS in
+ preference to AC_PATH_PROGS when searching for ncurses*-config,
+ e.g., in Ada95/configure and test/configure.
-
Support for 16-color terminals, such as aixterm
- and modern xterm.
+
+
extend Windows support to work with MSYS2;
-
Better cursor-movement optimization. The package now
- features a cursor-local-movement computation more efficient
- than either BSD's or System V's.
+
+
+
this works with a scenario where there is an
+ ANSI-escape handler such as ansicon running
+ in the console window.
+
-
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.
+
wrap isatty calls with a macro, provide a
+ corresponding set of support routines to address
+ differences between MinGW and MSYS2.
+
+
-
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.
+
+
ensure WINVER is defined in makefiles rather
+ than using headers.
+
-
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).
+
+
add check for the gnatprep
+ “-T” option.
+
-
The tic(1)/captoinfo utility provided with ncurses has the
- ability to translate many termcaps from the XENIX, IBM and
- AT&T extension sets.
+
+
work around a bug introduced by
+ gcc 4.8.1 in MinGW which breaks "trace" feature.
+
-
A BSD-like tset(1) utility is provided.
+
+
add a driver-name method to each of the drivers.
+
+
-
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 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 V.)
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 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 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):
+
These changes affect certain platforms (ports):
-
-
cdk
+
+
+
the configure script knows how to build shared libraries
+ with DragonFlyBSD and Interix.
the build scripts add explicit -ltinfo, etc., to the
+ generated ".pc" file when ld option
+ “--as-needed” is used, or when
+ ncurses and tinfo are installed without using rpath.
+
-
dialog
+
+
the configure script disallows conflicting options
+ “--with-termlib” and
+ “--enable-term-driver”.
+
-
the underlying application used in Slackware's setup, and
- the basis for similar applications on GNU/Linux.
- http://invisible-island.net/dialog/
+
+
the check for missing c++ compiler to work when no error
+ is reported, and no variables set is improved (see note for
+ 20021206).
+
-
lynx
+
+
the misc/gen_edit.sh script selects a "linux" entry which
+ works with the current kernel rather than assuming it is
+ always "linux3.0"
the test/configure script makes it simpler to override
+ names of curses-related libraries, to help with linking with
+ pdcurses in MinGW environment.
+
-
Midnight Commander
+
+
the configure-script/ifdef's allow the BSD OLD_TTY feature
+ to be suppressed if the type of ospeed is
+ configured using the option --with-ospeed to not
+ be a short. By default, it is a
+ short for termcap-compatibility.
the MKlib_gen.sh script works around a recent change in
+ gcc 5 (released mid-2015) which essentially
+ emits multiple #line statements for the same
+ position in a file.
+
-
mutt
+
+
the configure script works with Minix3.2 (see note
+ on portability)
ncurses supports all of the
+ for SVr4 curses features including keyboard mapping, color,
+ forms-drawing with ACS characters, and automatic recognition
+ of keypad and function keys.
+
-
tin
+
+
ncurses provides these SVr4
+ add-on libraries (not part of X/Open Curses):
+
+
+
+
the panels library, supporting a stack of windows with
+ backing store.
+
+
+
+
the menus 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 which 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.
+
+
+
-
as well as some that use ncurses for the terminfo support
- alone:
+
+
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.
+
+
-
-
minicom
+
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, and most 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
+ FreeBSD and OS/2 console windows.
+
+
+
+
Extended mouse support via Alessandro Rubini's gpm
+ package.
+
+
+
+
The function wresize allows you to resize
+ windows, preserving their data.
+
+
+
+
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 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 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 must run in single-user
+ mode).
+
+
+
+
The tic/captoinfo
+ utility provided with ncurses has
+ the ability to translate many termcaps from the XENIX, IBM
+ and AT&T extension sets.
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 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 V.)
+
+
+
+
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 user's $HOME/.terminfo directory.
+
+
+
+
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.
Zeyd Ben-Halim started ncurses
+ from a previous package pcurses, written by Pavel Curtis. Eric S.
+ Raymond continued development. Jürgen Pfeifer wrote most of
+ the form and menu libraries. Ongoing development work is done by
+ Thomas Dickey.
+ Thomas Dickey also acts as the maintainer for the Free Software
+ Foundation, which holds the copyright
+ on ncurses.
+ "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org
+ containing the line:
-
The ncurses distribution includes a selection of test programs
- (including a few games).
-
-
Who's Who and What's What
-
-
Zeyd Ben-Halim started it from a previous package pcurses,
- written by Pavel Curtis. Eric S. Raymond continued development.
- Jürgen Pfeifer wrote most of the form and menu libraries.
- Ongoing work is being done by Thomas Dickey. Thomas
- Dickey acts as the maintainer for the Free Software Foundation,
- which holds the copyright on ncurses. 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>
-
+
+
subscribe
+ <name>@<host.domain>
+
This list is open to anyone interested in helping with the
development and testing of this package.
The distribution provides a newer version of the
terminfo-format terminal description file once maintained by
@@ -417,5 +2341,81 @@
not covered in the terminfo file at
Richard Shuford's archive .
diff --git a/doc/html/announce.html b/doc/html/announce.html
index ffc115de..694848a1 100644
--- a/doc/html/announce.html
+++ b/doc/html/announce.html
@@ -1,8 +1,7 @@
-
+
+ "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
- Announcing ncurses 5.9
+ Announcing ncurses 6.0
+
-
Announcing ncurses 5.9
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
+
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 SYSV-curses
- enhancements over BSD curses.
+ function-key mapping, and has all the other SVr4-curses
+ enhancements over BSD curses. SVr4 curses is better known today
+ as 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.
+ 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 OSX.
-
The ncurses code was developed under GNU/Linux. It has been in
- use for some time with OpenBSD as the system curses library, and
- on FreeBSD and NetBSD as an external package. It should port
- easily to any ANSI/POSIX-conforming UNIX. It has even been ported
- to OS/2 Warp!
+
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.
This release is designed to be upward
- compatible from ncurses 5.0 through 5.8; very few applications
- will require recompilation, depending on the platform. These are
- the highlights from the change-log since ncurses 5.8 release.
-
- This is a bug-fix release, correcting a small number of urgent problems
- in the ncurses library from the 5.8 release.
-
- It also improves the Ada95 binding:
-
-
fixes a longstanding portability problem with its use of the
- set_field_type
- function. Because that function uses variable-length argument lists,
- its interface with gnat does not work with certain platforms.
-
improves configurability and portability, particularly when built
- separately from the main ncurses tree. The 5.8 release introduced
- scripts which can be used to construct separate tarballs for the
- Ada95 and ncurses examples.
-
Those were a proof of concept. For the 5.9 release, those
- scripts are augmented with rpm- and dpkg-scripts used in test builds
- against a variety of gnat- and system ncurses versions as old as
- gnat 3.15 and ncurses 5.4 (see snapshots and systems tested
- here.
-
additional improvements were made for portability of the
- ncurses examples, adding rpm- and dpkg-scripts for test-builds.
- See
- this page
- for snapshots and other information.
-
-
-
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 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.
-
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, and most 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
- FreeBSD and OS/2 console windows.
-
-
Extended mouse support via Alessandro Rubini's gpm
- package.
-
-
The function wresize allows you to resize
- windows, preserving their data.
-
-
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 256-color terminals, such as modern xterm, when
- configured using the --enable-ext-colors
- option.
-
-
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 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 must run in single-user
- mode).
These notes are for ncurses
+ 6.0, released August 8, 2015.
+
+
This release is designed to be source-compatible with
+ ncurses 5.0 through 5.9; providing a
+ new application binary interface (ABI). Although the source can
+ still be configured to support the ncurses 5 ABI, the intent of the release is to
+ provide extensions which are generally useful, but
+ binary-incompatible with ncurses
+ 5:
+
+
+
+
Extend the cchar_t structure to allow more
+ than 16 colors to be encoded.
+
+
+
+
Modify the encoding of mouse state to make room for a 5th
+ mouse button. That allows one to use ncurses with a wheel mouse with xterm or
+ similar X terminal emulators.
+
+
+
+
There are, of course, numerous other improvements,
+ including
+
+
+
+
fixes made based on the Clang and Coverity static
+ analyzers.
+
+
+
+
memory leak fixes using Valgrind
+
+
+
+
The release notes mention some bug-fixes, but are focused on
+ new features and improvements to existing features log since
+ ncurses 5.9 release.
+
+
While the intent of the release is to provide a new stable
+ ABI, there are other development activities which are summarized
+ below.
+
+
+
+
The original release plan, e.g., for "5.10" was to improve
+ the MinGW port. Ultimately that was completed (wide-character
+ support, mouse, etc), but was deferred to focus on termcap
+ support and performance issues. Also, pinpointing the
+ problems with Console2 took a while.
+
+
+
+
A review of termcap compatibility in 2011 led to several
+ minor fixes in the library and improvements to utilities. To
+ do this properly, a review of the various extent termcap
+ implementations was needed.
Output buffering provided a further, but worthwhile
+ distraction. A bug report in 2012 regarding the use of signal
+ handlers in ncurses) pointed out
+
+ a problem with the use of unsafe functions for handling
+ SIGTSTP. Other signals could be addressed with
+ workarounds; repairing SIGTSTP required a
+ different approach. The solution required changing internal
+ behavior of the library: how it handles output buffering.
+
+
Now ncurses buffers its own
+ output, independently of the standard output. A few
+ applications relied upon the library's direct reuse of the
+ standard output buffering; however that is
+ unspecified behavior and has never been a
+ recommended practice. Identifying these applications as well
+ as refining the change to permit low-level applications to
+ work consistently took time.
+
+
+
+
Since the introduction of the experimental support for 256
+ colors early in 2005
+ (released in ncurses
+ 5.5), there has been increased user interest. Almost all
+ packagers continue providing the ncurses ABI 5 which cannot
+ support 256 colors.
+
+
+
+
Symbol versioning, or the lack of it in ncurses, is the
+ main reason why packagers would be reluctant to add a new
+ ncurses ABI.
+
+
This release provides the new ABI along with
+ script-generated lists of versioned symbols which can be used
+ for both ABI 5 and 6 (with distinct names to keep the two
+ separate). This took time to development, as reported in
+ Symbol
+ versioning in ncurses.
+ newterm accepts parameters for the stream input and
+ output
+
+
+ setupterm (the low-level function) accepts a parameter for
+ the file descriptor of the output.
+
+
+
They are documented in X/Open as if
+ initscr calls newterm using
+ stdout for output stream, and in turn
+ newterm calls setupterm using
+ fileno(stdout) for the file descriptor. As long as
+ an implementation acts as if it does this, it conforms.
+ In practice, implementations do what is implied. This creates a
+ problem: the low-level setupterm function's file
+ descriptor is unbuffered, while newterm implies
+ buffered output. X/Open Curses says that all output is done
+ through the file descriptor, and does not say how the output
+ stream is actually used.
+
+
Initially, ncurses used the file
+ descriptor (obtained from the output stream passed to
+ newterm) for changing the terminal modes, and relied
+ upon the output parameter of newterm for buffered
+ output. Later (to avoid using unsafe buffered I/O in signal
+ handlers), ncurses was modified to
+ use the file descriptor (unbuffered output) when cleaning up on
+ receipt of a signal. Otherwise (when not handling a signal), it
+ continued to use the buffered output.
+
+
That approach worked reasonably well and as a side effect,
+ using the same buffered output as an application might use for
+ printf meant that no flushing was needed when
+ switching between normal- and screen-modes.
+
+
There were a couple of problems:
+
+
+
+
to get good performance, curses (not only ncurses, but SVr4 curses in general) set an
+ output buffer using setbuf or similar function.
+ There is no standard (or portable) way to turn that output
+ buffer off, and revert to line-buffering. The
+ NCURSES_NO_SETBUF environment variable did make it
+ optional.
+
+
+
+
to handle SIGTSTP (the “stop”
+ signal), ncurses relied upon
+ unsafe functions. That is, due to the complexity of the
+ feature, it relied upon reusing existing functions which
+ should not have been called via the signal handler.
+
+
+
+
Conveniently, solving the second problem (by making ncurses do its own output buffering)
+ also fixed the first one. But there were special cases to
+ resolve:
+ low-level functions such as mvcur, putp, vidattr
+ explicitly use the standard output. Those functions were reused
+ internally, and required modification to distinguish whether they
+ were used by the high-level or low-level interfaces.
+
+
Finally, there may still be a few programs which should be
+ modified to improve their portability, e.g., adding an
+
+
+
+fflush(stdout);
+
+
+
+
when switching from “shell”
+ mode to “program”
+ (curses) mode. Those are fairly rare because most programmers
+ have learned not to mix printf and printw.
This release introduces symbol-versioning to ncurses because without it, the change of ABI
+ would be less successful. A lengthy discussion will be presented
+ in Symbol
+ versioning in ncurses. These
+ notes summarize what has changed, and what can be done with the
+ new release.
+
+
Symbol-versioning allows the developers of a library to mark
+ each public symbol (both data and functions) with an identifier
+ denoting the library name and the version for which it was built.
+ By doing this, users of the library have a way to help ensure
+ that applications do not accidentally load an incompatible
+ library. In addition, private symbols can be hidden entirely.
+
+
This release provides sample files for the four principal
+ configurations of ncurses libraries:
+ ncurses, ncursesw,
+ ncursest and ncursestw. Each sample is
+ given in two forms:
+
+
+
+
“.map”
+
+
These list all public symbols, together with version
+ names.
+
+
“.sym”
+
+
These list all public symbols, without version
+ names.
+
+
+
+
The sample files are generated by scripts which take
+ into account a few special cases such as tack to omit
+ many of the ncurses private symbols
+ (beginning with “_nc_”). Here are
+ counts of globals versus locals:
+
+
+
+
+
Config
+
+
Symbols
+
+
Globals
+
+
Locals
+
+
"_nc_"
+
+
+
+
ncurses
+
+
976
+
+
796
+
+
180
+
+
332
+
+
+
+
ncursesw
+
+
1089
+
+
905
+
+
184
+
+
343
+
+
+
+
ncursest
+
+
979
+
+
804
+
+
175
+
+
358
+
+
+
+
ncursestw
+
+
1098
+
+
914
+
+
184
+
+
372
+
+
+
+
+
Although only four sample configurations are presented, each
+ is formed by merging symbols from several combinations of
+ configure-script options, taking into account advice from
+ downstream packagers. Because they are formed by merging, the
+ sample files may list a symbol which is not in a given package.
+ That is expected. The samples have been tested and are working
+ with systems (such as Fedora, FreeBSD and Debian) which fully
+ support this feature. There are other systems which do
+ not support the feature, and a few (such as Solaris)
+ which provide incomplete support.
+
+
The version-naming convention used allows these sample files
+ to build distinct libraries for ABI 5 and 6. Version names
+ consist of
+
+
+
+
configuration name, e.g.,
+ “NCURSESW” for the wide-character
+ libraries
+
+
+
+
ABI version (if not 5)
+
+
+
+
library name for two special cases which have the same
+ interface across configurations:
+ “TINFO” and
+ “TIC”
+
+
+
+
release version
+
+
+
+
patch date (for the release version)
+
+
+
+
For example, running nm -D on the libraries in
+ the ncurses6 test package shows these symbol-versions:
+
+
+
+0000000000000000 A NCURSES6_TIC_5.0.19991023
+0000000000000000 A NCURSES6_TIC_5.1.20000708
+0000000000000000 A NCURSES6_TIC_5.5.20051010
+0000000000000000 A NCURSES6_TIC_5.7.20081102
+0000000000000000 A NCURSES6_TIC_5.9.20150530
+0000000000000000 A NCURSES6_TINFO_5.0.19991023
+0000000000000000 A NCURSES6_TINFO_5.1.20000708
+0000000000000000 A NCURSES6_TINFO_5.2.20001021
+0000000000000000 A NCURSES6_TINFO_5.3.20021019
+0000000000000000 A NCURSES6_TINFO_5.4.20040208
+0000000000000000 A NCURSES6_TINFO_5.5.20051010
+0000000000000000 A NCURSES6_TINFO_5.6.20061217
+0000000000000000 A NCURSES6_TINFO_5.7.20081102
+0000000000000000 A NCURSES6_TINFO_5.8.20110226
+0000000000000000 A NCURSES6_TINFO_5.9.20150530
+0000000000000000 A NCURSESW6_5.1.20000708
+0000000000000000 A NCURSESW6_5.3.20021019
+0000000000000000 A NCURSESW6_5.4.20040208
+0000000000000000 A NCURSESW6_5.5.20051010
+0000000000000000 A NCURSESW6_5.6.20061217
+0000000000000000 A NCURSESW6_5.7.20081102
+0000000000000000 A NCURSESW6_5.8.20110226
+0000000000000000 A NCURSESW6_5.9.20150530
+
+
+
+
As a special case, this release (which makes the final change
+ for ABI 5) is marked with release version 5.9 and patch date
+ 20150530.
The tic(1)/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.
-
-
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 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 V.)
-
-
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 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 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):
+
The new release has several improvements for performance and
+ building. For instance:
+
+
+
+
several files in ncurses- and progs-directories were
+ modified to allow const data used in internal
+ tables to be put by the linker into the readonly text
+ segment.
+
+
+
+
various improvements were made to building the Ada95
+ binding, both in simplifying the generated files as well as
+ improving the way it uses gnatmake
added form library extension
+ O_DYNAMIC_JUSTIFY option which can be used to override
+ the different treatment of justification for static versus
+ dynamic fields .
+
+
+
+
rewrote
+ putwin and
+ getwin, making an extended version which is capable of
+ reading screen-dumps between the wide/normal ncurses configurations. These are text
+ files, except for a magic code at the beginning:
+
+
+
+0 string \210\210 Screen-dump (ncurses)
+
+
+
+
+
+
several changes to mouse support include:
+
+
+
added decoder for xterm SGR 1006 mouse mode.
+
+
added experimental support for
+ “%u” format to terminfo.
+
+
improved behavior of wheel-mice for xterm protocol:
+ noting that there are only button-presses for buttons
+ “4” and “5”, so there is no need to
+ wait to combine events into double-clicks .
+
+
+
+
+
There are a few new configure options dealing with library
+ customization:
+
+
+
+
add “--enable-ext-putwin”
+ configure option to turn on the extended putwin/getwin. By
+ default, this is enabled for ABI 6 and disabled with ABI
+ 5.
+
+
+
+
add “--enable-string-hacks”
+ option to control whether strlcat and strlcpy may be used.
+ Because ncurses already does the
+ requisite buffer-limit checks, this feature is mainly of
+ interest to quiet compiler-warnings on a few systems.
+
+
+
+
add configure option
+ “--with-tparm-arg” to allow
+ tparm's parameters to be something more likely to be the
+ same size as a pointer, e.g., intptr_t (again,
+ the default is set for ABI 6).
Most of the termcap-related changes based on development of
+ tctest
+ (termcap library checker) are implemented in the tic and
+ infocmp programs rather than affecting the library. As noted in
+ the
+ discussion of tctest, ncurses's ability to translate between terminfo
+ and termcap formats has been improved at different times, but
+ subject to feedback from "real" termcap users. There are very few
+ of those. Nowadays, virtually all termcap users are
+ using ncurses (or NetBSD, with its
+ own terminfo library) and their programs are actually using
+ terminfo rather than termcap data.
+
+
Still, there are a few. A comment about the translation of the
+ ASCII NUL character prompted a review:
+
+
+
+
Both terminfo and termcap store string capabilities as
+ NUL-terminated strings.
+
+
+
+
In terminfo, a \0 in a terminal description
+ is stored as \200.
+
+
+
+
There are no (known) terminals which would behave
+ differently when sent \0 or
+ \200.
+
+
+
+
When translating to terminfo format (or displaying a
+ printable version of an entry using infocmp), ncurses shows \200 as
+ \0.
+
+
+
+
It has done this since 1998 (quoting from the NEWS
+ file):
+
+
+
+980103
+...
+ + modify _nc_tic_expand() to generate \0 rather than \200.
+...
+ + correct translation of terminfo "^@", to \200, like \0.
+
+
+
+
+
+
However, the _nc_tic_expand function (which
+ optionally produces terminfo or termcap format) did not
+ address this special case for termcap. Even the later 4.4BSD
+
+ cgetstr interprets a \0 literally, ending
+ that string (rather than using the terminfo
+ improvement).
+
+
+
+
As a result of the review, several improvements were made to
+ ncurses translation to/from termcap
+ format — and improving the checks made in tic for
+ consistency of entries. Most of these are not of general
+ interest, except for two new command-line options for tic and
+ infocmp:
+
+
+
+
the “-0” option generates
+ termcap/terminfo source on a single line.
+
+
+
+
the “-K” option provides stricter
+ BSD-compatibility for termcap output.
+
+
+
+
Other user-visible improvements and new features include:
+
+
+
+
added “-D” option to tic and
+ infocmp, to show the database locations that it could
+ use.
+
+
+
+
added “-s” option to toe, to sort
+ its output.
+
+
+
+
extended “-c” and
+ “-n” options of infocmp to allow
+ comparing more than two entries.
+
+
+
+
modified toe's report when “-a”
+ and “-s” options are combined, to
+ add a column showing which entries belong to a given
+ database.
+
+
+
+
modified the clear program to take into account the
+ “E3” extended capability to clear
+ the terminal's scrollback buffer.
Along with the library and utilities, many improvements were
+ made to the ncurses-examples.
+ Some were made to allow building (and comparison-testing) against
+ NetBSD curses and PDCurses. Both lack some of the X/Open Curses
+ features, necessitating customization. But this activity was
+ useful because it showed some remaining performance issues (which
+ have been resolved in this release).
+
+
These changes were made to verify compatibility or compare
+ performance of ncurses:
+
+
+
+
made workarounds for compiling test-programs with NetBSD
+ curses, though it lacks some common functions such as
+
+ use_env.
+
+
+
+
added dots_termcap test-program
+
+
+
+
added dots_curses test-program, for comparison with the
+ low-level examples.
+
+
+
+
added test_setupterm test-proram to demonstrate
+ normal/error returns from the setupterm and restartterm
+ functions.
+
+
+
+
added “-d”,
+ “-e” and
+ “-q” options to the demo_terminfo
+ and demo_termcap test-programs.
+
+
+
+
added “-y” option to demo_termcap
+ and test/demo_terminfo test-programs to demonstrate behavior
+ with/without extended capabilities.
+
+
+
+
modified demo_termcap and demo_terminfo test-programs to
+ make their options more directly comparable, and add
+ “-i” option to specify a terminal
+ description filename to parse for names to lookup.
+
+
+
+
rewrote the tests for
+ mvderwin and test for recursive
+ mvwin in the movewindow test-program.
+
+
+
+
These changes were made to help with the MinGW port:
+
+
+
+
added test-screens to the ncurses test-program to show
+ 256-characters at a time, to help with MinGW port.
+
+
+
+
modified the view test-program to load UTF-8 when built
+ with MinGW by using regular win32 API because the MinGW
+ functions mblen and mbtowc do not work.
+
+
+
+
added “-s” option to the view
+ test-program to allow it to start in single-step mode,
+ reducing size of trace files when it is used for debugging
+ MinGW changes.
+
+
+
+
These changes were made to verify new extensions in ncurses:
+
+
+
+
added
+ form_driver_w entrypoint to wide-character forms library,
+ as well as form_driver_w test-program.
+
+
+
+
modified ncurses test-program's b/B tests to display lines
+ only for the attributes which a given terminal supports, to
+ make room for an italics test.
+
+
+
+
modified ncurses test-program, adding
+ “-E” and
+ “-T” options to demonstrate use_env
+ versus use_tioctl.
+
+
+
+
modified ncurses test-program's c/C tests to cycle through
+ subsets of the total number of colors, to better illustrate
+ 8/16/88/256-colors by providing directly comparable
+ screens.
+
+
+
+
modified the ncurses test-program to also show position
+ reports in 'a' test.
+
+
+
+
These changes were made to make the examples more useful:
+
+
+
+
added scripts for building dpkg and rpm test-packages
+
+
+
+
modified the hanoi test-program to show the minimum number
+ of moves possible for the given number of tiles.
+
+
+
+
modified the knight test-program to show the number of
+ choices possible for each position in automove option, e.g.,
+ to allow user to follow Warnsdorff's rule to solve the
+ puzzle.
A few entries use extensions (user-defined terminal
+ capabilities):
+
+
+
+
E3, used in linux, putty and xterm-basic is
+ tested in the clear
+ program to erase a terminal's scrollback.
+
+
+
+
TS is used in the
+ xterm+sl building block to help deprecate the misuse of
+ tsl for xterm's title-string.
+
+
+
+
XT is used in some terminfo entries to
+ improve usefulness for other applications than screen, which
+ would like to pretend that xterm's title is a
+ status-line.
+
+
+
+
xm is used in examples
+ xterm-1005 and
+ xterm-1006 to illustrate a way to make mouse handling
+ more general
+
+
+
+
A few terminals support italics and/or dim capabilities. In
+ particular, screen does not. Documented that, and accommodated
+ the terminals where this feature works with the
+ A_ITALIC extension.
modify makefile rules to ensure that the PIC option is
+ not used when building a static library
+
+
+
+
make Ada95 build-fix for big-endian architectures such
+ as sparc. This undoes one of the fixes from
+ 20110319, which added an
+ “Unused” member to
+ representation clauses, replacing that with pragmas to
+ suppress warnings about unused bits.
+
+
+
+
+
+
Color and attributes:
+
+
+
+
parenthesize parameter of COLOR_PAIR and
+ PAIR_NUMBER in curses.h in case it happens
+ to be a comma-expression.
+
+
+
+
improve
+ 20021221 workaround for broken acs, handling a case
+ where that ACS_xxx character is not in the
+ acsc string but there is a known
+ wide-character which can be used.
add a check in
+ start_color to limit color-pairs to 256 when extended
+ colors are not supported.
+
+
+
+
+
+
Resizing the screen:
+
+
+
+
propagate error-returns from wresize, i.e., the
+ internal increase_size and decrease_size functions
+ through
+ resize_term.
+
+
+
+
add check for zero/negative dimensions for
+ resizeterm and resize_term.
+
+
+
+
modify resizeterm to always push a
+ KEY_RESIZE onto the fifo, even if screensize
+ is unchanged. Modify library to push a
+ KEY_RESIZE if there was a SIGWINCH, even if
+ it does not call resizeterm). These changes
+ eliminate the case where a SIGWINCH is received, but ERR
+ is returned from wgetch or
+ wgetnstr because the screen dimensions did
+ not change.
+
+
+
+
+
+
Low-level interfaces
+
+
+
+
fix an old bug in the termcap emulation;
+ “%i” was ignored in
+ tparm because the parameters to be
+ incremented were already on the internal stack.
+
+
+
+
change “%l” behavior in tparm
+ to push the string length onto the stack rather than
+ saving the formatted length into the output buffer.
+
+
+
+
modify name-comparison for tgetstr, etc., to
+ accommodate legacy applications as well as to improve
+ compatbility with BSD 4.2 termcap implementations (see
+ note for 980725).
+
+
+
+
+
High-level interfaces
+
+
+
+
modify internal recursion in wgetch which
+ handles cooked mode to check if the call to
+ wgetnstr returned an error. This can happen
+ when both nocbreak and nodelay
+ are set, for instance (see note for 960418).
+
+
+
+
add a check in internal function
+ waddch_nosync to ensure that tab characters
+ are treated as control characters; some broken locales
+ claim they are printable.
+
+
+
+
modify menu library to ensure that a menu's top-row is
+ adjusted as needed to ensure that the current item is on
+ the screen
+
+
+
+
fix special case where double-width character
+ overwrites a single- width character in the first
+ column.
The ncurses 6.0 configure script
+ makes changes to the default value of several configure
+ options, depending on the --with-abi-version option
+ (i.e., whether its value is “5” or
+ “6”):
-
cdk
+
--enable-const
+
+
+
Feature introduced in 970405
+ supports the use of const where X/Open Curses
+ should have, but did not. NetBSD curses does something
+ similar with const.
Extends the cchar_t structure to allow more
+ than 16 colors to be encoded. This applies only to the
+ wide-character (--enable-widec)
+ configuration.
Modifies the encoding of mouse state to make room for a
+ 5th mouse button. That allows one to use ncurses with a wheel
+ mouse with xterm or similar X terminal emulators.
+
-
dialog
+
--enable-ext-putwin
+
+
+
Modifies the file-format written by putwin to
+ use printable text rather than binary files, allowing
+ getwin to read screen dumps written by
+ differently-configured ncurses libraries. The extended
+ getwin can still read binary screen dumps from
+ the same configuration of ncurses. This does not
+ change the ABI (the binary interface seen by calling
+ applications).
+
-
the underlying application used in Slackware's setup, and
- the basis for similar applications on GNU/Linux.
- http://invisible-island.net/dialog/
+
--enable-interop
-
lynx
+
+
Modifies the FIELDTYPE structure used for the
+ form library to make it more generic.
Allows an application to define _LP64 to
+ declare chtype and mmask_t as
+ simply “unsigned” rather than the
+ configured types using the --with-chtype and
+ --with-mmask_t options.
Compile-in support for extended functions which accept a
+ SCREEN pointer, reducing the need for juggling the global SP
+ value with
+ set_term and
+ delscreen.
X/Open Curses declares
+ tparm using long for each of the parameters
+ aside from the formatting string, presuming that
+ long and char* are the same size.
+ This configure option uses intptr_t which
+ provides a better guarantee of the sizes.
+
-
pinfo
+
The configure script no longer checks for antique compilers;
+ c89 is assumed as a minimum. There are a few
+ features from later revisions which are used when available. The
+ configure script makes checks to turn on useful warnings from
+ clang, gcc and icc. You should be able to build ncurses 6.0 with any of the current (or not so
+ current) C compilers available in 2015.
+
+
The configure script, by the way, makes changes which do not
+ work with systems whose /bin/sh is non-POSIX. This
+ mainly affects Solaris (the other vendor unix systems have followed the POSIX guidelines
+ for the past twenty years). If you must build on Solaris, its
+ xpg4
+ binaries suffice, e.g.,
ABI 6 is now the default, intending that the existing ABI
+ 5 should build as before using the
+ “--with-abi-version=5” option.
+
+
+
+
added --with-extra-suffix option to help with
+ installing nonconflicting ncurses6 packages, e.g., avoiding
+ header- and library-conflicts.
+
+
NOTE: as a side-effect, this renames
+
+
+
adacurses-config to
+ adacurses5-config and
+ adacursesw-config to
+ adacursesw5-config
+
+
+
+
+
the configure script looks for gnatgcc if the Ada95
+ binding is built, in preference to the default gcc/cc. The
+ script also ensures that the Ada95 binding is built with the
+ level of optimization as the C libraries.
+
+
+
+
the configure script captures define's related to
+ -D_XOPEN_SOURCE from the configure check and adds those to
+ the *-config and *.pc files, to simplify use for the
+ wide-character libraries.
Do not install the terminal database. This is used to omit
+ features for packages, as done with
+ --without-progs. The option simplifies building
+ cross-compile support packages.
Suppress the “w”, “t” or
+ “tw” suffixes which normally would be added to
+ the library names for the --enable-widec and
+ --with-pthread options.
+
+
+
--with-cxx-shared
+
+
+
When --with-shared is set, build libncurses++
+ as a shared library. This implicitly relies upon building
+ with gcc/g++, since other compiler suites may have
+ differences in the way shared libraries are built. libtool by
+ the way has similar limitations.
+
+
+
--with-hashed-db
+
+
+
Extended this configure option to simplify building with
+ different versions of Berkeley database using FreeBSD
+ ports.
+
+
+
--with-pc-suffix
+
+
+
If ".pc" files are installed, optionally add a suffix to
+ the files and corresponding package names to separate unusual
+ configurations. If no option value is given (or if it is
+ "none"), no suffix is added. This option is used in the test
+ package for ncurses6.
+
+
+
--with-xterm-kbs
+
+
+
Configure xterm's terminfo entries to use either BS
+ (^H, i.e., ASCII backspace) or DEL
+ (^?, or 127).
+
-
The ncurses distribution includes a selection of test programs
- (including a few games).
the driver handles repainting on endwin/refresh
+ combination.
+
+
+
+
modified treatment of TERM variable for MinGW
+ port to allow explicit use of the Windows console driver by
+ checking if $TERM is set to
+ “#win32console” or an abbreviation
+ of that.
+
+
+
+
the Windows driver also matches the special
+ TERM value “unknown”
+
+
+
+
the driver now returns characters for special keys, (like
+ ansi.sys does), when keypad mode is off, rather
+ than returning nothing at all.
+
+
+
+
the driver checks a new environment variable
+ NCURSES_CONSOLE2 to optionally work around a deficiency
+ in Console2 (and its descendent
+ ConsoleZ) which hang when an application creates
+ a console buffer.
+
+
+
+
Finally, there are other improvements:
+
+
+
+
MinGW is one of the configurations where ncurses installs by default into /usr
+
+
+
configuration for cross-compiling uses AC_CHECK_TOOLS in
+ preference to AC_PATH_PROGS when searching for ncurses*-config,
+ e.g., in Ada95/configure and test/configure.
+
+
+
extend Windows support to work with MSYS2;
+
+
+
+
this works with a scenario where there is an
+ ANSI-escape handler such as ansicon running
+ in the console window.
+
+
+
wrap isatty calls with a macro, provide a
+ corresponding set of support routines to address
+ differences between MinGW and MSYS2.
+
+
+
+
+
ensure WINVER is defined in makefiles rather
+ than using headers.
+
+
+
+
add check for the gnatprep
+ “-T” option.
+
+
+
+
work around a bug introduced by
+ gcc 4.8.1 in MinGW which breaks "trace" feature.
the configure script knows how to build shared libraries
+ with DragonFlyBSD and Interix.
+
+
+
+
support for AIX shared libraries is improved, tested with
+ AIX 5.3, 6.1 and 7.1 with both gcc 4.2.4 and cc:
+
+
+
+
the shared-library suffix for AIX 5 and 6 is now
+ ".so"
+
+
+
+
the -brtl option is used with AIX 5-7; it
+ is needed to link with the shared libraries.
+
+
+
+
+
+
the configure --enable-pc-files option takes
+ into account the PKG_CONFIG_PATH
+ variable.
+
+
+
+
the configure option --with-pkg-config-libdir
+ provides control over the actual directory into which
+ pc-files are installed.
+
+
+
+
the build scripts add explicit -ltinfo, etc., to the
+ generated ".pc" file when ld option
+ “--as-needed” is used, or when
+ ncurses and tinfo are installed without using rpath.
+
+
+
+
the configure script disallows conflicting options
+ “--with-termlib” and
+ “--enable-term-driver”.
+
+
+
+
the check for missing c++ compiler to work when no error
+ is reported, and no variables set is improved (see note for
+ 20021206).
+
+
+
+
the misc/gen_edit.sh script selects a "linux" entry which
+ works with the current kernel rather than assuming it is
+ always "linux3.0"
+
+
+
+
the test/configure script makes it simpler to override
+ names of curses-related libraries, to help with linking with
+ pdcurses in MinGW environment.
+
+
+
+
the configure-script/ifdef's allow the BSD OLD_TTY feature
+ to be suppressed if the type of ospeed is
+ configured using the option --with-ospeed to not
+ be a short. By default, it is a
+ short for termcap-compatibility.
+
+
+
+
the MKlib_gen.sh script works around a recent change in
+ gcc 5 (released mid-2015) which essentially
+ emits multiple #line statements for the same
+ position in a file.
+
+
+
+
the configure script works with Minix3.2 (see note
+ on portability)
+
+
+
+
OS/2 redux:
+
+
+
+
the configure script supports OS/2 kLIBC.
+
+
+
+
the --with-lib-prefix option allows
+ configuring for old/new flavors of OS/2 EMX.
+
+
+
+
+
+
improved configure-script checks for
+ _XOPEN_SOURCE:
+
+
+
+
the definition works starting with Solaris 10.
+
+
+
+
the definition is suppressed for IRIX64, since its
+ header files have a conflict versus
+ _SGI_SOURCE.
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 all of the
+ for SVr4 curses features including keyboard mapping, color,
+ forms-drawing with ACS characters, and automatic recognition
+ of keypad and function keys.
+
+
+
+
ncurses provides these SVr4
+ add-on libraries (not part of X/Open Curses):
+
+
+
+
the panels library, supporting a stack of windows with
+ backing store.
+
+
+
+
the menus 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 which 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, and most 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
+ FreeBSD and OS/2 console windows.
+
+
+
+
Extended mouse support via Alessandro Rubini's gpm
+ package.
+
+
+
+
The function wresize allows you to resize
+ windows, preserving their data.
+
+
+
+
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 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 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 must run in single-user
+ mode).
+
+
+
+
The tic/captoinfo
+ utility provided with ncurses has
+ the ability to translate many termcaps from the XENIX, IBM
+ and AT&T extension sets.
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 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 V.)
+
+
+
+
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 user's $HOME/.terminfo directory.
+
+
+
+
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.
Zeyd Ben-Halim started ncurses
+ from a previous package pcurses, written by Pavel Curtis. Eric S.
Raymond continued development. Jürgen Pfeifer wrote most of
- the form and menu libraries. Ongoing work is being done by
+ the form and menu libraries. Ongoing development work is done by
Thomas Dickey.
- Thomas Dickey acts as the maintainer for the Free Software
- Foundation, which holds the copyright on ncurses. 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>
-
+ Thomas Dickey also acts as the maintainer for the Free Software
+ Foundation, which holds the copyright
+ on ncurses.
+
+
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, and provides several
- user-definable extensions beyond the X/Open specification.
+ user-definable extensions beyond the X/Open specification.
You can find lots of information on terminal-related topics
not covered in the terminfo file at
Richard Shuford's archive .
Once a form has been posted (displayed), you should funnel
input events to it through form_driver. This routine has
three major input cases:
@@ -65,7 +69,7 @@
o The input is a form navigation request. Navigation
request codes are constants defined in <form.h>, which
are distinct from the key- and character codes
- returned by wgetch.
+ returned by wgetch(3x).
o The input is a printable character. Printable charac-
ters (which must be positive, less than 256) are
@@ -74,197 +78,95 @@
o The input is the KEY_MOUSE special key associated with
an mouse event.
- The form driver requests are as follows:
-
- REQ_NEXT_PAGE
- Move to the next page.
-
- REQ_PREV_PAGE
- Move to the previous page.
-
- REQ_FIRST_PAGE
- Move to the first page.
-
- REQ_LAST_PAGE
- Move to the last field.
-
-
- REQ_NEXT_FIELD
- Move to the next field.
-
- REQ_PREV_FIELD
- Move to the previous field.
-
- REQ_FIRST_FIELD
- Move to the first field.
-
- REQ_LAST_FIELD
- Move to the last field.
-
- REQ_SNEXT_FIELD
- Move to the sorted next field.
-
- REQ_SPREV_FIELD
- Move to the sorted previous field.
-
- REQ_SFIRST_FIELD
- Move to the sorted first field.
-
- REQ_SLAST_FIELD
- Move to the sorted last field.
-
- REQ_LEFT_FIELD
- Move left to a field.
-
- REQ_RIGHT_FIELD
- Move right to a field.
-
- REQ_UP_FIELD
- Move up to a field.
-
- REQ_DOWN_FIELD
- Move down to a field.
-
-
- REQ_NEXT_CHAR
- Move to the next char.
-
- REQ_PREV_CHAR
- Move to the previous char.
-
- REQ_NEXT_LINE
- Move to the next line.
-
- REQ_PREV_LINE
- Move to the previous line.
-
- REQ_NEXT_WORD
- Move to the next word.
-
- REQ_PREV_WORD
- Move to the previous word.
-
- REQ_BEG_FIELD
- Move to the beginning of the field.
-
- REQ_END_FIELD
- Move to the end of the field.
-
- REQ_BEG_LINE
- Move to the beginning of the line.
-
- REQ_END_LINE
- Move to the end of the line.
-
- REQ_LEFT_CHAR
- Move left in the field.
-
- REQ_RIGHT_CHAR
- Move right in the field.
- REQ_UP_CHAR
- Move up in the field.
-
- REQ_DOWN_CHAR
- Move down in the field.
-
-
- REQ_NEW_LINE
- Insert or overlay a new line.
-
- REQ_INS_CHAR
- Insert a blank at the cursor.
-
- REQ_INS_LINE
- Insert a blank line at the cursor.
-
- REQ_DEL_CHAR
- Delete character at the cursor.
-
- REQ_DEL_PREV
- Delete character before the cursor.
-
- REQ_DEL_LINE
- Delete line at the cursor.
-
- REQ_DEL_WORD
- Delete blank-delimited word at the cursor.
-
- REQ_CLR_EOL
- Clear to end of line from cursor.
-
- REQ_CLR_EOF
- Clear to end of field from cursor.
-
- REQ_CLR_FIELD
- Clear the entire field.
-
- REQ_OVL_MODE
- Enter overlay mode.
-
- REQ_INS_MODE
- Enter insert mode.
-
-
- REQ_SCR_FLINE
- Scroll the field forward a line.
-
- REQ_SCR_BLINE
- Scroll the field backward a line.
-
- REQ_SCR_FPAGE
- Scroll the field forward a page.
-
- REQ_SCR_BPAGE
- Scroll the field backward a page.
-
- REQ_SCR_FHPAGE
- Scroll the field forward half a page.
-
- REQ_SCR_BHPAGE
- Scroll the field backward half a page.
-
-
- REQ_SCR_FCHAR
- Scroll the field forward a character.
-
- REQ_SCR_BCHAR
- Scroll the field backward a character.
-
- REQ_SCR_HFLINE
- Horizontal scroll the field forward a line.
-
- REQ_SCR_HBLINE
- Horizontal scroll the field backward a line.
-
- REQ_SCR_HFHALF
- Horizontal scroll the field forward half a line.
-
- REQ_SCR_HBHALF
- Horizontal scroll the field backward half a line.
-
-
- REQ_VALIDATION
- Validate field.
+
+ This extension simplifies the use of the forms library
+ using wide characters. The input is either a key code (a
+ request) or a wide character returned by get_wch(3x). The
+ type must be passed as well, to enable the library to
+ determine whether the parameter is a wide character or a
+ request.
- REQ_NEXT_CHOICE
- Display next field choice.
- REQ_PREV_CHOICE
- Display previous field choice.
+
+ The form driver requests are as follows:
- If the second argument is a printable character, the
- driver places it in the current position in the current
- field. If it is one of the forms requests listed above,
+ NameDescription
+ -------------------------------------------------------------------------
+ REQ_BEG_FIELD Move to the beginning of the field.
+ REQ_BEG_LINE Move to the beginning of the line.
+ REQ_CLR_EOF Clear to end of field from cursor.
+ REQ_CLR_EOL Clear to end of line from cursor.
+ REQ_CLR_FIELD Clear the entire field.
+ REQ_DEL_CHAR Delete character at the cursor.
+ REQ_DEL_LINE Delete line at the cursor.
+ REQ_DEL_PREV Delete character before the cursor.
+ REQ_DEL_WORD Delete blank-delimited word at the cursor.
+ REQ_DOWN_CHAR Move down in the field.
+ REQ_DOWN_FIELD Move down to a field.
+ REQ_END_FIELD Move to the end of the field.
+ REQ_END_LINE Move to the end of the line.
+ REQ_FIRST_FIELD Move to the first field.
+ REQ_FIRST_PAGE Move to the first page.
+ REQ_INS_CHAR Insert a blank at the cursor.
+ REQ_INS_LINE Insert a blank line at the cursor.
+ REQ_INS_MODE Enter insert mode.
+ REQ_LAST_FIELD Move to the last field.
+ REQ_LAST_PAGE Move to the last field.
+ REQ_LEFT_CHAR Move left in the field.
+ REQ_LEFT_FIELD Move left to a field.
+
+ REQ_NEW_LINE Insert or overlay a new line.
+ REQ_NEXT_CHAR Move to the next char.
+ REQ_NEXT_CHOICE Display next field choice.
+ REQ_NEXT_FIELD Move to the next field.
+ REQ_NEXT_LINE Move to the next line.
+ REQ_NEXT_PAGE Move to the next page.
+ REQ_NEXT_PAGE Move to the next page.
+ REQ_NEXT_WORD Move to the next word.
+ REQ_OVL_MODE Enter overlay mode.
+ REQ_PREV_CHAR Move to the previous char.
+ REQ_PREV_CHOICE Display previous field choice.
+ REQ_PREV_FIELD Move to the previous field.
+ REQ_PREV_LINE Move to the previous line.
+ REQ_PREV_PAGE Move to the previous page.
+ REQ_PREV_WORD Move to the previous word.
+ REQ_RIGHT_CHAR Move right in the field.
+ REQ_RIGHT_FIELD Move right to a field.
+ REQ_SCR_BCHAR Scroll the field backward a character.
+ REQ_SCR_BHPAGE Scroll the field backward half a page.
+ REQ_SCR_BLINE Scroll the field backward a line.
+ REQ_SCR_BPAGE Scroll the field backward a page.
+ REQ_SCR_FCHAR Scroll the field forward a character.
+ REQ_SCR_FHPAGE Scroll the field forward half a page.
+ REQ_SCR_FLINE Scroll the field forward a line.
+ REQ_SCR_FPAGE Scroll the field forward a page.
+ REQ_SCR_HBHALF Horizontal scroll the field backward half a line.
+ REQ_SCR_HBLINE Horizontal scroll the field backward a line.
+ REQ_SCR_HFHALF Horizontal scroll the field forward half a line.
+ REQ_SCR_HFLINE Horizontal scroll the field forward a line.
+ REQ_SFIRST_FIELD Move to the sorted first field.
+ REQ_SLAST_FIELD Move to the sorted last field.
+ REQ_SNEXT_FIELD Move to the sorted next field.
+ REQ_SPREV_FIELD Move to the sorted previous field.
+ REQ_UP_CHAR Move up in the field.
+ REQ_UP_FIELD Move up to a field.
+ REQ_VALIDATION Validate field.
+
+ If the second argument is a printable character, the
+ driver places it in the current position in the current
+ field. If it is one of the forms requests listed above,
that request is executed.
+ If the second argument is the KEY_MOUSE special key, the
associated mouse event is translated into one of the above
- pre-defined requests. Currently only clicks in the user
- window (e.g., inside the form display area or the decora-
+ pre-defined requests. Currently only clicks in the user
+ window (e.g., inside the form display area or the decora-
tion window) are handled.
If you click above the display region of the form:
@@ -283,34 +185,34 @@
a REQ_LAST_FIELD is generated for a triple-click.
- If you click at an field inside the display area of the
+ If you click at an field inside the display area of the
form:
o the form cursor is positioned to that field.
- o If you double-click a field, the form cursor is
- positioned to that field and E_UNKNOWN_COMMAND is
+ o If you double-click a field, the form cursor is
+ positioned to that field and E_UNKNOWN_COMMAND is
returned. This return value makes sense, because a
- double click usually means that an field-specific
- action should be returned. It is exactly the pur-
- pose of this return value to signal that an appli-
+ double click usually means that an field-specific
+ action should be returned. It is exactly the pur-
+ pose of this return value to signal that an appli-
cation specific command should be executed.
- o If a translation into a request was done,
+ o If a translation into a request was done,
form_driver returns the result of this request.
- If you clicked outside the user window or the mouse event
- could not be translated into a form request an
+ If you clicked outside the user window or the mouse event
+ could not be translated into a form request an
E_REQUEST_DENIED is returned.
If the second argument is neither printable nor one of the
- above pre-defined form requests, the driver assumes it is
+ above pre-defined form requests, the driver assumes it is
an application-specific command and returns E_UNKNOWN_COM-MAND. Application-defined commands should be defined rel-
- ative to MAX_COMMAND, the maximum value of these pre-
+ ative to MAX_COMMAND, the maximum value of these pre-
defined requests.
@@ -321,7 +223,7 @@
E_OK The routine succeeded.
E_BAD_ARGUMENT
- Routine detected an incorrect or out-of-range argu-
+ Routine detected an incorrect or out-of-range argu-
ment.
E_BAD_STATE
@@ -357,13 +259,13 @@
- These routines emulate the System V forms library. They
+ These routines emulate the System V forms library. They
were not supported on Version 7 or BSD versions.
- Juergen Pfeifer. Manual pages and adaptation for new
+ Juergen Pfeifer. Manual pages and adaptation for new
curses by Eric S. Raymond.
@@ -376,8 +278,11 @@
tset(1), infocmp(1m), curses(3x), terminfo(5).
- This describes ncurses version 6.0 (patch 20150725).
+ This describes ncurses version 6.0 (patch 20150808).
diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
index b9e1d1d1..cf70f7ff 100644
--- a/doc/html/man/terminfo.5.html
+++ b/doc/html/man/terminfo.5.html
@@ -78,7 +78,7 @@
nals by giving a set of capabilities which they have, by
specifying how to perform screen operations, and by speci-
fying padding requirements and initialization sequences.
- This describes ncurses version 6.0 (patch 20150725).
+ This describes ncurses version 6.0 (patch 20150808).
Entries in terminfo consist of a sequence of `,' separated
fields (embedded commas may be escaped with a backslash or
diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
index d2448c3c..f287c1ea 100644
--- a/doc/html/man/tic.1m.html
+++ b/doc/html/man/tic.1m.html
@@ -395,7 +395,7 @@
infocmp(1m), captoinfo(1m), infotocap(1m), toe(1m),
curses(3x), term(5). terminfo(5).
- This describes ncurses version 6.0 (patch 20150725).
+ This describes ncurses version 6.0 (patch 20150808).
diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
index aea786cb..98799b71 100644
--- a/doc/html/man/toe.1m.html
+++ b/doc/html/man/toe.1m.html
@@ -119,7 +119,7 @@
tic(1m), infocmp(1m), captoinfo(1m), infotocap(1m),
curses(3x), terminfo(5).
- This describes ncurses version 6.0 (patch 20150725).
+ This describes ncurses version 6.0 (patch 20150808).
diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
index 8fcc32cc..c04f53d8 100644
--- a/doc/html/man/tput.1.html
+++ b/doc/html/man/tput.1.html
@@ -338,7 +338,7 @@