From: Thomas E. Dickey Date: Sun, 9 Aug 2015 00:19:07 +0000 (+0000) Subject: ncurses 6.0 - patch 20150808 X-Git-Tag: v6.0~1 X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=commitdiff_plain;h=02f02dcd4464143580e783ae32c822d8eb8cdcbf;ds=sidebyside 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. --- 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.

+

Overview

+ +

The ncurses (new curses) library + is a free software emulation of curses in System V Release 4.0 + (SVr4), and more. It uses terminfo format, supports pads and + color and multiple highlights and forms characters and + function-key mapping, and has all the other SVr4-curses + enhancements over BSD curses. SVr4 curses 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

+ +
    +
  • captoinfo, + a termcap conversion tool
  • + +
  • clear, + utility for clearing the screen
  • + +
  • infocmp, + the terminfo decompiler
  • + +
  • tabs, + set tabs on a terminal
  • + +
  • tic, + the terminfo compiler
  • + +
  • toe, + list (table of) terminfo entries
  • + +
  • tput, + utility for retrieving terminal capabilities in shell + scripts
  • + +
  • tset, + to initialize the terminal
  • +
+ +

Full manual pages are provided for the library and tools.

+ +

The ncurses distribution is + available via anonymous FTP at the GNU distribution site

+ +
+

ftp://ftp.gnu.org/gnu/ncurses/ .

+
It is also available at + +
+

ftp://invisible-island.net/ncurses/ .

+
+ +

Release + Notes

+ +

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.

    + +

    The termcap + library checker (tctest) (not part of ncurses) was one result. A followup review + of performance using 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 + + 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.

    +
  • +
+ +

Library + improvements

+ +

Output + buffering

+ +

X/Open curses provides more than one initialization + function:

+ +
    +
  • + initscr (the simplest) accepts no parameters.
  • + +
  • + 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.

+ +

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 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:

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConfigSymbolsGlobalsLocals"_nc_"
ncurses976796180332
ncursesw1089905184343
ncursest979804175358
ncursestw1098914184372
+
+ +

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 + use_tioctl function
  • + +
  • +

    added + wgetdelay to retrieve _delay member of WINDOW if it + happens to be opaque, e.g., in the pthread configuration.

    +
  • + +
  • +

    added + A_ITALIC extension.

    +
  • + +
  • +

    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).

    +
  • +
+ +

Program + improvements

+ +

Utilities

+ +

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.

    +
  • +
+ +

Examples

+ +

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.

    +
  • +
+ +

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:

+ + + +

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.

+ +
    +
  • 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 NEWS file + but treated sketchily in manual pages.

    +
  • +
+ +

In addition, the mechanism for producing HTML versions of the + documentation has been improved:

+ + + +

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 + 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.

      +
    • + +
    • +

      modify + init_pair to accept -1's for color value after + + assume_default_colors has been called.

      +
    • + +
    • +

      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.

      +
    • +
    +
  • +
+ +

Configuration changes

+ +

Major + changes

-

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/ .
+

--with-chtype=uint32_t
- It is also available at ftp://invisible-island.net/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.,

+ +
+ + +

+ #!/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:

    -
  • 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.

    +
-

Features of Ncurses

+

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
-

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).

+
+
+ +

Portability

+ +

MinGW

+ +

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.

    +
  • + +
  • +

    implemented some display features: beep, + flash, + + curs_set.

    +
  • -
  • 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.)
  • +

    Other + ports

    -
  • 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.

      +
    • -
      Curses Development Kit
      - http://invisible-island.net/cdk/
      +
    • +

      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.

        +
      • +
      +
    • - http://www.vexus.ca/products/CDK/
      +
    • +

      the configure --enable-pc-files option takes + into account the PKG_CONFIG_PATH + variable.

      +
    • -
      ded
      +
    • +

      the configure option --with-pkg-config-libdir + provides control over the actual directory into which + pc-files are installed.

      +
    • -
      directory-editor
      - http://invisible-island.net/ded/
      +
    • +

      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 character-screen WWW browser
      - http://lynx.isc.org/release/
      +
    • +

      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.

      +
    • -
      file manager
      - http://www.midnight-commander.org/
      +
    • +

      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)

      +
    • + +
    • +

      OS/2 redux:

      -
      mail utility
      - http://www.mutt.org/
      +
        +
      • +

        the configure script supports OS/2 kLIBC.

        +
      • -
        ncftp
        +
      • +

        the --with-lib-prefix option allows + configuring for old/new flavors of OS/2 EMX.

        +
      • +
      +
    • -
      file-transfer utility
      - http://www.ncftp.com/
      +
    • +

      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.

        +
      • +
      +
    • +
    +
    -
    nvi
    +

    Features of ncurses

    -
    New vi versions 1.50 are able to use ncurses versions 1.9.7 - and later.
    - https://sites.google.com/a/bostic.com/keithbostic/nvi
    -
    +

    The ncurses package is fully + upward-compatible with SVr4 (System V Release 4) curses:

    -
    pinfo
    +
      +
    • +

      All of the SVr4 calls have been implemented (and are + documented).

      +
    • -
      Lynx-like info browser. https://alioth.debian.org/projects/pinfo/
      +
    • +

      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.

        +
      • +
      +
    • -
      newsreader, supporting color, MIME http://www.tin.org/
      -
    +
  • +

    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:

    -
    terminal emulator
    - http://alioth.debian.org/projects/minicom/
    +
      +
    • +

      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.

      +
    • + +
    • +

      A BSD-like tset + utility is provided.

      +
    • + +
    • +

      The ncurses library and + utilities will automatically read terminfo entries from + $HOME/.terminfo if it exists, and compile to that directory + if it exists and the user has no write access to the system + directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the + system 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.

      +
    • + +
    • +

      Extensive documentation is provided (see the + Additional Reading section of the + ncurses FAQ for online documentation).

      +
    • +
    + +

    Applications using + ncurses

    + +

    The ncurses distribution includes + a selection of test programs (including a few games). These are + available separately as ncurses-examples

    + +

    The ncurses library has been tested with a wide variety of + applications including:

    + +
    +
    +
    cdk
    + +
    +

    Curses Development Kit

    + +

    http://invisible-island.net/cdk/
    +

    +
    + +
    ded
    + +
    +

    directory-editor

    + +

    http://invisible-island.net/ded/

    +
    + +
    dialog
    + +
    +

    the underlying application used in Slackware's setup, + and the basis for similar install/configure applications on + many systems.

    + +

    http://invisible-island.net/dialog/

    +
    + +
    lynx
    + +
    +

    the text WWW browser

    + +

    http://lynx.isc.org/

    +
    + +
    Midnight Commander
    + +
    +

    file manager

    + +

    http://www.midnight-commander.org/

    +
    + +
    mutt
    + +
    +

    mail utility

    + +

    http://www.mutt.org/

    +
    + +
    ncftp
    + +
    +

    file-transfer utility

    + +

    http://www.ncftp.com/

    +
    + +
    nvi
    + +
    +

    New vi uses ncurses.

    + +

    https://sites.google.com/a/bostic.com/keithbostic/nvi
    +

    +
    + +
    tin
    + +
    +

    newsreader, supporting color, MIME

    + +

    http://www.tin.org/

    +
    +
    +
    -
    vile
    +

    as well as some that use ncurses + for the terminfo support alone:

    -
    vi-like-emacs
    +
    +
    +
    minicom
    + +
    +

    terminal emulator for serial modem connections

    + +

    http://alioth.debian.org/projects/minicom/

    +
    + +
    mosh
    + +
    +

    a replacement for ssh.

    + +

    https://mosh.mit.edu/

    +
    + +
    tack
    + +
    +

    terminfo action checker

    + +

    http://invisible-island.net/ncurses/tack.html

    +
    + +
    tmux
    + +
    +

    terminal multiplexor

    + +

    http://tmux.github.io/

    +
    + +
    vile
    + +
    +

    vi-like-emacs may be built to use the terminfo, termcap + or curses interfaces.

    + +

    http://invisible-island.net/vile/

    +
    +
    +
    + +

    and finally, those which use only the termcap interface:

    + +
    +
    +
    emacs
    + +
    +

    text editor

    + +

    http://www.gnu.org/software/emacs/

    +
    + +
    screen
    + +
    +

    terminal multiplexor

    + +

    http://www.gnu.org/software/screen/

    +
    + +
    vim
    + +
    +

    text editor

    + +

    http://www.vim.org/

    +
    +
    +
    + +

    Development + activities

    + +

    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.

    + +

    Contact the current maintainers at

    + +
    + bug-ncurses@gnu.org +
    + +

    To join the ncurses mailing list, please write email to

    + +
    http://invisible-island.net/vile/
    -
    + "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.

    -

    Beta versions of ncurses and patches to the current release - are made available at ftp://invisible-island.net/ncurses/ .

    +

    Beta versions of ncurses and + patches to the current release are made available at

    + +
    +

    ftp://invisible-island.net/ncurses/ .

    +

    There is an archive of the mailing list here:

    -

    http://lists.gnu.org/archive/html/bug-ncurses - (also https)

    +
    +

    http://lists.gnu.org/archive/html/bug-ncurses + (also https)

    +
    + +

    Related + resources

    -

    Future Plans

    +

    The release notes make scattered references to these pages, + which may be interesting by themselves:

      -
    • Extended-level XPG4 conformance, with internationalization - support.
    • +
    • man2html
    • -
    • Ports to more systems, including DOS and Windows.
    • -
    +
  • + ncurses licensing
  • + +
  • Symbol + versioning in ncurses
  • + +
  • The + MinGW port of ncurses
  • + +
  • tack – + terminfo action checker
  • + +
  • tar + versus portability
  • + +
  • tctest + – termcap library checker
  • -

    We need people to help with these projects. If you are - interested in working on them, please join the ncurses list.

    +
  • + Terminal Database
  • + -

    Other Related Resources

    +

    Other + resources

    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/c++/Makefile.in b/c++/Makefile.in index eb44da75..4f5b9604 100644 --- a/c++/Makefile.in +++ b/c++/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.110 2015/05/01 00:47:26 tom Exp $ +# $Id: Makefile.in,v 1.111 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"), # @@ -34,7 +34,7 @@ # turn off _all_ suffix rules; we'll generate our own .SUFFIXES: -SHELL = /bin/sh +SHELL = @SHELL@ VPATH = @srcdir@ CF_MFLAGS = @cf_cv_makeflags@ @@ -172,7 +172,7 @@ mostlyclean :: -rm -f core tags TAGS *~ *.bak *.i *.ii *.ln *.atac trace clean :: mostlyclean - -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" + -$(SHELL) -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" -rm -rf $(MODEL)/SunWS_cache -$(LIBTOOL_CLEAN) rm -f demo$x $(AUTO_SRC) $(LIBRARIES) $(OBJS_DEMO) -rm -rf .libs *.dSYM @@ -242,7 +242,7 @@ demo$x: $(OBJS_DEMO) \ etip.h: $(srcdir)/etip.h.in $(srcdir)/edit_cfg.sh cp $(srcdir)/etip.h.in $@ - sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ + $(SHELL) $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ ############################################################################### # The remainder of this file is automatically generated during configuration diff --git a/configure b/configure index ecf0f449..25e351be 100755 --- a/configure +++ b/configure @@ -3998,7 +3998,7 @@ else for cf_option in '-${MAKEFLAGS}' '${MFLAGS}' do cat >cf_makeflags.tmp <&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 @@ -6071,14 +6071,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 @@ -6217,10 +6217,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 @@ -11113,7 +11113,7 @@ echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;} # Construct a sed-script to perform renaming within man-pages if test -n "$MANPAGE_RENAMES" ; then test ! -d man && mkdir man - sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed + $SHELL $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed fi fi @@ -11222,7 +11222,7 @@ cf_edit_man=./edit_man.sh cf_man_alias=`pwd`/man_alias.sed cat >$cf_edit_man <headers.sh < + + @@ -22,15 +24,15 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> + - - - + + @@ -50,9 +52,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + @@ -64,9 +66,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + @@ -96,17 +98,17 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + - + @@ -132,9 +134,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + @@ -150,20 +152,19 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + - + + - - @@ -171,10 +172,10 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + @@ -208,9 +209,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + @@ -258,10 +259,10 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - - + + @@ -285,7 +286,6 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - @@ -295,16 +295,16 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + + - @@ -319,8 +319,8 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN"> - + 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 +

    Announcing ncurses 6.0

    + +

    Overview

    + +

    The ncurses (new curses) library + is a free software emulation of curses in System V Release 4.0 + (SVr4), and more. It uses terminfo format, supports pads and color and multiple highlights and forms characters and - function-key mapping, and has all the other 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.

    - -

    The ncurses distribution is available via anonymous FTP at the - GNU distribution site ftp://ftp.gnu.org/gnu/ncurses/ .
    - - It is also available at 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 - 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).
    • + including

      + +
        +
      • captoinfo, + a termcap conversion tool
      • + +
      • clear, + utility for clearing the screen
      • + +
      • infocmp, + the terminfo decompiler
      • + +
      • tabs, + set tabs on a terminal
      • + +
      • tic, + the terminfo compiler
      • + +
      • toe, + list (table of) terminfo entries
      • + +
      • tput, + utility for retrieving terminal capabilities in shell + scripts
      • + +
      • tset, + to initialize the terminal
      • +
      + +

      Full manual pages are provided for the library and tools.

      + +

      The ncurses distribution is + available via anonymous FTP at the GNU distribution site

      + +
      +

      ftp://ftp.gnu.org/gnu/ncurses/ .

      +
      It is also available at + +
      +

      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 termcap + library checker (tctest) (not part of ncurses) was one result. A followup review + of performance using 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 + + 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.

        +
      • +
      + +

      Library + improvements

      + +

      Output + buffering

      + +

      X/Open curses provides more than one initialization + function:

      + +
        +
      • + initscr (the simplest) accepts no parameters.
      • + +
      • + 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.

      + +

      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 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:

      + +
      +
    C nameAda nameman page
    _nc_freeall()Curses_Free_Allcurs_trace.3x
    _tracef()Trace_Putcurs_trace.3x
    assume_default_colors()Assume_Default_Colorsdefault_colors.3x
    baudrate()Baudratecurs_termattrs.3x
    beep()Beepcurs_beep.3x
    copywin()Copycurs_overlay.3x
    current_field()Currentform_page.3x
    current_item()Currentmitem_current.3x
    curs_set()Set_Cursor_Visibilitycurs_kernel.3x
    curscrCurrent_Windowcurs_initscr.3x
    curses_version()Curses_Versioncurs_extend.3x
    curs_set()Set_Cursor_Visibilitycurs_kernel.3x
    data_ahead()Data_Aheadform_data.3x
    data_behind()Data_Behindform_data.3x
    define_key()Define_Keydefine_key.3x
    def_prog_mode()Save_Curses_Modecurs_kernel.3x
    delay_output()Delay_Outputcurs_util.3x
    define_key()Define_Keydefine_key.3x
    del_panel()Deletepanel.3x
    delay_output()Delay_Outputcurs_util.3x
    delwin()Deletecurs_window.3x
    derwin()Derived_Windowcurs_window.3x
    doupdate()Update_Screencurs_refresh.3x
    field_info()Infoform_field_info.3x
    field_init()Get_Field_Init_Hookform_hook.3x
    field_just()Get_Justificationform_field_just.3x
    field_opts_on()Switch_Optionsform_field_opts.3x
    field_opts()Get_Optionsform_field_opts.3x
    field_opts()Get_Optionsform_field_opts.3x
    field_opts_on()Switch_Optionsform_field_opts.3x
    field_pad()Pad_Characterform_field_attributes.3x
    field_status()Changedform_field_buffer.3x
    field_term()Get_Field_Term_Hookform_hook.3x
    form_driver()Driverform_driver.3x
    form_fields()Fieldsform_field.3x
    form_init()Get_Form_Init_Hookform_hook.3x
    form_opts_on()Switch_Optionsform_opts.3x
    form_opts()Get_Optionsform_opts.3x
    form_opts()Get_Optionsform_opts.3x
    form_opts_on()Switch_Optionsform_opts.3x
    form_page()Pageform_page.3x
    form_sub()Get_Sub_Windowform_win.3x
    form_term()Get_Form_Term_Hookform_hook.3x
    initscr()Init_Screencurs_initscr.3x
    initscr()Init_Windowscurs_initscr.3x
    intrflush()Set_Flush_On_Interrupt_Modecurs_inopts.3x
    isendwin()Is_End_Windowcurs_initscr.3x
    is_linetouched()Is_Touchedcurs_touch.3x
    is_wintouched()Is_Touchedcurs_touch.3x
    isendwin()Is_End_Windowcurs_initscr.3x
    item_count()Item_Countmenu_items.3x
    item_description();Descriptionmitem_name.3x
    item_index()Get_Indexmitem_current.3x
    item_init()Get_Item_Init_Hookmenu_hook.3x
    item_name()Namemitem_name.3x
    item_opts_on()Switch_Optionsmitem_opts.3x
    item_opts()Get_Optionsmitem_opts.3x
    item_opts()Get_Optionsmitem_opts.3x
    item_opts_on()Switch_Optionsmitem_opts.3x
    item_term()Get_Item_Term_Hookmenu_hook.3x
    item_userptrGet_User_Datamitem_userptr.3x
    item_userptrGet_User_Datamitem_userptr.3x
    menu_init()Get_Menu_Init_Hookmenu_hook.3x
    menu_items()Itemsmenu_items.3x
    menu_mark()Markmenu_mark.3x
    menu_opts_on()Switch_Optionsmenu_opts.3x
    menu_opts()Get_Optionsmenu_opts.3x
    menu_opts()Get_Optionsmenu_opts.3x
    menu_opts_on()Switch_Optionsmenu_opts.3x
    menu_pad()Pad_Charactermenu_attributes.3x
    menu_pattern()Patternmenu_pattern.3x
    menu_requestname.3xmenu_driver.3x
    move_field()Moveform_field.3x
    move_panel()Movepanel.3x
    mvderwin()Move_Derived_Windowcurs_window.3x
    mvwaddchnstr()Addcurs_addchstr.3x
    mvwaddch()Addcurs_addch.3x
    mvwaddchnstr()Addcurs_addchstr.3x
    mvwaddnstr()Addcurs_addstr.3x
    mvwchgat()Change_Attributescurs_attr.3x
    mvwdelch()Delete_Charactercurs_delch.3x
    mvwgetnstr()Getcurs_getstr.3x
    mvwinchnstr()Peekcurs_inchstr.3x
    mvwin()Move_Windowcurs_window.3x
    mvwinch()Peekcurs_inch.3x
    mvwinchnstr()Peekcurs_inchstr.3x
    mvwinnstr()Peekcurs_instr.3x
    mvwinsch()Insertcurs_insch.3x
    mvwinsnstr()Insertcurs_insstr.3x
    mvwin()Move_Windowcurs_window.3x
    napms()Nap_Milli_Secondscurs_kernel.3x
    _nc_freeall()Curses_Free_Allcurs_trace.3x
    new_field()Createform_field_new.3x
    new_field()New_Fieldform_field_new.3x
    new_form()Createform_new.3x
    new_item()Createmitem_new.3x
    new_item()New_Itemmitem_new.3x
    new_menu()Createmenu_new.3x
    newpad()New_Padcurs_pad.3x
    new_page()Is_New_Pageform_new_page.3x
    new_panel()Createpanel.3x
    new_panel()New_Panelpanel.3x
    newpad()New_Padcurs_pad.3x
    newwin()Createcurs_window.3x
    nl()Set_NL_Modecurs_outopts.3x
    nodelay()Set_NoDelay_Modecurs_inopts.3x
    scale_menu()Scalemenu_win.3x
    scr_dump()Screen_Dump_To_Filecurs_scr_dump.3x
    scr_init()Screen_Init_From_Filecurs_scr_dump.3x
    scrollok()Allow_Scrollingcurs_outopts.3x
    scr_restore()Screen_Restore_From_Filecurs_scr_dump.3x
    scr_set()Screen_Set_Filecurs_scr_dump.3x
    scrollok()Allow_Scrollingcurs_outopts.3x
    set_current_field()Set_Currentform_page.3x
    set_current_item()Set_Currentmitem_current.3x
    set_field_back()Set_Backgroundform_field_attributes.3x
    set_panel_userptrSet_User_Datapanel.3x
    set_top_row()Set_Top_Rowmitem_current.3x
    show_panel()Showpanel.3x
    slk_attron()Switch_Soft_Label_Key_Attributescurs_slk.3x
    slk_attrset()Set_Soft_Label_Key_Attributescurs_slk.3x
    slk_attr()Get_Soft_Label_Key_Attributescurs_slk.3x
    slk_attr()Get_Soft_Label_Key_Attributescurs_slk.3x
    slk_attron()Switch_Soft_Label_Key_Attributescurs_slk.3x
    slk_attrset()Set_Soft_Label_Key_Attributescurs_slk.3x
    slk_clear()Clear_Soft_Label_Keyscurs_slk.3x
    slk_color()Set_Soft_Label_Key_Colorcurs_slk.3x
    slk_init()Init_Soft_Label_Keyscurs_slk.3x
    top_row()Top_Rowmitem_current.3x
    touchline()Touchcurs_touch.3x
    touchwin()Touchcurs_touch.3x
    _tracef()Trace_Putcurs_trace.3x
    trace()Trace_oncurs_trace.3x
    unctrl()Un_Controlcurs_util.3x
    unctrl()Un_Controlcurs_util.3x
    update_panels()Update_Panelspanel.3x
    use_default_colors()Use_Default_Colorsdefault_colors.3x
    use_extended_names()Use_Extended_Namescurs_extend.3x
    waddchnstr()Addcurs_addchstr.3x
    waddch()Addcurs_addch.3x
    waddchnstr()Addcurs_addchstr.3x
    waddnstr()Addcurs_addstr.3x
    wattr_get()Get_Character_Attributescurs_attr.3x
    wattr_get()Get_Character_Attributecurs_attr.3x
    wattron()Switch_Character_Attributecurs_attr.3x
    wattrset()Set_Character_Attributescurs_attr.3x
    wbkgd()Change_Backgroundcurs_bkgd.3x
    wbkgdget()Get_Backgroundcurs_bkgd.3x
    wbkgdset()Set_Backgroundcurs_bkgd.3x
    wbkgd()Change_Backgroundcurs_bkgd.3x
    wborder()Bordercurs_border.3x
    wchgat()Change_Attributescurs_attr.3x
    wclear()Clearcurs_clear.3x
    wgetch()Get_Keystrokecurs_getch.3x
    wgetnstr()Getcurs_getstr.3x
    whline()Horizontal_Linecurs_border.3x
    winchnstr()Peekcurs_inchstr.3x
    winch()Peekcurs_inch.3x
    winchnstr()Peekcurs_inchstr.3x
    winnstr()Peekcurs_instr.3x
    winsch()Insertcurs_insch.3x
    winsdelln()Insert_Delete_Linescurs_deleteln.3x
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ConfigSymbolsGlobalsLocals"_nc_"
    ncurses976796180332
    ncursesw1089905184343
    ncursest979804175358
    ncursestw1098914184372
    + + +

    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 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

      +
    • +
    + +

    There are also new features in the libraries:

    + +
      +
    • added + use_tioctl function
    • + +
    • +

      added + wgetdelay to retrieve _delay member of WINDOW if it + happens to be opaque, e.g., in the pthread configuration.

      +
    • + +
    • +

      added + A_ITALIC extension.

      +
    • + +
    • +

      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).

      +
    • +
    + +

    Program + improvements

    + +

    Utilities

    + +

    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.

      +
    • +
    + +

    Examples

    + +

    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.

      +
    • +
    + +

    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:

    + + + +

    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.

    + +
      +
    • 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 NEWS file + but treated sketchily in manual pages.

      +
    • +
    + +

    In addition, the mechanism for producing HTML versions of the + documentation has been improved:

    + + + +

    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 + 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.

        +
      • + +
      • +

        modify + init_pair to accept -1's for color value after + + assume_default_colors has been called.

        +
      • + +
      • +

        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.

        +
      • +
      +
    • +
    + +

    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”):

    -
    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.

    +
    -
    Curses Development Kit
    - http://invisible-island.net/cdk/
    +
    --enable-ext-colors
    - http://www.vexus.ca/products/CDK/ +
    +

    Extends the cchar_t structure to allow more + than 16 colors to be encoded. This applies only to the + wide-character (--enable-widec) + configuration.

    +
    -
    ded
    +
    --enable-ext-mouse
    -
    directory-editor
    - http://invisible-island.net/ded/
    +
    +

    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.

    +
    -
    the character-screen WWW browser
    - http://lynx.isc.org/release/
    +
    --enable-lp64
    -
    Midnight Commander
    +
    +

    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.

    +
    -
    file manager
    - http://www.midnight-commander.org/
    +
    --enable-sp-funcs
    -
    mutt
    +
    +

    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.

    +
    -
    mail utility
    - http://www.mutt.org/
    +
    --with-chtype=uint32_t
    + +
    +

    Makes chtype explicitly a 32-bit unsigned + value.

    +
    -
    ncftp
    +
    --with-mmask_t=uint32_t
    -
    file-transfer utility
    - http://www.ncftp.com/
    +
    +

    Makes mmask_t explicitly a 32-bit unsigned + value.

    +
    -
    nvi
    +
    --with-tparm-arg=intptr_t
    -
    New vi versions 1.50 are able to use ncurses versions 1.9.7 - and later.
    - https://sites.google.com/a/bostic.com/keithbostic/nvi
    +
    +

    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.,

    + +
    + + +

    + #!/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:

    -
    Lynx-like info browser. https://alioth.debian.org/projects/pinfo/
    +
      +
    • +

      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.

      +
    • +
    -
    tin
    +

    Configuration options

    -
    newsreader, supporting color, MIME http://www.tin.org/
    - as well as some that use ncurses for the terminfo support - alone: +

    There are several new (or extended) configure options:

    -
    minicom
    +
    --disable-db-install
    -
    terminal emulator
    - http://alioth.debian.org/projects/minicom/
    +
    +

    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.

    +
    -
    vile
    +
    --disable-gnat-projects
    -
    vi-like-emacs
    - http://invisible-island.net/vile/
    +
    +

    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).

    +
    -

    The ncurses distribution includes a selection of test programs - (including a few games).

    +

    Portability

    + +

    MinGW

    + +

    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:

    + +
      +
    • +

      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 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: beep, + flash, + + 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 + 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.

      +
    • + +
    • +

      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 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.

        +
      • +
      +
    • +
    +
    + +

    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 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.

      +
    • + +
    • +

      A BSD-like tset + utility is provided.

      +
    • + +
    • +

      The ncurses library and + utilities will automatically read terminfo entries from + $HOME/.terminfo if it exists, and compile to that directory + if it exists and the user has no write access to the system + directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the + system 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.

      +
    • + +
    • +

      Extensive documentation is provided (see the + Additional Reading section of the + ncurses FAQ for online documentation).

      +
    • +
    + +

    Applications using + ncurses

    + +

    The ncurses distribution includes + a selection of test programs (including a few games). These are + available separately as ncurses-examples

    + +

    The ncurses library has been tested with a wide variety of + applications including:

    + +
    +
    +
    cdk
    + +
    +

    Curses Development Kit

    + +

    http://invisible-island.net/cdk/
    +

    +
    + +
    ded
    + +
    +

    directory-editor

    + +

    http://invisible-island.net/ded/

    +
    + +
    dialog
    + +
    +

    the underlying application used in Slackware's setup, + and the basis for similar install/configure applications on + many systems.

    + +

    http://invisible-island.net/dialog/

    +
    + +
    lynx
    -

    Who's Who and What's What

    Zeyd Ben-Halim started it from - a previous package pcurses, written by Pavel Curtis. Eric S. +
    +

    the text WWW browser

    + +

    http://lynx.isc.org/

    +
    + +
    Midnight Commander
    + +
    +

    file manager

    + +

    http://www.midnight-commander.org/

    +
    + +
    mutt
    + +
    +

    mail utility

    + +

    http://www.mutt.org/

    +
    + +
    ncftp
    + +
    +

    file-transfer utility

    + +

    http://www.ncftp.com/

    +
    + +
    nvi
    + +
    +

    New vi uses ncurses.

    + +

    https://sites.google.com/a/bostic.com/keithbostic/nvi
    +

    +
    + +
    tin
    + +
    +

    newsreader, supporting color, MIME

    + +

    http://www.tin.org/

    +
    +
    +
    + +

    as well as some that use ncurses + for the terminfo support alone:

    + +
    +
    +
    minicom
    + +
    +

    terminal emulator for serial modem connections

    + +

    http://alioth.debian.org/projects/minicom/

    +
    + +
    mosh
    + +
    +

    a replacement for ssh.

    + +

    https://mosh.mit.edu/

    +
    + +
    tack
    + +
    +

    terminfo action checker

    + +

    http://invisible-island.net/ncurses/tack.html

    +
    + +
    tmux
    + +
    +

    terminal multiplexor

    + +

    http://tmux.github.io/

    +
    + +
    vile
    + +
    +

    vi-like-emacs may be built to use the terminfo, termcap + or curses interfaces.

    + +

    http://invisible-island.net/vile/

    +
    +
    +
    + +

    and finally, those which use only the termcap interface:

    + +
    +
    +
    emacs
    + +
    +

    text editor

    + +

    http://www.gnu.org/software/emacs/

    +
    + +
    screen
    + +
    +

    terminal multiplexor

    + +

    http://www.gnu.org/software/screen/

    +
    + +
    vim
    + +
    +

    text editor

    + +

    http://www.vim.org/

    +
    +
    +
    + +

    Development + activities

    + +

    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.

    + +

    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>

    +

    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 ftp://invisible-island.net/ncurses/ .

    +

    Beta versions of ncurses and + patches to the current release are made available at

    + +
    +

    ftp://invisible-island.net/ncurses/ .

    +
    + +

    There is an archive of the mailing list here:

    + +
    +

    http://lists.gnu.org/archive/html/bug-ncurses + (also https)

    +
    -

    Future Plans

    +

    Related + resources

    + +

    The release notes make scattered references to these pages, + which may be interesting by themselves:

    We need people to help with these projects. If you are - interested in working on them, please join the ncurses list. +
  • tctest + – termcap library checker
  • -

    Other Related Resources

    The distribution provides a newer - version of the terminfo-format terminal description file once - maintained by Eric +
  • + Terminal Database
  • + + +

    Other + resources

    + +

    The distribution provides a newer version of the + terminfo-format terminal description file once maintained by + Eric Raymond . Unlike the older version, the termcap and terminfo data are provided in the same file, 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 .

    + + diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html index 6c7fc5b6..c0cdbf9c 100644 --- a/doc/html/man/captoinfo.1m.html +++ b/doc/html/man/captoinfo.1m.html @@ -205,7 +205,7 @@

    SEE ALSO

            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/clear.1.html b/doc/html/man/clear.1.html index a9ff3e64..6215331e 100644 --- a/doc/html/man/clear.1.html +++ b/doc/html/man/clear.1.html @@ -71,7 +71,7 @@

    SEE ALSO

            tput(1), terminfo(5)
     
    -       This describes ncurses version 6.0 (patch 20150725).
    +       This describes ncurses version 6.0 (patch 20150808).
     
     
     
    diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html
    index e100a666..827d97a2 100644
    --- a/doc/html/man/form.3x.html
    +++ b/doc/html/man/form.3x.html
    @@ -1,7 +1,7 @@
     
     
     
    @@ -119,6 +119,7 @@
     
            field_userptr          form_field_userptr(3x)
            form_driver            form_driver(3x)
    +       form_driver_w          form_driver(3x)*
            form_fields            form_field(3x)
            form_init              form_hook(3x)
            form_opts              form_opts(3x)
    @@ -244,7 +245,7 @@
            curses(3x) and related pages whose names begin "form_" for
            detailed descriptions of the entry points.
     
    -       This describes ncurses version 6.0 (patch 20150725).
    +       This describes ncurses version 6.0 (patch 20150808).
     
     
     
    diff --git a/doc/html/man/form_driver.3x.html b/doc/html/man/form_driver.3x.html
    index 118097f0..72b2d942 100644
    --- a/doc/html/man/form_driver.3x.html
    +++ b/doc/html/man/form_driver.3x.html
    @@ -1,6 +1,6 @@
     
     
     
    @@ -53,11 +53,15 @@
     

    SYNOPSIS

            #include <form.h>
    -       int form_driver(FORM *form, int c);
    +       int form_driver(FORM *form, int c);
    +       int form_driver_w(FORM *form, int c, wchar_t wch);
     
     
     

    DESCRIPTION

    +
    +
    +

    form_driver

            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.
    +
    +

    form_driver_w

    +       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.
    +
    +

    Form-driver requests

    +       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,
    +       Name               Description
    +       -------------------------------------------------------------------------
    +       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.
     
     
     
    -

    MOUSE HANDLING

    -       If the second argument is the KEY_MOUSE special  key,  the
    +

    Mouse handling

    +       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.
     
     
     
    -

    APPLICATION-DEFINED COMMANDS

    +

    Application-defined commands

            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 @@
     
     

    PORTABILITY

    -       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.
     
     
     

    AUTHORS

    -       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 @@
     
  • SYNOPSIS
  • DESCRIPTION
  • RETURN VALUE
  • diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html index 53f66ea4..9d18c97b 100644 --- a/doc/html/man/infocmp.1m.html +++ b/doc/html/man/infocmp.1m.html @@ -472,7 +472,7 @@ http://invisible-island.net/ncurses/tctest.html - This describes ncurses version 6.0 (patch 20150725). + This describes ncurses version 6.0 (patch 20150808).
    diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html index fcb32f15..bd5f05ef 100644 --- a/doc/html/man/infotocap.1m.html +++ b/doc/html/man/infotocap.1m.html @@ -94,7 +94,7 @@

    SEE ALSO

            curses(3x), tic(1m), infocmp(1m), terminfo(5)
     
    -       This describes ncurses version 6.0 (patch 20150725).
    +       This describes ncurses version 6.0 (patch 20150808).
     
     
     
    diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html index c368f7c4..a05f0957 100644 --- a/doc/html/man/menu.3x.html +++ b/doc/html/man/menu.3x.html @@ -227,7 +227,7 @@ curses(3x) and related pages whose names begin "menu_" for detailed descriptions of the entry points. - This describes ncurses version 6.0 (patch 20150725). + This describes ncurses version 6.0 (patch 20150808). diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html index b175a43a..0c562ca1 100644 --- a/doc/html/man/ncurses.3x.html +++ b/doc/html/man/ncurses.3x.html @@ -27,7 +27,7 @@ * sale, use or other dealings in this Software without prior written * * authorization. * **************************************************************************** - * @Id: ncurses.3x,v 1.120 2015/07/21 23:37:10 tom Exp @ + * @Id: ncurses.3x,v 1.124 2015/08/08 14:57:51 tom Exp @ --> @@ -63,7 +63,7 @@ sonable optimization. This implementation is "new curses" (ncurses) and is the approved replacement for 4.4BSD clas- sic curses, which has been discontinued. This describes - ncurses version 6.0 (patch 20150725). + ncurses version 6.0 (patch 20150808). The ncurses library emulates the curses library of System V Release 4 UNIX, and XPG4 (X/Open Portability Guide) @@ -459,7 +459,9 @@ is_nodelay curs_opaque(3x)* is_notimeout curs_opaque(3x)* + is_pad curs_opaque(3x)* is_scrollok curs_opaque(3x)* + is_subwin curs_opaque(3x)* is_syncok curs_opaque(3x)* is_term_resized resizeterm(3x)* is_wintouched curs_touch(3x) @@ -522,9 +524,9 @@ mvscanw curs_scanw(3x) mvvline curs_border(3x) mvvline_set curs_border_set(3x) + mvwadd_wch curs_add_wch(3x) mvwadd_wchnstr curs_add_wchstr(3x) - mvwadd_wchstr curs_add_wchstr(3x) mvwaddch curs_addch(3x) mvwaddchnstr curs_addchstr(3x) @@ -589,11 +591,12 @@ qiflush curs_inopts(3x) raw curs_inopts(3x) redrawwin curs_refresh(3x) + refresh curs_refresh(3x) reset_prog_mode curs_kernel(3x) - reset_shell_mode curs_kernel(3x) resetty curs_kernel(3x) + resize_term resizeterm(3x)* resizeterm resizeterm(3x)* restartterm curs_terminfo(3x) ripoffline curs_kernel(3x) @@ -646,6 +649,7 @@ tigetflag curs_terminfo(3x) tigetnum curs_terminfo(3x) tigetstr curs_terminfo(3x) + tiparm curs_terminfo(3x)* timeout curs_inopts(3x) touchline curs_touch(3x) touchwin curs_touch(3x) @@ -654,11 +658,11 @@ tputs curs_terminfo(3x) trace curs_trace(3x)* typeahead curs_inopts(3x) + unctrl curs_util(3x) unget_wch curs_get_wch(3x) ungetch curs_getch(3x) ungetmouse curs_mouse(3x)* - untouchwin curs_touch(3x) use_default_colors default_colors(3x)* use_env curs_util(3x) @@ -714,10 +718,14 @@ wget_wstr curs_get_wstr(3x) wgetbkgrnd curs_bkgrnd(3x) wgetch curs_getch(3x) + wgetdelay curs_opaque(3x)* wgetn_wstr curs_get_wstr(3x) wgetnstr curs_getstr(3x) + wgetparent curs_opaque(3x)* + wgetscrreg curs_opaque(3x)* wgetstr curs_getstr(3x) whline curs_border(3x) + whline_set curs_border_set(3x) win_wch curs_in_wch(3x) win_wchnstr curs_in_wchstr(3x) @@ -725,7 +733,6 @@ winch curs_inch(3x) winchnstr curs_inchstr(3x) winchstr curs_inchstr(3x) - winnstr curs_instr(3x) winnwstr curs_inwstr(3x) wins_nwstr curs_ins_wstr(3x) diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html index ab66637f..52e1f68b 100644 --- a/doc/html/man/panel.3x.html +++ b/doc/html/man/panel.3x.html @@ -218,7 +218,7 @@

    SEE ALSO

            curses(3x), curs_variables(3x),
     
    -       This describes ncurses version 6.0 (patch 20150725).
    +       This describes ncurses version 6.0 (patch 20150808).
     
     
     
    diff --git a/doc/html/man/tabs.1.html b/doc/html/man/tabs.1.html index af45a242..fac8a271 100644 --- a/doc/html/man/tabs.1.html +++ b/doc/html/man/tabs.1.html @@ -168,7 +168,7 @@

    SEE ALSO

            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 @@

    SEE ALSO

            clear(1), stty(1), tabs(1), terminfo(5), curs_termcap(3x).
     
    -       This describes ncurses version 6.0 (patch 20150725).
    +       This describes ncurses version 6.0 (patch 20150808).
     
     
     
    diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
    index 0e33793c..73192cd5 100644
    --- a/doc/html/man/tset.1.html
    +++ b/doc/html/man/tset.1.html
    @@ -319,7 +319,7 @@
            csh(1),   sh(1),   stty(1),   curs_terminfo(3x),   tty(4),
            terminfo(5), ttys(5), environ(7)
     
    -       This describes ncurses version 6.0 (patch 20150725).
    +       This describes ncurses version 6.0 (patch 20150808).
     
     
     
    diff --git a/form/Makefile.in b/form/Makefile.in
    index 33aa7960..29b4929e 100644
    --- a/form/Makefile.in
    +++ b/form/Makefile.in
    @@ -1,6 +1,6 @@
    -# $Id: Makefile.in,v 1.62 2015/05/01 00:47:26 tom Exp $
    +# $Id: Makefile.in,v 1.63 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"), #
    @@ -42,7 +42,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES:
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     THIS		= Makefile
     
    diff --git a/include/Makefile.in b/include/Makefile.in
    index f637c5ad..cfa9876e 100644
    --- a/include/Makefile.in
    +++ b/include/Makefile.in
    @@ -1,4 +1,4 @@
    -# $Id: Makefile.in,v 1.42 2015/05/01 00:47:26 tom Exp $
    +# $Id: Makefile.in,v 1.43 2015/08/05 09:25:55 tom Exp $
     ##############################################################################
     # Copyright (c) 1998-2013,2015 Free Software Foundation, Inc.                #
     #                                                                            #
    @@ -39,7 +39,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES:
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     THIS		= Makefile
     
    @@ -96,22 +96,22 @@ curses.h : $(TERMINFO_CAPS) \
     		$(srcdir)/curses.tail \
     		$(srcdir)/MKkey_defs.sh
     	cat curses.head >$@
    -	AWK=$(AWK) sh $(srcdir)/MKkey_defs.sh $(TERMINFO_CAPS) >>$@
    -	sh -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
    +	AWK=$(AWK) $(SHELL) $(srcdir)/MKkey_defs.sh $(TERMINFO_CAPS) >>$@
    +	$(SHELL) -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
     	cat $(srcdir)/curses.tail >>$@
     
     term.h: $(TERMINFO_CAPS) MKterm.h.awk
     	$(AWK) -f MKterm.h.awk $(TERMINFO_CAPS) > $@
    -	sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
    +	$(SHELL) $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
     
     hashsize.h: $(TERMINFO_CAPS) $(srcdir)/MKhashsize.sh
    -	sh $(srcdir)/MKhashsize.sh $(TERMINFO_CAPS) >$@
    +	$(SHELL) $(srcdir)/MKhashsize.sh $(TERMINFO_CAPS) >$@
     
     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 >$@
     
     parametrized.h: $(TERMINFO_CAPS) $(srcdir)/MKparametrized.sh
    -	AWK=$(AWK) sh $(srcdir)/MKparametrized.sh $(TERMINFO_CAPS) >$@
    +	AWK=$(AWK) $(SHELL) $(srcdir)/MKparametrized.sh $(TERMINFO_CAPS) >$@
     
     # This is required by pthread.h on MinGW
     config.h:
    diff --git a/man/Makefile.in b/man/Makefile.in
    index ad40bc53..478c3989 100644
    --- a/man/Makefile.in
    +++ b/man/Makefile.in
    @@ -1,6 +1,6 @@
    -# $Id: Makefile.in,v 1.47 2013/08/04 20:23:20 tom Exp $
    +# $Id: Makefile.in,v 1.48 2015/08/05 23:15:41 tom Exp $
     ##############################################################################
    -# Copyright (c) 1998-2010,2013 Free Software Foundation, Inc.                #
    +# Copyright (c) 1998-2013,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"), #
    @@ -34,7 +34,7 @@
     # NOTE: When you add or rename a man page, make sure you update both
     # the top-level MANIFEST and any man/*.renames files!
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     
     DESTDIR		= @DESTDIR@
    @@ -62,15 +62,15 @@ $(DESTDIR)$(mandir) :
     EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]*
     
     install install.man : terminfo.5 $(DESTDIR)$(mandir)
    -	sh ../edit_man.sh normal installing $(EDITARGS)
    +	$(SHELL) ../edit_man.sh normal installing $(EDITARGS)
     
     uninstall uninstall.man :
    -	-sh ../edit_man.sh normal removing $(EDITARGS)
    +	-$(SHELL) ../edit_man.sh normal removing $(EDITARGS)
     
     # We compose terminfo.5 from the real sources...
     CAPLIST=$(srcdir)/../include/@TERMINFO_CAPS@
     terminfo.5: $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail Makefile $(srcdir)/MKterminfo.sh
    -	sh $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5
    +	$(SHELL) $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5
     
     mostlyclean :
     	-rm -f core tags TAGS *~ *.bak *.ln *.atac trace
    @@ -79,7 +79,7 @@ clean:	mostlyclean
     	rm -f terminfo.5
     
     ../edit_man.sed : make_sed.sh @MANPAGE_RENAMES@
    -	sh $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed
    +	$(SHELL) $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed
     
     distclean realclean: clean
     	rm -f Makefile *-config.1 ../edit_man.* ../man_alias.*
    diff --git a/man/form.3x b/man/form.3x
    index 662b848f..c379a4d8 100644
    --- a/man/form.3x
    +++ b/man/form.3x
    @@ -1,6 +1,6 @@
     '\" t
     .\"***************************************************************************
    -.\" Copyright (c) 1998-2010,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            *
    @@ -27,7 +27,7 @@
     .\" authorization.                                                           *
     .\"***************************************************************************
     .\"
    -.\" $Id: form.3x,v 1.25 2014/08/16 20:31:45 tom Exp $
    +.\" $Id: form.3x,v 1.26 2015/08/02 18:14:50 tom Exp $
     .TH form 3X ""
     .SH NAME
     \fBform\fR \- curses extension for programming forms
    @@ -96,6 +96,7 @@ field_term	\fBform_hook\fR(3X)
     field_type	\fBform_field_validation\fR(3X)
     field_userptr	\fBform_field_userptr\fR(3X)
     form_driver	\fBform_driver\fR(3X)
    +form_driver_w	\fBform_driver\fR(3X)*
     form_fields	\fBform_field\fR(3X)
     form_init	\fBform_hook\fR(3X)
     form_opts	\fBform_opts\fR(3X)
    diff --git a/man/form_driver.3x b/man/form_driver.3x
    index 67a986b0..4084eac0 100644
    --- a/man/form_driver.3x
    +++ b/man/form_driver.3x
    @@ -1,5 +1,5 @@
     .\"***************************************************************************
    -.\" Copyright (c) 1998-2008,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            *
    @@ -26,7 +26,7 @@
     .\" authorization.                                                           *
     .\"***************************************************************************
     .\"
    -.\" $Id: form_driver.3x,v 1.22 2010/12/04 18:38:55 tom Exp $
    +.\" $Id: form_driver.3x,v 1.24 2015/08/02 18:21:11 tom Exp $
     .TH form_driver 3X ""
     .de bP
     .IP \(bu 4
    @@ -36,205 +36,104 @@
     .SH SYNOPSIS
     \fB#include \fR
     .br
    -int form_driver(FORM *form, int c);
    +\fBint form_driver(FORM *\fP\fIform\fP\fB, int \fP\fIc\fP\fB);\fP
    +.br
    +\fBint form_driver_w(FORM *\fP\fIform\fP\fB, int \fP\fIc\fP\fB, wchar_t \fP\fIwch\fP\fB);\fP
     .br
     .SH DESCRIPTION
    +.SS form_driver
     Once a form has been posted (displayed), you should funnel input events to it
     through \fBform_driver\fR.  This routine has three major input cases:
     .bP
     The input is a form navigation request.
     Navigation request codes are constants defined in \fB\fP,
    -which are distinct from the key- and character codes returned by \fBwgetch\fP.
    +which are distinct from the key- and character codes returned by \fBwgetch\fP(3X).
     .bP
     The input is a printable character.
     Printable characters (which must be positive, less than 256) are
     checked according to the program's locale settings.
     .bP
     The input is the KEY_MOUSE special key associated with an mouse event.
    +.SS form_driver_w
    +.PP
    +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 \fBget_wch\fP(3X).
    +The type must be passed as well,
    +to enable the library to determine whether the parameter
    +is a wide character or a request.
    +.SS Form-driver requests
     .PP
     The form driver requests are as follows:
    -.TP 5
    -REQ_NEXT_PAGE
    -Move to the next page.
    -.TP 5
    -REQ_PREV_PAGE
    -Move to the previous page.
    -.TP 5
    -REQ_FIRST_PAGE
    -Move to the first page.
    -.TP 5
    -REQ_LAST_PAGE
    -Move to the last field.
    -.sp
    -.TP 5
    -REQ_NEXT_FIELD
    -Move to the next field.
    -.TP 5
    -REQ_PREV_FIELD
    -Move to the previous field.
    -.TP 5
    -REQ_FIRST_FIELD
    -Move to the first field.
    -.TP 5
    -REQ_LAST_FIELD
    -Move to the last field.
    -.TP 5
    -REQ_SNEXT_FIELD
    -Move to the sorted next field.
    -.TP 5
    -REQ_SPREV_FIELD
    -Move to the sorted previous field.
    -.TP 5
    -REQ_SFIRST_FIELD
    -Move to the sorted first field.
    -.TP 5
    -REQ_SLAST_FIELD
    -Move to the sorted last field.
    -.TP 5
    -REQ_LEFT_FIELD
    -Move left to a field.
    -.TP 5
    -REQ_RIGHT_FIELD
    -Move right to a field.
    -.TP 5
    -REQ_UP_FIELD
    -Move up to a field.
    -.TP 5
    -REQ_DOWN_FIELD
    -Move down to a field.
    -.sp
    -.TP 5
    -REQ_NEXT_CHAR
    -Move to the next char.
    -.TP 5
    -REQ_PREV_CHAR
    -Move to the previous char.
    -.TP 5
    -REQ_NEXT_LINE
    -Move to the next line.
    -.TP 5
    -REQ_PREV_LINE
    -Move to the previous line.
    -.TP 5
    -REQ_NEXT_WORD
    -Move to the next word.
    -.TP 5
    -REQ_PREV_WORD
    -Move to the previous word.
    -.TP 5
    -REQ_BEG_FIELD
    -Move to the beginning of the field.
    -.TP 5
    -REQ_END_FIELD
    -Move to the end of the field.
    -.TP 5
    -REQ_BEG_LINE
    -Move to the beginning of the line.
    -.TP 5
    -REQ_END_LINE
    -Move to the end of the line.
    -.TP 5
    -REQ_LEFT_CHAR
    -Move left in the field.
    -.TP 5
    -REQ_RIGHT_CHAR
    -Move right in the field.
    -.TP 5
    -REQ_UP_CHAR
    -Move up in the field.
    -.TP 5
    -REQ_DOWN_CHAR
    -Move down in the field.
    -.sp
    -.TP 5
    -REQ_NEW_LINE
    -Insert or overlay a new line.
    -.TP 5
    -REQ_INS_CHAR
    -Insert a blank at the cursor.
    -.TP 5
    -REQ_INS_LINE
    -Insert a blank line at the cursor.
    -.TP 5
    -REQ_DEL_CHAR
    -Delete character at the cursor.
    -.TP 5
    -REQ_DEL_PREV
    -Delete character before the cursor.
    -.TP 5
    -REQ_DEL_LINE
    -Delete line at the cursor.
    -.TP 5
    -REQ_DEL_WORD
    -Delete blank-delimited word at the cursor.
    -.TP 5
    -REQ_CLR_EOL
    -Clear to end of line from cursor.
    -.TP 5
    -REQ_CLR_EOF
    -Clear to end of field from cursor.
    -.TP 5
    -REQ_CLR_FIELD
    -Clear the entire field.
    -.TP 5
    -REQ_OVL_MODE
    -Enter overlay mode.
    -.TP 5
    -REQ_INS_MODE
    -Enter insert mode.
    -.sp
    -.TP 5
    -REQ_SCR_FLINE
    -Scroll the field forward a line.
    -.TP 5
    -REQ_SCR_BLINE
    -Scroll the field backward a line.
    -.TP 5
    -REQ_SCR_FPAGE
    -Scroll the field forward a page.
    -.TP 5
    -REQ_SCR_BPAGE
    -Scroll the field backward a page.
    -.TP 5
    -REQ_SCR_FHPAGE
    -Scroll the field forward half a page.
    -.TP 5
    -REQ_SCR_BHPAGE
    -Scroll the field backward half a page.
    -.sp
    -.TP 5
    -REQ_SCR_FCHAR
    -Scroll the field forward a character.
    -.TP 5
    -REQ_SCR_BCHAR
    -Scroll the field backward a character.
    -.TP 5
    -REQ_SCR_HFLINE
    -Horizontal scroll the field forward a line.
    -.TP 5
    -REQ_SCR_HBLINE
    -Horizontal scroll the field backward a line.
    -.TP 5
    -REQ_SCR_HFHALF
    -Horizontal scroll the field forward half a line.
    -.TP 5
    -REQ_SCR_HBHALF
    -Horizontal scroll the field backward half a line.
    -.sp
    -.TP
    -REQ_VALIDATION
    -Validate field.
    -.TP
    -REQ_NEXT_CHOICE
    -Display next field choice.
    -.TP
    -REQ_PREV_CHOICE
    -Display previous field choice.
    +.TS
    +l l
    +_ _ _
    +l l.
    +\fIName\fR	\fIDescription\fR
    +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.
    +.TE
     .PP
     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.
    -.SS MOUSE HANDLING
    +.SS Mouse handling
     .PP
     If the second argument is the KEY_MOUSE special key, the associated
     mouse event is translated into one of the above pre-defined requests.
    @@ -281,7 +180,7 @@ into a request was done, \fBform_driver\fR returns the result of this request.
     .PP
     If you clicked outside the user window or the mouse event could not be translated
     into a form request an \fBE_REQUEST_DENIED\fR is returned.
    -.SS APPLICATION-DEFINED COMMANDS
    +.SS Application-defined commands
     .PP
     If the second argument is neither printable nor one of the above
     pre-defined form requests, the driver assumes it is an application-specific
    diff --git a/man/ncurses.3x b/man/ncurses.3x
    index b34c1301..76d55c03 100644
    --- a/man/ncurses.3x
    +++ b/man/ncurses.3x
    @@ -27,7 +27,7 @@
     .\" authorization.                                                           *
     .\"***************************************************************************
     .\"
    -.\" $Id: ncurses.3x,v 1.121 2015/07/21 23:49:19 tom Exp $
    +.\" $Id: ncurses.3x,v 1.124 2015/08/08 14:57:51 tom Exp $
     .hy 0
     .TH ncurses 3X ""
     .ie \n(.g .ds `` \(lq
    @@ -444,7 +444,9 @@ is_leaveok/\fBcurs_opaque\fR(3X)*
     is_linetouched/\fBcurs_touch\fR(3X)
     is_nodelay/\fBcurs_opaque\fR(3X)*
     is_notimeout/\fBcurs_opaque\fR(3X)*
    +is_pad/\fBcurs_opaque\fR(3X)*
     is_scrollok/\fBcurs_opaque\fR(3X)*
    +is_subwin/\fBcurs_opaque\fR(3X)*
     is_syncok/\fBcurs_opaque\fR(3X)*
     is_term_resized/\fBresizeterm\fR(3X)*
     is_wintouched/\fBcurs_touch\fR(3X)
    @@ -577,6 +579,7 @@ refresh/\fBcurs_refresh\fR(3X)
     reset_prog_mode/\fBcurs_kernel\fR(3X)
     reset_shell_mode/\fBcurs_kernel\fR(3X)
     resetty/\fBcurs_kernel\fR(3X)
    +resize_term/\fBresizeterm\fR(3X)*
     resizeterm/\fBresizeterm\fR(3X)*
     restartterm/\fBcurs_terminfo\fR(3X)
     ripoffline/\fBcurs_kernel\fR(3X)
    @@ -629,6 +632,7 @@ tgoto/\fBcurs_termcap\fR(3X)
     tigetflag/\fBcurs_terminfo\fR(3X)
     tigetnum/\fBcurs_terminfo\fR(3X)
     tigetstr/\fBcurs_terminfo\fR(3X)
    +tiparm/\fBcurs_terminfo\fR(3X)*
     timeout/\fBcurs_inopts\fR(3X)
     touchline/\fBcurs_touch\fR(3X)
     touchwin/\fBcurs_touch\fR(3X)
    @@ -696,8 +700,11 @@ wget_wch/\fBcurs_get_wch\fR(3X)
     wget_wstr/\fBcurs_get_wstr\fR(3X)
     wgetbkgrnd/\fBcurs_bkgrnd\fR(3X)
     wgetch/\fBcurs_getch\fR(3X)
    +wgetdelay/\fBcurs_opaque\fR(3X)*
     wgetn_wstr/\fBcurs_get_wstr\fR(3X)
     wgetnstr/\fBcurs_getstr\fR(3X)
    +wgetparent/\fBcurs_opaque\fR(3X)*
    +wgetscrreg/\fBcurs_opaque\fR(3X)*
     wgetstr/\fBcurs_getstr\fR(3X)
     whline/\fBcurs_border\fR(3X)
     whline_set/\fBcurs_border_set\fR(3X)
    diff --git a/menu/Makefile.in b/menu/Makefile.in
    index 6ab4e883..9bf1fe3d 100644
    --- a/menu/Makefile.in
    +++ b/menu/Makefile.in
    @@ -1,6 +1,6 @@
    -# $Id: Makefile.in,v 1.63 2015/05/01 00:47:26 tom Exp $
    +# $Id: Makefile.in,v 1.64 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"), #
    @@ -42,7 +42,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES:
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     THIS		= Makefile
     
    diff --git a/misc/Makefile.in b/misc/Makefile.in
    index 127bb9d8..a62eb337 100644
    --- a/misc/Makefile.in
    +++ b/misc/Makefile.in
    @@ -1,6 +1,6 @@
    -# $Id: Makefile.in,v 1.62 2014/09/23 22:12:42 tom Exp $
    +# $Id: Makefile.in,v 1.63 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"), #
    @@ -42,7 +42,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES :
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     THIS		= Makefile
     
    diff --git a/ncurses/Makefile.in b/ncurses/Makefile.in
    index 2b5e1c01..e42c5e3b 100644
    --- a/ncurses/Makefile.in
    +++ b/ncurses/Makefile.in
    @@ -1,6 +1,6 @@
    -# $Id: Makefile.in,v 1.146 2015/01/21 10:24:18 tom Exp $
    +# $Id: Makefile.in,v 1.147 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"), #
    @@ -45,7 +45,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES:
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     THIS		= Makefile
     
    @@ -216,16 +216,16 @@ $(DESTDIR)$(libdir) :
     ../lib : ; mkdir $@
     
     ./fallback.c : $(tinfo)/MKfallback.sh
    -	sh -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@
    +	$(SHELL) -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@
     
     ./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
    -	sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
    +	$(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
     
     init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list
     	./make_keys$(BUILD_EXEEXT) keys.list > $@
     
     keys.list :	$(tinfo)/MKkeys_list.sh
    -	AWK=$(AWK) sh $(tinfo)/MKkeys_list.sh $(TERMINFO_CAPS) | sort >$@
    +	AWK=$(AWK) $(SHELL) $(tinfo)/MKkeys_list.sh $(TERMINFO_CAPS) | sort >$@
     
     make_keys$(BUILD_EXEEXT) : \
     		$(tinfo)/make_keys.c \
    @@ -238,14 +238,14 @@ make_hash$(BUILD_EXEEXT) : \
     	$(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
     
     ./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh
    -	sh -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
    +	$(SHELL) -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
     
     ./comp_captab.c: \
     		make_hash$(BUILD_EXEEXT) \
     		../include/hashsize.h \
     		$(tinfo)/MKcaptab.sh \
     		$(tinfo)/MKcaptab.awk
    -	sh -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(srcdir)/../include/@TERMINFO_CAPS@ > $@
    +	$(SHELL) -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(srcdir)/../include/@TERMINFO_CAPS@ > $@
     
     ./lib_keyname.c: keys.list $(base)/MKkeyname.awk
     	$(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@
    @@ -290,7 +290,7 @@ realclean :: distclean
     test_progs : $(TEST_PROGS)
     
     ./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h
    -	sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
    +	$(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
     
     captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
     	@ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
    diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
    index 9e41cea2..4f7f19de 100755
    --- a/ncurses/base/MKlib_gen.sh
    +++ b/ncurses/base/MKlib_gen.sh
    @@ -2,7 +2,7 @@
     #
     # MKlib_gen.sh -- generate sources from curses.h macro definitions
     #
    -# ($Id: MKlib_gen.sh,v 1.48 2015/07/25 19:02:45 tom Exp $)
    +# ($Id: MKlib_gen.sh,v 1.50 2015/08/07 00:48:24 tom Exp $)
     #
     ##############################################################################
     # Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.                #
    @@ -72,9 +72,9 @@ USE="$3"
     # appears in gcc 5.0 and (with modification) in 5.1, making it necessary to
     # determine if we are using gcc, and if so, what version because the proposed
     # solution uses a nonstandard option.
    -PRG=`echo "$1" | sed -e 's/[[:space:]].*$//'`
    -FSF=`"$PRG" --version 2>/dev/null | fgrep "Free Software Foundation" | head -n 1`
    -ALL=`"$PRG" -dumpversion 2>/dev/null `
    +PRG=`echo "$1" | $AWK '{ sub(/^[[:space:]]*/,""); sub(/[[:space:]].*$/, ""); print; }' || exit 0`
    +FSF=`"$PRG" --version 2>/dev/null || exit 0 | fgrep "Free Software Foundation" | head -n 1`
    +ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0`
     ONE=`echo "$ALL" | sed -e 's/\..*$//'`
     if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then
     	if test $ONE -ge 5 ; then
    diff --git a/ncurses/base/lib_set_term.c b/ncurses/base/lib_set_term.c
    index c51d65b0..f787a882 100644
    --- a/ncurses/base/lib_set_term.c
    +++ b/ncurses/base/lib_set_term.c
    @@ -47,7 +47,7 @@
     #define CUR SP_TERMTYPE
     #endif
     
    -MODULE_ID("$Id: lib_set_term.c,v 1.152 2015/05/02 19:20:18 tom Exp $")
    +MODULE_ID("$Id: lib_set_term.c,v 1.153 2015/08/07 23:57:58 tom Exp $")
     
     #ifdef USE_TERM_DRIVER
     #define MaxColors      InfoOf(sp).maxcolors
    @@ -269,7 +269,7 @@ extract_fgbg(const char *src, int *result)
     }
     #endif
     
    -#define ReturnScreenError() { _nc_set_screen(0); \
    +#define ReturnScreenError() do { _nc_set_screen(0); \
                                 returnCode(ERR); } while (0)
     
     /* OS-independent screen initializations */
    diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
    index d54f6714..2875a59c 100644
    --- a/package/debian-mingw/changelog
    +++ b/package/debian-mingw/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.0+20150725) unstable; urgency=low
    +ncurses6 (6.0+20150808) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Mon, 20 Jul 2015 18:28:06 -0400
    + -- Thomas E. Dickey   Thu, 06 Aug 2015 19:13:39 -0400
     
     ncurses6 (5.9-20131005) unstable; urgency=low
     
    diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
    index d54f6714..2875a59c 100644
    --- a/package/debian-mingw64/changelog
    +++ b/package/debian-mingw64/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.0+20150725) unstable; urgency=low
    +ncurses6 (6.0+20150808) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Mon, 20 Jul 2015 18:28:06 -0400
    + -- Thomas E. Dickey   Thu, 06 Aug 2015 19:13:39 -0400
     
     ncurses6 (5.9-20131005) unstable; urgency=low
     
    diff --git a/package/debian/changelog b/package/debian/changelog
    index 74f768e5..36464e0c 100644
    --- a/package/debian/changelog
    +++ b/package/debian/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.0+20150725) unstable; urgency=low
    +ncurses6 (6.0+20150808) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Mon, 20 Jul 2015 18:28:06 -0400
    + -- Thomas E. Dickey   Thu, 06 Aug 2015 19:13:39 -0400
     
     ncurses6 (5.9-20120608) unstable; urgency=low
     
    diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
    index 6a94dcce..c53544b1 100644
    --- a/package/mingw-ncurses.nsi
    +++ b/package/mingw-ncurses.nsi
    @@ -1,4 +1,4 @@
    -; $Id: mingw-ncurses.nsi,v 1.115 2015/07/20 22:28:06 tom Exp $
    +; $Id: mingw-ncurses.nsi,v 1.117 2015/08/06 23:13:39 tom Exp $
     
     ; TODO add examples
     ; TODO bump ABI to 6
    @@ -10,7 +10,7 @@
     !define VERSION_MAJOR "6"
     !define VERSION_MINOR "0"
     !define VERSION_YYYY  "2015"
    -!define VERSION_MMDD  "0725"
    +!define VERSION_MMDD  "0808"
     !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
     
     !define MY_ABI   "5"
    diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
    index 03a4873f..703d6859 100644
    --- a/package/mingw-ncurses.spec
    +++ b/package/mingw-ncurses.spec
    @@ -3,7 +3,7 @@
     Summary: shared libraries for terminal handling
     Name: mingw32-ncurses6
     Version: 6.0
    -Release: 20150725
    +Release: 20150808
     License: X11
     Group: Development/Libraries
     Source: ncurses-%{version}-%{release}.tgz
    diff --git a/package/ncurses.spec b/package/ncurses.spec
    index a2bfb904..305c70ac 100644
    --- a/package/ncurses.spec
    +++ b/package/ncurses.spec
    @@ -1,7 +1,7 @@
     Summary: shared libraries for terminal handling
     Name: ncurses6
     Version: 6.0
    -Release: 20150725
    +Release: 20150808
     License: X11
     Group: Development/Libraries
     Source: ncurses-%{version}-%{release}.tgz
    diff --git a/panel/Makefile.in b/panel/Makefile.in
    index 43c65bb4..5ed4b02a 100644
    --- a/panel/Makefile.in
    +++ b/panel/Makefile.in
    @@ -1,6 +1,6 @@
    -# $Id: Makefile.in,v 1.68 2015/05/01 00:47:26 tom Exp $
    +# $Id: Makefile.in,v 1.69 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"), #
    @@ -42,7 +42,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES:
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     THIS		= Makefile
     
    diff --git a/progs/Makefile.in b/progs/Makefile.in
    index b50c5bf6..663a5a08 100644
    --- a/progs/Makefile.in
    +++ b/progs/Makefile.in
    @@ -1,4 +1,4 @@
    -# $Id: Makefile.in,v 1.94 2015/05/01 00:47:26 tom Exp $
    +# $Id: Makefile.in,v 1.95 2015/08/05 09:24:06 tom Exp $
     ##############################################################################
     # Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.                #
     #                                                                            #
    @@ -42,7 +42,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES:
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     THIS		= Makefile
     
    @@ -188,7 +188,7 @@ transform.h :
     	echo "#define __TRANSFORM_H 1"					>>$@
     	echo "#include "					>>$@
     	echo "extern bool same_program(const char *, const char *);"	>>$@
    -	-sh -c 'if test -n "$x" ; then echo "#define SUFFIX_IGNORED \"$x\"">>$@; fi'
    +	-$(SHELL) -c 'if test -n "$x" ; then echo "#define SUFFIX_IGNORED \"$x\"">>$@; fi'
     	echo "#define PROG_CAPTOINFO \"$(define_captoinfo)\""		>>$@
     	echo "#define PROG_INFOTOCAP \"$(define_infotocap)\""		>>$@
     	echo "#define PROG_RESET     \"$(define_reset)\""		>>$@
    @@ -282,7 +282,7 @@ tset$x: $(DEPS_TSET) $(DEPS_CURSES) transform.h
     	@ECHO_LD@ $(LINK) $(DEPS_TSET) $(LDFLAGS_TINFO) -o $@
     
     termsort.c: $(srcdir)/MKtermsort.sh
    -	sh $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
    +	$(SHELL) $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
     
     #
     # Utility productions start here
    @@ -298,7 +298,7 @@ mostlyclean ::
     	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
     
     clean :: mostlyclean
    -	-sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
    +	-$(SHELL) -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
     	-rm -f $(AUTO_SRC)
     	-rm -f $(PROGS)
     	-rm -rf .libs *.dSYM
    diff --git a/test/Makefile.in b/test/Makefile.in
    index 15928eb4..2911c7e1 100644
    --- a/test/Makefile.in
    +++ b/test/Makefile.in
    @@ -1,6 +1,6 @@
    -# $Id: Makefile.in,v 1.114 2014/11/15 00:46:05 tom Exp $
    +# $Id: Makefile.in,v 1.115 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"), #
    @@ -34,7 +34,7 @@
     # turn off _all_ suffix rules; we'll generate our own
     .SUFFIXES:
     
    -SHELL		= /bin/sh
    +SHELL		= @SHELL@
     VPATH		= @srcdir@
     
     @SET_MAKE@
    diff --git a/test/aclocal.m4 b/test/aclocal.m4
    index 577f4191..0ea83b55 100644
    --- a/test/aclocal.m4
    +++ b/test/aclocal.m4
    @@ -26,7 +26,7 @@ dnl sale, use or other dealings in this Software without prior written       *
     dnl authorization.                                                           *
     dnl***************************************************************************
     dnl
    -dnl $Id: aclocal.m4,v 1.119 2015/06/06 18:01:51 tom Exp $
    +dnl $Id: aclocal.m4,v 1.120 2015/08/08 14:27:27 tom Exp $
     dnl
     dnl Author: Thomas E. Dickey
     dnl
    @@ -1912,7 +1912,7 @@ printf("old\n");
     	,[$1=no])
     ])dnl
     dnl ---------------------------------------------------------------------------
    -dnl CF_NCURSES_CONFIG version: 16 updated: 2015/06/06 14:00:48
    +dnl CF_NCURSES_CONFIG version: 17 updated: 2015/07/07 04:22:07
     dnl -----------------
     dnl Tie together the configure-script macros for ncurses, preferring these in
     dnl order:
    @@ -1926,7 +1926,7 @@ AC_REQUIRE([CF_PKG_CONFIG])
     cf_ncuconfig_root=ifelse($1,,ncurses,$1)
     cf_have_ncuconfig=no
     
    -if test "x$PKG_CONFIG" != xnone; then
    +if test "x${PKG_CONFIG:=none}" != xnone; then
     	AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
     	if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
     		AC_MSG_RESULT(yes)
    diff --git a/test/configure b/test/configure
    index 45e25162..29e858ca 100755
    --- a/test/configure
    +++ b/test/configure
    @@ -6071,7 +6071,7 @@ fi
     cf_ncuconfig_root=$cf_cv_screen
     cf_have_ncuconfig=no
     
    -if test "x$PKG_CONFIG" != xnone; then
    +if test "x${PKG_CONFIG:=none}" != xnone; then
     	echo "$as_me:6075: 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
    @@ -7609,7 +7609,7 @@ fi
     cf_ncuconfig_root=$cf_cv_screen
     cf_have_ncuconfig=no
     
    -if test "x$PKG_CONFIG" != xnone; then
    +if test "x${PKG_CONFIG:=none}" != xnone; then
     	echo "$as_me:7613: 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
    @@ -15659,8 +15659,8 @@ fi
     	fi
     fi
     
    -echo "$as_me:15662: checking for data boolnames declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
    -echo $ECHO_N "checking for data boolnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
    +echo "$as_me:15662: checking for data ospeed declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
    +echo $ECHO_N "checking for data ospeed declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
     
     cat >conftest.$ac_ext <<_ACEOF
     #line 15666 "configure"
    @@ -15684,7 +15684,7 @@ int
     main ()
     {
     
    -void *foo = &(boolnames)
    +void *foo = &(ospeed)
     
       ;
       return 0;
    @@ -15714,15 +15714,15 @@ echo "${ECHO_T}$cf_result" >&6
     
     if test $cf_result = yes ; then
     
    -cf_result=`echo "have_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
    +cf_result=`echo "have_curses_data_ospeed" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
     
     	cat >>confdefs.h <&5
    -echo $ECHO_N "checking for data boolnames in library... $ECHO_C" >&6
    +	echo "$as_me:15724: checking for data ospeed in library" >&5
    +echo $ECHO_N "checking for data ospeed in library... $ECHO_C" >&6
     	# BSD linkers insist on making weak linkage, but resolve at runtime.
     	if test "$cross_compiling" = yes; then
     
    @@ -15745,14 +15745,14 @@ char * XCursesProgramName = "test";
     #endif
     #endif
     
    -extern char boolnames;
    +extern char ospeed;
     int
     main ()
     {
     
     	do {
    -		void *foo = &(boolnames);
    -		fprintf(stderr, "testing linkage of boolnames:%p\n", foo);
    +		void *foo = &(ospeed);
    +		fprintf(stderr, "testing linkage of ospeed:%p\n", foo);
     		${cf_cv_main_return:-return}(foo == 0);
     	} while (0)
     
    @@ -15799,11 +15799,11 @@ char * XCursesProgramName = "test";
     #endif
     #endif
     
    -extern char boolnames;
    +extern char ospeed;
     int main(void)
     {
    -	void *foo = &(boolnames);
    -	fprintf(stderr, "testing linkage of boolnames:%p\n", foo);
    +	void *foo = &(ospeed);
    +	fprintf(stderr, "testing linkage of ospeed:%p\n", foo);
     	${cf_cv_main_return:-return}(foo == 0);
     }
     _ACEOF
    @@ -15831,7 +15831,7 @@ fi
     echo "${ECHO_T}$cf_result" >&6
     	if test $cf_result = yes ; then
     
    -cf_result=`echo "decl_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
    +cf_result=`echo "decl_curses_data_ospeed" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
     
     		cat >>confdefs.h <&5
    -echo $ECHO_N "checking for data boolfnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
    +echo "$as_me:15843: checking for data boolnames declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
    +echo $ECHO_N "checking for data boolnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
     
     cat >conftest.$ac_ext <<_ACEOF
     #line 15847 "configure"
    @@ -15865,7 +15865,7 @@ int
     main ()
     {
     
    -void *foo = &(boolfnames)
    +void *foo = &(boolnames)
     
       ;
       return 0;
    @@ -15895,15 +15895,15 @@ echo "${ECHO_T}$cf_result" >&6
     
     if test $cf_result = yes ; then
     
    -cf_result=`echo "have_curses_data_boolfnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
    +cf_result=`echo "have_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
     
     	cat >>confdefs.h <&5
    -echo $ECHO_N "checking for data boolfnames in library... $ECHO_C" >&6
    +	echo "$as_me:15905: checking for data boolnames in library" >&5
    +echo $ECHO_N "checking for data boolnames in library... $ECHO_C" >&6
     	# BSD linkers insist on making weak linkage, but resolve at runtime.
     	if test "$cross_compiling" = yes; then
     
    @@ -15926,14 +15926,14 @@ char * XCursesProgramName = "test";
     #endif
     #endif
     
    -extern char boolfnames;
    +extern char boolnames;
     int
     main ()
     {
     
     	do {
    -		void *foo = &(boolfnames);
    -		fprintf(stderr, "testing linkage of boolfnames:%p\n", foo);
    +		void *foo = &(boolnames);
    +		fprintf(stderr, "testing linkage of boolnames:%p\n", foo);
     		${cf_cv_main_return:-return}(foo == 0);
     	} while (0)
     
    @@ -15980,11 +15980,11 @@ char * XCursesProgramName = "test";
     #endif
     #endif
     
    -extern char boolfnames;
    +extern char boolnames;
     int main(void)
     {
    -	void *foo = &(boolfnames);
    -	fprintf(stderr, "testing linkage of boolfnames:%p\n", foo);
    +	void *foo = &(boolnames);
    +	fprintf(stderr, "testing linkage of boolnames:%p\n", foo);
     	${cf_cv_main_return:-return}(foo == 0);
     }
     _ACEOF
    @@ -16012,6 +16012,187 @@ fi
     echo "${ECHO_T}$cf_result" >&6
     	if test $cf_result = yes ; then
     
    +cf_result=`echo "decl_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
    +
    +		cat >>confdefs.h <&5
    +echo $ECHO_N "checking for data boolfnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
    +
    +cat >conftest.$ac_ext <<_ACEOF
    +#line 16028 "configure"
    +#include "confdefs.h"
    +
    +#ifdef HAVE_XCURSES
    +#include 
    +char * XCursesProgramName = "test";
    +#else
    +#include <${cf_cv_ncurses_header:-curses.h}>
    +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
    +#include 
    +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
    +#include 
    +#elif defined(HAVE_TERM_H)
    +#include 
    +#endif
    +#endif
    +
    +int
    +main ()
    +{
    +
    +void *foo = &(boolfnames)
    +
    +  ;
    +  return 0;
    +}
    +_ACEOF
    +rm -f conftest.$ac_objext
    +if { (eval echo "$as_me:16056: \"$ac_compile\"") >&5
    +  (eval $ac_compile) 2>&5
    +  ac_status=$?
    +  echo "$as_me:16059: \$? = $ac_status" >&5
    +  (exit $ac_status); } &&
    +         { ac_try='test -s conftest.$ac_objext'
    +  { (eval echo "$as_me:16062: \"$ac_try\"") >&5
    +  (eval $ac_try) 2>&5
    +  ac_status=$?
    +  echo "$as_me:16065: \$? = $ac_status" >&5
    +  (exit $ac_status); }; }; then
    +  cf_result=yes
    +else
    +  echo "$as_me: failed program was:" >&5
    +cat conftest.$ac_ext >&5
    +cf_result=no
    +fi
    +rm -f conftest.$ac_objext conftest.$ac_ext
    +echo "$as_me:16074: result: $cf_result" >&5
    +echo "${ECHO_T}$cf_result" >&6
    +
    +if test $cf_result = yes ; then
    +
    +cf_result=`echo "have_curses_data_boolfnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
    +
    +	cat >>confdefs.h <&5
    +echo $ECHO_N "checking for data boolfnames in library... $ECHO_C" >&6
    +	# BSD linkers insist on making weak linkage, but resolve at runtime.
    +	if test "$cross_compiling" = yes; then
    +
    +	# cross-compiling
    +	cat >conftest.$ac_ext <<_ACEOF
    +#line 16093 "configure"
    +#include "confdefs.h"
    +
    +#ifdef HAVE_XCURSES
    +#include 
    +char * XCursesProgramName = "test";
    +#else
    +#include <${cf_cv_ncurses_header:-curses.h}>
    +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
    +#include 
    +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
    +#include 
    +#elif defined(HAVE_TERM_H)
    +#include 
    +#endif
    +#endif
    +
    +extern char boolfnames;
    +int
    +main ()
    +{
    +
    +	do {
    +		void *foo = &(boolfnames);
    +		fprintf(stderr, "testing linkage of boolfnames:%p\n", foo);
    +		${cf_cv_main_return:-return}(foo == 0);
    +	} while (0)
    +
    +  ;
    +  return 0;
    +}
    +_ACEOF
    +rm -f conftest.$ac_objext conftest$ac_exeext
    +if { (eval echo "$as_me:16126: \"$ac_link\"") >&5
    +  (eval $ac_link) 2>&5
    +  ac_status=$?
    +  echo "$as_me:16129: \$? = $ac_status" >&5
    +  (exit $ac_status); } &&
    +         { ac_try='test -s conftest$ac_exeext'
    +  { (eval echo "$as_me:16132: \"$ac_try\"") >&5
    +  (eval $ac_try) 2>&5
    +  ac_status=$?
    +  echo "$as_me:16135: \$? = $ac_status" >&5
    +  (exit $ac_status); }; }; then
    +  cf_result=yes
    +else
    +  echo "$as_me: failed program was:" >&5
    +cat conftest.$ac_ext >&5
    +cf_result=no
    +fi
    +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
    +
    +else
    +  cat >conftest.$ac_ext <<_ACEOF
    +#line 16147 "configure"
    +#include "confdefs.h"
    +
    +#ifdef HAVE_XCURSES
    +#include 
    +char * XCursesProgramName = "test";
    +#else
    +#include <${cf_cv_ncurses_header:-curses.h}>
    +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
    +#include 
    +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
    +#include 
    +#elif defined(HAVE_TERM_H)
    +#include 
    +#endif
    +#endif
    +
    +extern char boolfnames;
    +int main(void)
    +{
    +	void *foo = &(boolfnames);
    +	fprintf(stderr, "testing linkage of boolfnames:%p\n", foo);
    +	${cf_cv_main_return:-return}(foo == 0);
    +}
    +_ACEOF
    +rm -f conftest$ac_exeext
    +if { (eval echo "$as_me:16173: \"$ac_link\"") >&5
    +  (eval $ac_link) 2>&5
    +  ac_status=$?
    +  echo "$as_me:16176: \$? = $ac_status" >&5
    +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
    +  { (eval echo "$as_me:16178: \"$ac_try\"") >&5
    +  (eval $ac_try) 2>&5
    +  ac_status=$?
    +  echo "$as_me:16181: \$? = $ac_status" >&5
    +  (exit $ac_status); }; }; then
    +  cf_result=yes
    +else
    +  echo "$as_me: program exited with status $ac_status" >&5
    +echo "$as_me: failed program was:" >&5
    +cat conftest.$ac_ext >&5
    +cf_result=no
    +fi
    +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
    +fi
    +	echo "$as_me:16192: result: $cf_result" >&5
    +echo "${ECHO_T}$cf_result" >&6
    +	if test $cf_result = yes ; then
    +
     cf_result=`echo "decl_curses_data_boolfnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
     
     		cat >>confdefs.h <&5
    +echo "$as_me:16207: checking if you want to turn on gcc warnings" >&5
     echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6
     
     # Check whether --enable-warnings or --disable-warnings was given.
    @@ -16040,7 +16221,7 @@ else
     	with_warnings=no
     
     fi;
    -echo "$as_me:16043: result: $with_warnings" >&5
    +echo "$as_me:16224: result: $with_warnings" >&5
     echo "${ECHO_T}$with_warnings" >&6
     if test "$with_warnings" = "yes"
     then
    @@ -16063,10 +16244,10 @@ cat > conftest.i <&5
    +	{ echo "$as_me:16247: checking for $CC __attribute__ directives..." >&5
     echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
     cat > conftest.$ac_ext <&5
    +		if { (eval echo "$as_me:16299: \"$ac_compile\"") >&5
       (eval $ac_compile) 2>&5
       ac_status=$?
    -  echo "$as_me:16121: \$? = $ac_status" >&5
    +  echo "$as_me:16302: \$? = $ac_status" >&5
       (exit $ac_status); }; then
    -			test -n "$verbose" && echo "$as_me:16123: result: ... $cf_attribute" >&5
    +			test -n "$verbose" && echo "$as_me:16304: result: ... $cf_attribute" >&5
     echo "${ECHO_T}... $cf_attribute" >&6
     			cat conftest.h >>confdefs.h
     			case $cf_attribute in
    @@ -16184,12 +16365,12 @@ INTEL_COMPILER=no
     if test "$GCC" = yes ; then
     	case $host_os in
     	(linux*|gnu*)
    -		echo "$as_me:16187: checking if this is really Intel C compiler" >&5
    +		echo "$as_me:16368: checking if this is really Intel C compiler" >&5
     echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
     		cf_save_CFLAGS="$CFLAGS"
     		CFLAGS="$CFLAGS -no-gcc"
     		cat >conftest.$ac_ext <<_ACEOF
    -#line 16192 "configure"
    +#line 16373 "configure"
     #include "confdefs.h"
     
     int
    @@ -16206,16 +16387,16 @@ make an error
     }
     _ACEOF
     rm -f conftest.$ac_objext
    -if { (eval echo "$as_me:16209: \"$ac_compile\"") >&5
    +if { (eval echo "$as_me:16390: \"$ac_compile\"") >&5
       (eval $ac_compile) 2>&5
       ac_status=$?
    -  echo "$as_me:16212: \$? = $ac_status" >&5
    +  echo "$as_me:16393: \$? = $ac_status" >&5
       (exit $ac_status); } &&
              { ac_try='test -s conftest.$ac_objext'
    -  { (eval echo "$as_me:16215: \"$ac_try\"") >&5
    +  { (eval echo "$as_me:16396: \"$ac_try\"") >&5
       (eval $ac_try) 2>&5
       ac_status=$?
    -  echo "$as_me:16218: \$? = $ac_status" >&5
    +  echo "$as_me:16399: \$? = $ac_status" >&5
       (exit $ac_status); }; }; then
       INTEL_COMPILER=yes
     cf_save_CFLAGS="$cf_save_CFLAGS -we147"
    @@ -16226,7 +16407,7 @@ cat conftest.$ac_ext >&5
     fi
     rm -f conftest.$ac_objext conftest.$ac_ext
     		CFLAGS="$cf_save_CFLAGS"
    -		echo "$as_me:16229: result: $INTEL_COMPILER" >&5
    +		echo "$as_me:16410: result: $INTEL_COMPILER" >&5
     echo "${ECHO_T}$INTEL_COMPILER" >&6
     		;;
     	esac
    @@ -16235,12 +16416,12 @@ fi
     CLANG_COMPILER=no
     
     if test "$GCC" = yes ; then
    -	echo "$as_me:16238: checking if this is really Clang C compiler" >&5
    +	echo "$as_me:16419: checking if this is really Clang C compiler" >&5
     echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
     	cf_save_CFLAGS="$CFLAGS"
     	CFLAGS="$CFLAGS -Qunused-arguments"
     	cat >conftest.$ac_ext <<_ACEOF
    -#line 16243 "configure"
    +#line 16424 "configure"
     #include "confdefs.h"
     
     int
    @@ -16257,16 +16438,16 @@ make an error
     }
     _ACEOF
     rm -f conftest.$ac_objext
    -if { (eval echo "$as_me:16260: \"$ac_compile\"") >&5
    +if { (eval echo "$as_me:16441: \"$ac_compile\"") >&5
       (eval $ac_compile) 2>&5
       ac_status=$?
    -  echo "$as_me:16263: \$? = $ac_status" >&5
    +  echo "$as_me:16444: \$? = $ac_status" >&5
       (exit $ac_status); } &&
              { ac_try='test -s conftest.$ac_objext'
    -  { (eval echo "$as_me:16266: \"$ac_try\"") >&5
    +  { (eval echo "$as_me:16447: \"$ac_try\"") >&5
       (eval $ac_try) 2>&5
       ac_status=$?
    -  echo "$as_me:16269: \$? = $ac_status" >&5
    +  echo "$as_me:16450: \$? = $ac_status" >&5
       (exit $ac_status); }; }; then
       CLANG_COMPILER=yes
     cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
    @@ -16277,12 +16458,12 @@ cat conftest.$ac_ext >&5
     fi
     rm -f conftest.$ac_objext conftest.$ac_ext
     	CFLAGS="$cf_save_CFLAGS"
    -	echo "$as_me:16280: result: $CLANG_COMPILER" >&5
    +	echo "$as_me:16461: result: $CLANG_COMPILER" >&5
     echo "${ECHO_T}$CLANG_COMPILER" >&6
     fi
     
     cat > conftest.$ac_ext <&5
    +	{ echo "$as_me:16483: checking for $CC warning options..." >&5
     echo "$as_me: checking for $CC warning options..." >&6;}
     	cf_save_CFLAGS="$CFLAGS"
     	EXTRA_CFLAGS="-Wall"
    @@ -16315,12 +16496,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
     		wd981
     	do
     		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
    -		if { (eval echo "$as_me:16318: \"$ac_compile\"") >&5
    +		if { (eval echo "$as_me:16499: \"$ac_compile\"") >&5
       (eval $ac_compile) 2>&5
       ac_status=$?
    -  echo "$as_me:16321: \$? = $ac_status" >&5
    +  echo "$as_me:16502: \$? = $ac_status" >&5
       (exit $ac_status); }; then
    -			test -n "$verbose" && echo "$as_me:16323: result: ... -$cf_opt" >&5
    +			test -n "$verbose" && echo "$as_me:16504: result: ... -$cf_opt" >&5
     echo "${ECHO_T}... -$cf_opt" >&6
     			EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
     		fi
    @@ -16329,7 +16510,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
     
     elif test "$GCC" = yes
     then
    -	{ echo "$as_me:16332: checking for $CC warning options..." >&5
    +	{ echo "$as_me:16513: checking for $CC warning options..." >&5
     echo "$as_me: checking for $CC warning options..." >&6;}
     	cf_save_CFLAGS="$CFLAGS"
     	EXTRA_CFLAGS=
    @@ -16353,12 +16534,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
     		Wundef $cf_gcc_warnings $cf_warn_CONST
     	do
     		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
    -		if { (eval echo "$as_me:16356: \"$ac_compile\"") >&5
    +		if { (eval echo "$as_me:16537: \"$ac_compile\"") >&5
       (eval $ac_compile) 2>&5
       ac_status=$?
    -  echo "$as_me:16359: \$? = $ac_status" >&5
    +  echo "$as_me:16540: \$? = $ac_status" >&5
       (exit $ac_status); }; then
    -			test -n "$verbose" && echo "$as_me:16361: result: ... -$cf_opt" >&5
    +			test -n "$verbose" && echo "$as_me:16542: result: ... -$cf_opt" >&5
     echo "${ECHO_T}... -$cf_opt" >&6
     			case $cf_opt in
     			(Wcast-qual)
    @@ -16369,7 +16550,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
     				([34].*)
     					test -n "$verbose" && echo "	feature is broken in gcc $GCC_VERSION" 1>&6
     
    -echo "${as_me:-configure}:16372: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
    +echo "${as_me:-configure}:16553: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
     
     					continue;;
     				esac
    @@ -16379,7 +16560,7 @@ echo "${as_me:-configure}:16372: testing feature is broken in gcc $GCC_VERSION .
     				([12].*)
     					test -n "$verbose" && echo "	feature is broken in gcc $GCC_VERSION" 1>&6
     
    -echo "${as_me:-configure}:16382: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
    +echo "${as_me:-configure}:16563: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
     
     					continue;;
     				esac
    @@ -16395,7 +16576,7 @@ rm -rf conftest*
     fi
     fi
     
    -echo "$as_me:16398: checking if you want to use dmalloc for testing" >&5
    +echo "$as_me:16579: checking if you want to use dmalloc for testing" >&5
     echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6
     
     # Check whether --with-dmalloc or --without-dmalloc was given.
    @@ -16412,7 +16593,7 @@ EOF
     else
       with_dmalloc=
     fi;
    -echo "$as_me:16415: result: ${with_dmalloc:-no}" >&5
    +echo "$as_me:16596: result: ${with_dmalloc:-no}" >&5
     echo "${ECHO_T}${with_dmalloc:-no}" >&6
     
     case .$with_cflags in
    @@ -16506,23 +16687,23 @@ fi
     esac
     
     if test "$with_dmalloc" = yes ; then
    -	echo "$as_me:16509: checking for dmalloc.h" >&5
    +	echo "$as_me:16690: checking for dmalloc.h" >&5
     echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6
     if test "${ac_cv_header_dmalloc_h+set}" = set; then
       echo $ECHO_N "(cached) $ECHO_C" >&6
     else
       cat >conftest.$ac_ext <<_ACEOF
    -#line 16515 "configure"
    +#line 16696 "configure"
     #include "confdefs.h"
     #include 
     _ACEOF
    -if { (eval echo "$as_me:16519: \"$ac_cpp conftest.$ac_ext\"") >&5
    +if { (eval echo "$as_me:16700: \"$ac_cpp conftest.$ac_ext\"") >&5
       (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
       ac_status=$?
       egrep -v '^ *\+' conftest.er1 >conftest.err
       rm -f conftest.er1
       cat conftest.err >&5
    -  echo "$as_me:16525: \$? = $ac_status" >&5
    +  echo "$as_me:16706: \$? = $ac_status" >&5
       (exit $ac_status); } >/dev/null; then
       if test -s conftest.err; then
         ac_cpp_err=$ac_c_preproc_warn_flag
    @@ -16541,11 +16722,11 @@ else
     fi
     rm -f conftest.err conftest.$ac_ext
     fi
    -echo "$as_me:16544: result: $ac_cv_header_dmalloc_h" >&5
    +echo "$as_me:16725: result: $ac_cv_header_dmalloc_h" >&5
     echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6
     if test $ac_cv_header_dmalloc_h = yes; then
     
    -echo "$as_me:16548: checking for dmalloc_debug in -ldmalloc" >&5
    +echo "$as_me:16729: checking for dmalloc_debug in -ldmalloc" >&5
     echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6
     if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then
       echo $ECHO_N "(cached) $ECHO_C" >&6
    @@ -16553,7 +16734,7 @@ else
       ac_check_lib_save_LIBS=$LIBS
     LIBS="-ldmalloc  $LIBS"
     cat >conftest.$ac_ext <<_ACEOF
    -#line 16556 "configure"
    +#line 16737 "configure"
     #include "confdefs.h"
     
     /* Override any gcc2 internal prototype to avoid an error.  */
    @@ -16572,16 +16753,16 @@ dmalloc_debug ();
     }
     _ACEOF
     rm -f conftest.$ac_objext conftest$ac_exeext
    -if { (eval echo "$as_me:16575: \"$ac_link\"") >&5
    +if { (eval echo "$as_me:16756: \"$ac_link\"") >&5
       (eval $ac_link) 2>&5
       ac_status=$?
    -  echo "$as_me:16578: \$? = $ac_status" >&5
    +  echo "$as_me:16759: \$? = $ac_status" >&5
       (exit $ac_status); } &&
              { ac_try='test -s conftest$ac_exeext'
    -  { (eval echo "$as_me:16581: \"$ac_try\"") >&5
    +  { (eval echo "$as_me:16762: \"$ac_try\"") >&5
       (eval $ac_try) 2>&5
       ac_status=$?
    -  echo "$as_me:16584: \$? = $ac_status" >&5
    +  echo "$as_me:16765: \$? = $ac_status" >&5
       (exit $ac_status); }; }; then
       ac_cv_lib_dmalloc_dmalloc_debug=yes
     else
    @@ -16592,7 +16773,7 @@ fi
     rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
     LIBS=$ac_check_lib_save_LIBS
     fi
    -echo "$as_me:16595: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
    +echo "$as_me:16776: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
     echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6
     if test $ac_cv_lib_dmalloc_dmalloc_debug = yes; then
       cat >>confdefs.h <&5
    +echo "$as_me:16791: checking if you want to use dbmalloc for testing" >&5
     echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6
     
     # Check whether --with-dbmalloc or --without-dbmalloc was given.
    @@ -16624,7 +16805,7 @@ EOF
     else
       with_dbmalloc=
     fi;
    -echo "$as_me:16627: result: ${with_dbmalloc:-no}" >&5
    +echo "$as_me:16808: result: ${with_dbmalloc:-no}" >&5
     echo "${ECHO_T}${with_dbmalloc:-no}" >&6
     
     case .$with_cflags in
    @@ -16718,23 +16899,23 @@ fi
     esac
     
     if test "$with_dbmalloc" = yes ; then
    -	echo "$as_me:16721: checking for dbmalloc.h" >&5
    +	echo "$as_me:16902: checking for dbmalloc.h" >&5
     echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6
     if test "${ac_cv_header_dbmalloc_h+set}" = set; then
       echo $ECHO_N "(cached) $ECHO_C" >&6
     else
       cat >conftest.$ac_ext <<_ACEOF
    -#line 16727 "configure"
    +#line 16908 "configure"
     #include "confdefs.h"
     #include 
     _ACEOF
    -if { (eval echo "$as_me:16731: \"$ac_cpp conftest.$ac_ext\"") >&5
    +if { (eval echo "$as_me:16912: \"$ac_cpp conftest.$ac_ext\"") >&5
       (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
       ac_status=$?
       egrep -v '^ *\+' conftest.er1 >conftest.err
       rm -f conftest.er1
       cat conftest.err >&5
    -  echo "$as_me:16737: \$? = $ac_status" >&5
    +  echo "$as_me:16918: \$? = $ac_status" >&5
       (exit $ac_status); } >/dev/null; then
       if test -s conftest.err; then
         ac_cpp_err=$ac_c_preproc_warn_flag
    @@ -16753,11 +16934,11 @@ else
     fi
     rm -f conftest.err conftest.$ac_ext
     fi
    -echo "$as_me:16756: result: $ac_cv_header_dbmalloc_h" >&5
    +echo "$as_me:16937: result: $ac_cv_header_dbmalloc_h" >&5
     echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6
     if test $ac_cv_header_dbmalloc_h = yes; then
     
    -echo "$as_me:16760: checking for debug_malloc in -ldbmalloc" >&5
    +echo "$as_me:16941: checking for debug_malloc in -ldbmalloc" >&5
     echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6
     if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then
       echo $ECHO_N "(cached) $ECHO_C" >&6
    @@ -16765,7 +16946,7 @@ else
       ac_check_lib_save_LIBS=$LIBS
     LIBS="-ldbmalloc  $LIBS"
     cat >conftest.$ac_ext <<_ACEOF
    -#line 16768 "configure"
    +#line 16949 "configure"
     #include "confdefs.h"
     
     /* Override any gcc2 internal prototype to avoid an error.  */
    @@ -16784,16 +16965,16 @@ debug_malloc ();
     }
     _ACEOF
     rm -f conftest.$ac_objext conftest$ac_exeext
    -if { (eval echo "$as_me:16787: \"$ac_link\"") >&5
    +if { (eval echo "$as_me:16968: \"$ac_link\"") >&5
       (eval $ac_link) 2>&5
       ac_status=$?
    -  echo "$as_me:16790: \$? = $ac_status" >&5
    +  echo "$as_me:16971: \$? = $ac_status" >&5
       (exit $ac_status); } &&
              { ac_try='test -s conftest$ac_exeext'
    -  { (eval echo "$as_me:16793: \"$ac_try\"") >&5
    +  { (eval echo "$as_me:16974: \"$ac_try\"") >&5
       (eval $ac_try) 2>&5
       ac_status=$?
    -  echo "$as_me:16796: \$? = $ac_status" >&5
    +  echo "$as_me:16977: \$? = $ac_status" >&5
       (exit $ac_status); }; }; then
       ac_cv_lib_dbmalloc_debug_malloc=yes
     else
    @@ -16804,7 +16985,7 @@ fi
     rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
     LIBS=$ac_check_lib_save_LIBS
     fi
    -echo "$as_me:16807: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
    +echo "$as_me:16988: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
     echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6
     if test $ac_cv_lib_dbmalloc_debug_malloc = yes; then
       cat >>confdefs.h <&5
    +echo "$as_me:17003: checking if you want to use valgrind for testing" >&5
     echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6
     
     # Check whether --with-valgrind or --without-valgrind was given.
    @@ -16836,7 +17017,7 @@ EOF
     else
       with_valgrind=
     fi;
    -echo "$as_me:16839: result: ${with_valgrind:-no}" >&5
    +echo "$as_me:17020: result: ${with_valgrind:-no}" >&5
     echo "${ECHO_T}${with_valgrind:-no}" >&6
     
     case .$with_cflags in
    @@ -16929,7 +17110,7 @@ fi
     	;;
     esac
     
    -echo "$as_me:16932: checking if you want to perform memory-leak testing" >&5
    +echo "$as_me:17113: checking if you want to perform memory-leak testing" >&5
     echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6
     
     # Check whether --enable-leaks or --disable-leaks was given.
    @@ -16939,7 +17120,7 @@ if test "${enable_leaks+set}" = set; then
     else
       : ${with_no_leaks:=no}
     fi;
    -echo "$as_me:16942: result: $with_no_leaks" >&5
    +echo "$as_me:17123: result: $with_no_leaks" >&5
     echo "${ECHO_T}$with_no_leaks" >&6
     
     if test "$with_no_leaks" = yes ; then
    @@ -16955,7 +17136,7 @@ EOF
     fi
     
     LD_RPATH_OPT=
    -echo "$as_me:16958: checking for an rpath option" >&5
    +echo "$as_me:17139: checking for an rpath option" >&5
     echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
     case $cf_cv_system_name in
     (irix*)
    @@ -16986,12 +17167,12 @@ case $cf_cv_system_name in
     (*)
     	;;
     esac
    -echo "$as_me:16989: result: $LD_RPATH_OPT" >&5
    +echo "$as_me:17170: result: $LD_RPATH_OPT" >&5
     echo "${ECHO_T}$LD_RPATH_OPT" >&6
     
     case "x$LD_RPATH_OPT" in
     (x-R*)
    -	echo "$as_me:16994: checking if we need a space after rpath option" >&5
    +	echo "$as_me:17175: checking if we need a space after rpath option" >&5
     echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
     	cf_save_LIBS="$LIBS"
     
    @@ -17012,7 +17193,7 @@ done
     LIBS="$cf_add_libs"
     
     	cat >conftest.$ac_ext <<_ACEOF
    -#line 17015 "configure"
    +#line 17196 "configure"
     #include "confdefs.h"
     
     int
    @@ -17024,16 +17205,16 @@ main ()
     }
     _ACEOF
     rm -f conftest.$ac_objext conftest$ac_exeext
    -if { (eval echo "$as_me:17027: \"$ac_link\"") >&5
    +if { (eval echo "$as_me:17208: \"$ac_link\"") >&5
       (eval $ac_link) 2>&5
       ac_status=$?
    -  echo "$as_me:17030: \$? = $ac_status" >&5
    +  echo "$as_me:17211: \$? = $ac_status" >&5
       (exit $ac_status); } &&
              { ac_try='test -s conftest$ac_exeext'
    -  { (eval echo "$as_me:17033: \"$ac_try\"") >&5
    +  { (eval echo "$as_me:17214: \"$ac_try\"") >&5
       (eval $ac_try) 2>&5
       ac_status=$?
    -  echo "$as_me:17036: \$? = $ac_status" >&5
    +  echo "$as_me:17217: \$? = $ac_status" >&5
       (exit $ac_status); }; }; then
       cf_rpath_space=no
     else
    @@ -17043,13 +17224,13 @@ cf_rpath_space=yes
     fi
     rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
     	LIBS="$cf_save_LIBS"
    -	echo "$as_me:17046: result: $cf_rpath_space" >&5
    +	echo "$as_me:17227: result: $cf_rpath_space" >&5
     echo "${ECHO_T}$cf_rpath_space" >&6
     	test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
     	;;
     esac
     
    -echo "$as_me:17052: checking if rpath-hack should be disabled" >&5
    +echo "$as_me:17233: checking if rpath-hack should be disabled" >&5
     echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6
     
     # Check whether --enable-rpath-hack or --disable-rpath-hack was given.
    @@ -17066,21 +17247,21 @@ else
     	cf_disable_rpath_hack=no
     
     fi;
    -echo "$as_me:17069: result: $cf_disable_rpath_hack" >&5
    +echo "$as_me:17250: result: $cf_disable_rpath_hack" >&5
     echo "${ECHO_T}$cf_disable_rpath_hack" >&6
     if test "$cf_disable_rpath_hack" = no ; then
     
    -echo "$as_me:17073: checking for updated LDFLAGS" >&5
    +echo "$as_me:17254: checking for updated LDFLAGS" >&5
     echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6
     if test -n "$LD_RPATH_OPT" ; then
    -	echo "$as_me:17076: result: maybe" >&5
    +	echo "$as_me:17257: result: maybe" >&5
     echo "${ECHO_T}maybe" >&6
     
     	for ac_prog in ldd
     do
       # Extract the first word of "$ac_prog", so it can be a program name with args.
     set dummy $ac_prog; ac_word=$2
    -echo "$as_me:17083: checking for $ac_word" >&5
    +echo "$as_me:17264: checking for $ac_word" >&5
     echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
     if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then
       echo $ECHO_N "(cached) $ECHO_C" >&6
    @@ -17095,7 +17276,7 @@ for ac_dir in $ac_dummy; do
       test -z "$ac_dir" && ac_dir=.
       $as_executable_p "$ac_dir/$ac_word" || continue
     ac_cv_prog_cf_ldd_prog="$ac_prog"
    -echo "$as_me:17098: found $ac_dir/$ac_word" >&5
    +echo "$as_me:17279: found $ac_dir/$ac_word" >&5
     break
     done
     
    @@ -17103,10 +17284,10 @@ fi
     fi
     cf_ldd_prog=$ac_cv_prog_cf_ldd_prog
     if test -n "$cf_ldd_prog"; then
    -  echo "$as_me:17106: result: $cf_ldd_prog" >&5
    +  echo "$as_me:17287: result: $cf_ldd_prog" >&5
     echo "${ECHO_T}$cf_ldd_prog" >&6
     else
    -  echo "$as_me:17109: result: no" >&5
    +  echo "$as_me:17290: result: no" >&5
     echo "${ECHO_T}no" >&6
     fi
     
    @@ -17120,7 +17301,7 @@ test -n "$cf_ldd_prog" || cf_ldd_prog="no"
     		cf_rpath_oops=
     
     cat >conftest.$ac_ext <<_ACEOF
    -#line 17123 "configure"
    +#line 17304 "configure"
     #include "confdefs.h"
     #include 
     int
    @@ -17132,16 +17313,16 @@ printf("Hello");
     }
     _ACEOF
     rm -f conftest.$ac_objext conftest$ac_exeext
    -if { (eval echo "$as_me:17135: \"$ac_link\"") >&5
    +if { (eval echo "$as_me:17316: \"$ac_link\"") >&5
       (eval $ac_link) 2>&5
       ac_status=$?
    -  echo "$as_me:17138: \$? = $ac_status" >&5
    +  echo "$as_me:17319: \$? = $ac_status" >&5
       (exit $ac_status); } &&
              { ac_try='test -s conftest$ac_exeext'
    -  { (eval echo "$as_me:17141: \"$ac_try\"") >&5
    +  { (eval echo "$as_me:17322: \"$ac_try\"") >&5
       (eval $ac_try) 2>&5
       ac_status=$?
    -  echo "$as_me:17144: \$? = $ac_status" >&5
    +  echo "$as_me:17325: \$? = $ac_status" >&5
       (exit $ac_status); }; }; then
       cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
     		 cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[ 	]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq`
    @@ -17169,7 +17350,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
     					then
     						test -n "$verbose" && echo "	...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6
     
    -echo "${as_me:-configure}:17172: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
    +echo "${as_me:-configure}:17353: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
     
     						LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
     						break
    @@ -17181,11 +17362,11 @@ echo "${as_me:-configure}:17172: testing ...adding -L$cf_rpath_dir/lib to LDFLAG
     
     	test -n "$verbose" && echo "	...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
     
    -echo "${as_me:-configure}:17184: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
    +echo "${as_me:-configure}:17365: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
     
     test -n "$verbose" && echo "	...checking LDFLAGS $LDFLAGS" 1>&6
     
    -echo "${as_me:-configure}:17188: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
    +echo "${as_me:-configure}:17369: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
     
     cf_rpath_dst=
     for cf_rpath_src in $LDFLAGS
    @@ -17222,7 +17403,7 @@ do
     			then
     				test -n "$verbose" && echo "	...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
     
    -echo "${as_me:-configure}:17225: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
    +echo "${as_me:-configure}:17406: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
     
     				EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
     			fi
    @@ -17235,11 +17416,11 @@ LDFLAGS=$cf_rpath_dst
     
     test -n "$verbose" && echo "	...checked LDFLAGS $LDFLAGS" 1>&6
     
    -echo "${as_me:-configure}:17238: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
    +echo "${as_me:-configure}:17419: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
     
     test -n "$verbose" && echo "	...checking LIBS $LIBS" 1>&6
     
    -echo "${as_me:-configure}:17242: testing ...checking LIBS $LIBS ..." 1>&5
    +echo "${as_me:-configure}:17423: testing ...checking LIBS $LIBS ..." 1>&5
     
     cf_rpath_dst=
     for cf_rpath_src in $LIBS
    @@ -17276,7 +17457,7 @@ do
     			then
     				test -n "$verbose" && echo "	...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
     
    -echo "${as_me:-configure}:17279: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
    +echo "${as_me:-configure}:17460: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
     
     				EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
     			fi
    @@ -17289,14 +17470,14 @@ LIBS=$cf_rpath_dst
     
     test -n "$verbose" && echo "	...checked LIBS $LIBS" 1>&6
     
    -echo "${as_me:-configure}:17292: testing ...checked LIBS $LIBS ..." 1>&5
    +echo "${as_me:-configure}:17473: testing ...checked LIBS $LIBS ..." 1>&5
     
     	test -n "$verbose" && echo "	...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
     
    -echo "${as_me:-configure}:17296: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
    +echo "${as_me:-configure}:17477: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
     
     else
    -	echo "$as_me:17299: result: no" >&5
    +	echo "$as_me:17480: result: no" >&5
     echo "${ECHO_T}no" >&6
     fi
     
    @@ -17386,7 +17567,7 @@ DEFS=-DHAVE_CONFIG_H
     : ${CONFIG_STATUS=./config.status}
     ac_clean_files_save=$ac_clean_files
     ac_clean_files="$ac_clean_files $CONFIG_STATUS"
    -{ echo "$as_me:17389: creating $CONFIG_STATUS" >&5
    +{ echo "$as_me:17570: creating $CONFIG_STATUS" >&5
     echo "$as_me: creating $CONFIG_STATUS" >&6;}
     cat >$CONFIG_STATUS <<_ACEOF
     #! $SHELL
    @@ -17562,7 +17743,7 @@ cat >>$CONFIG_STATUS <<\EOF
         echo "$ac_cs_version"; exit 0 ;;
       --he | --h)
         # Conflict between --help and --header
    -    { { echo "$as_me:17565: error: ambiguous option: $1
    +    { { echo "$as_me:17746: error: ambiguous option: $1
     Try \`$0 --help' for more information." >&5
     echo "$as_me: error: ambiguous option: $1
     Try \`$0 --help' for more information." >&2;}
    @@ -17581,7 +17762,7 @@ Try \`$0 --help' for more information." >&2;}
         ac_need_defaults=false;;
     
       # This is an error.
    -  -*) { { echo "$as_me:17584: error: unrecognized option: $1
    +  -*) { { echo "$as_me:17765: error: unrecognized option: $1
     Try \`$0 --help' for more information." >&5
     echo "$as_me: error: unrecognized option: $1
     Try \`$0 --help' for more information." >&2;}
    @@ -17631,7 +17812,7 @@ do
       "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
       "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
       "ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ncurses_cfg.h:ncurses_tst.hin" ;;
    -  *) { { echo "$as_me:17634: error: invalid argument: $ac_config_target" >&5
    +  *) { { echo "$as_me:17815: error: invalid argument: $ac_config_target" >&5
     echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
        { (exit 1); exit 1; }; };;
       esac
    @@ -17904,7 +18085,7 @@ done; }
       esac
     
       if test x"$ac_file" != x-; then
    -    { echo "$as_me:17907: creating $ac_file" >&5
    +    { echo "$as_me:18088: creating $ac_file" >&5
     echo "$as_me: creating $ac_file" >&6;}
         rm -f "$ac_file"
       fi
    @@ -17922,7 +18103,7 @@ echo "$as_me: creating $ac_file" >&6;}
           -) echo $tmp/stdin ;;
           [\\/$]*)
              # Absolute (can't be DOS-style, as IFS=:)
    -         test -f "$f" || { { echo "$as_me:17925: error: cannot find input file: $f" >&5
    +         test -f "$f" || { { echo "$as_me:18106: error: cannot find input file: $f" >&5
     echo "$as_me: error: cannot find input file: $f" >&2;}
        { (exit 1); exit 1; }; }
              echo $f;;
    @@ -17935,7 +18116,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
                echo $srcdir/$f
              else
                # /dev/null tree
    -           { { echo "$as_me:17938: error: cannot find input file: $f" >&5
    +           { { echo "$as_me:18119: error: cannot find input file: $f" >&5
     echo "$as_me: error: cannot find input file: $f" >&2;}
        { (exit 1); exit 1; }; }
              fi;;
    @@ -17951,7 +18132,7 @@ cat >>$CONFIG_STATUS <<\EOF
           if test -n "$ac_seen"; then
             ac_used=`grep '@datarootdir@' $ac_item`
             if test -z "$ac_used"; then
    -          { echo "$as_me:17954: WARNING: datarootdir was used implicitly but not set:
    +          { echo "$as_me:18135: WARNING: datarootdir was used implicitly but not set:
     $ac_seen" >&5
     echo "$as_me: WARNING: datarootdir was used implicitly but not set:
     $ac_seen" >&2;}
    @@ -17960,7 +18141,7 @@ $ac_seen" >&2;}
           fi
           ac_seen=`grep '${datarootdir}' $ac_item`
           if test -n "$ac_seen"; then
    -        { echo "$as_me:17963: WARNING: datarootdir was used explicitly but not set:
    +        { echo "$as_me:18144: WARNING: datarootdir was used explicitly but not set:
     $ac_seen" >&5
     echo "$as_me: WARNING: datarootdir was used explicitly but not set:
     $ac_seen" >&2;}
    @@ -17997,7 +18178,7 @@ s,@INSTALL@,$ac_INSTALL,;t t
                 ac_init=`egrep '[ 	]*'$ac_name'[ 	]*=' $ac_file`
                 if test -z "$ac_init"; then
                   ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'`
    -              { echo "$as_me:18000: WARNING: Variable $ac_name is used but was not set:
    +              { echo "$as_me:18181: WARNING: Variable $ac_name is used but was not set:
     $ac_seen" >&5
     echo "$as_me: WARNING: Variable $ac_name is used but was not set:
     $ac_seen" >&2;}
    @@ -18008,7 +18189,7 @@ $ac_seen" >&2;}
         egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out
         if test -s $tmp/out; then
           ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out`
    -      { echo "$as_me:18011: WARNING: Some variables may not be substituted:
    +      { echo "$as_me:18192: WARNING: Some variables may not be substituted:
     $ac_seen" >&5
     echo "$as_me: WARNING: Some variables may not be substituted:
     $ac_seen" >&2;}
    @@ -18057,7 +18238,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
       * )   ac_file_in=$ac_file.in ;;
       esac
     
    -  test x"$ac_file" != x- && { echo "$as_me:18060: creating $ac_file" >&5
    +  test x"$ac_file" != x- && { echo "$as_me:18241: creating $ac_file" >&5
     echo "$as_me: creating $ac_file" >&6;}
     
       # First look for the input files in the build tree, otherwise in the
    @@ -18068,7 +18249,7 @@ echo "$as_me: creating $ac_file" >&6;}
           -) echo $tmp/stdin ;;
           [\\/$]*)
              # Absolute (can't be DOS-style, as IFS=:)
    -         test -f "$f" || { { echo "$as_me:18071: error: cannot find input file: $f" >&5
    +         test -f "$f" || { { echo "$as_me:18252: error: cannot find input file: $f" >&5
     echo "$as_me: error: cannot find input file: $f" >&2;}
        { (exit 1); exit 1; }; }
              echo $f;;
    @@ -18081,7 +18262,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
                echo $srcdir/$f
              else
                # /dev/null tree
    -           { { echo "$as_me:18084: error: cannot find input file: $f" >&5
    +           { { echo "$as_me:18265: error: cannot find input file: $f" >&5
     echo "$as_me: error: cannot find input file: $f" >&2;}
        { (exit 1); exit 1; }; }
              fi;;
    @@ -18139,7 +18320,7 @@ cat >>$CONFIG_STATUS <<\EOF
       rm -f $tmp/in
       if test x"$ac_file" != x-; then
         if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
    -      { echo "$as_me:18142: $ac_file is unchanged" >&5
    +      { echo "$as_me:18323: $ac_file is unchanged" >&5
     echo "$as_me: $ac_file is unchanged" >&6;}
         else
           ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
    diff --git a/test/configure.in b/test/configure.in
    index 33885077..8a12523c 100644
    --- a/test/configure.in
    +++ b/test/configure.in
    @@ -28,7 +28,7 @@ dnl***************************************************************************
     dnl
     dnl Author: Thomas E. Dickey 1996, etc.
     dnl
    -dnl $Id: configure.in,v 1.123 2015/07/16 00:51:52 tom Exp $
    +dnl $Id: configure.in,v 1.124 2015/08/08 20:24:49 tom Exp $
     dnl This is a simple configuration-script for the ncurses test programs that
     dnl allows the test-directory to be separately configured against a reference
     dnl system (i.e., sysvr4 curses)
    @@ -330,6 +330,7 @@ if test "$cf_enable_widec" = yes; then
     	fi
     fi
     
    +CF_CURSES_CHECK_DATA(ospeed)
     CF_CURSES_CHECK_DATA(boolnames)
     CF_CURSES_CHECK_DATA(boolfnames)
     
    diff --git a/test/demo_termcap.c b/test/demo_termcap.c
    index 17ff3f37..65c2d13d 100644
    --- a/test/demo_termcap.c
    +++ b/test/demo_termcap.c
    @@ -29,7 +29,7 @@
     /*
      * Author: Thomas E. Dickey
      *
    - * $Id: demo_termcap.c,v 1.47 2015/07/10 23:36:16 tom Exp $
    + * $Id: demo_termcap.c,v 1.48 2015/08/08 20:25:39 tom Exp $
      *
      * A simple demo of the termcap interface.
      */
    @@ -863,12 +863,14 @@ main(int argc, char *argv[])
         printf("%ld values (%ld booleans, %ld numbers, %ld strings)\n",
     	   total_values, total_b_values, total_n_values, total_s_values);
     
    +#if defined(NCURSES_VERSION) || defined(HAVE_CURSES_DATA_OSPEED)
         if (v_opt) {
     	show_number("PC", PC);
     	show_string("UP", UP);
     	show_string("BC", BC);
     	show_number("ospeed", ospeed);
         }
    +#endif
     
         free_dblist();