+ * [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
+
+ [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 <<EOF/
+ ** `date`
+ ** node: $WHAT
+ ** user: `id`
+ ** conf: $*
+ EOF/
+
+ SHELL=/bin/sh
+ if test -f /usr/xpg4/bin/sh
+ then
+ CONFIG_SHELL=/usr/xpg4/bin/sh
+ export CONFIG_SHELL
+ SHELL=$CONFIG_SHELL
+ fi
+
+ rm -f config.status config.cache
+ TOP=$HOME/$WHAT
+ $SHELL ./configure --verbose \
+ --disable-echo \
+ --disable-overwrite \
+ --enable-warnings \
+ --with-warnings \
+ --prefix=$TOP $* 2>&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.
+