- 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 <<EOF/
+ ** `date`
+ ** node: $WHAT
+ ** user: `id`
+ ** conf: $*
+ EOF/
+
+ SHELL=/bin/sh
+ if test -f /usr/xpg4/bin/sh
+ then
+ CONFIG_SHELL=/usr/xpg4/bin/sh
+ export CONFIG_SHELL
+ SHELL=$CONFIG_SHELL
+ fi
+
+ rm -f config.status config.cache
+ TOP=$HOME/$WHAT
+ $SHELL ./configure --verbose \
+ --disable-echo \
+ --disable-overwrite \
+ --enable-warnings \
+ --with-warnings \
+ --prefix=$TOP $* 2>&1 | tee -a $OUT
+
+ Other major changes to the configure script include:
+ * ABI 6 is now the default, intending that the existing ABI 5 should
+ build as before using the "--with-abi-version=5" option.
+ * added --with-extra-suffix option to help with installing
+ nonconflicting ncurses6 packages, e.g., avoiding header- and
+ library-conflicts.
+ NOTE: as a side-effect, this renames
+
+ adacurses-config to adacurses5-config and
+ adacursesw-config to adacursesw5-config
+ * the configure script looks for gnatgcc if the Ada95 binding is
+ built, in preference to the default gcc/cc. The script also
+ ensures that the Ada95 binding is built with the level of
+ optimization as the C libraries.
+ * the configure script captures define's related to -D_XOPEN_SOURCE
+ from the configure check and adds those to the *-config and *.pc
+ files, to simplify use for the wide-character libraries.
+
+ Configuration options
+
+ There are several new (or extended) configure options:
+
+ --disable-db-install
+ Do not install the terminal database. This is used to omit
+ features for packages, as done with --without-progs. The option
+ simplifies building cross-compile support packages.
+
+ --disable-gnat-projects
+ This option is used for regression testing
+
+ --disable-lib-suffixes
+ Suppress the "w", "t" or "tw" suffixes which normally would be
+ added to the library names for the --enable-widec and
+ --with-pthread options.
+
+ --with-cxx-shared
+ When --with-shared is set, build libncurses++ as a shared
+ library. This implicitly relies upon building with gcc/g++,
+ since other compiler suites may have differences in the way
+ shared libraries are built. libtool by the way has similar
+ limitations.
+
+ --with-hashed-db
+ Extended this configure option to simplify building with
+ different versions of Berkeley database using FreeBSD ports.
+
+ --with-pc-suffix
+ If ".pc" files are installed, optionally add a suffix to the
+ files and corresponding package names to separate unusual
+ configurations. If no option value is given (or if it is
+ "none"), no suffix is added. This option is used in the test
+ package for ncurses6.
+
+ --with-xterm-kbs
+ Configure xterm's terminfo entries to use either BS (^H, i.e.,
+ ASCII backspace) or DEL (^?, or 127).
+
+ Portability
+
+ MinGW
+
+ Most of the portability-related work since [73]ncurses 5.9 extended
+ and improved the MinGW port introduced in [74]ncurses 5.8.
+
+ The MinGW port can be readily cross-compiled:
+ * modified configure script to allow creating dll's for MinGW when
+ cross-compiling.
+ * enforced Windows-style path-separator if cross-compiling,
+ * added scripts for test-builds of cross-compiled packages for
+ ncurses6 to MinGW.
+ * added pc-files to the MinGW cross-compiling test-packages.
+ * added script for building test-packages of binaries cross-compiled
+ to MinGW using NSIS.
+ * added nc_mingw.h to installed headers for MinGW port; this is
+ needed for cross-compiling [75]ncurses-examples.
+ * added test-packages for cross-compiling ncurses-examples using the
+ MinGW test-packages.
+
+ The MinGW-specific Windows driver accounts for several changes:
+ * wide-character display is made usable by replacing MinGW's
+ non-working wcrtomb and wctomb functions.
+ * implemented some display features: [76]beep, [77]flash,
+ [78]curs_set.
+ * the driver handles repainting on endwin/refresh combination.
+ * modified treatment of TERM variable for MinGW port to allow
+ explicit use of the Windows console driver by checking if $TERM is
+ set to "#win32console" or an abbreviation of that.
+ * the Windows driver also matches the special TERM value "unknown"
+ * the driver now returns characters for special keys, (like ansi.sys
+ does), when keypad mode is off, rather than returning nothing at
+ all.
+ * the driver checks a new environment variable [79]NCURSES_CONSOLE2
+ to optionally work around a deficiency in Console2 (and its
+ descendent ConsoleZ) which hang when an application creates a
+ console buffer.
+
+ Finally, there are other improvements:
+ * MinGW is one of the configurations where ncurses installs by
+ default into /usr
+ * configuration for cross-compiling uses AC_CHECK_TOOLS in
+ preference to AC_PATH_PROGS when searching for ncurses*-config,
+ e.g., in Ada95/configure and test/configure.
+ * extend Windows support to work with MSYS2;
+ + this works with a scenario where there is an ANSI-escape
+ handler such as ansicon running in the console window.
+ + wrap isatty calls with a macro, provide a corresponding set
+ of support routines to address differences between MinGW and
+ MSYS2.
+ * ensure WINVER is defined in makefiles rather than using headers.
+ * add check for the gnatprep "-T" option.
+ * work around a bug introduced by [80]gcc 4.8.1 in MinGW which
+ breaks "trace" feature.
+ * add a driver-name method to each of the drivers.
+
+ Other ports
+
+ These changes affect certain platforms (ports):
+ * the configure script knows how to build shared libraries with
+ DragonFlyBSD and Interix.
+ * support for AIX shared libraries is improved, tested with AIX 5.3,
+ 6.1 and 7.1 with both gcc 4.2.4 and cc:
+ + the shared-library suffix for AIX 5 and 6 is now ".so"
+ + the -brtl option is used with AIX 5-7; it is needed to link
+ with the shared libraries.
+ * the configure --enable-pc-files option takes into account the
+ [81]PKG_CONFIG_PATH variable.
+ * the configure option --with-pkg-config-libdir provides control
+ over the actual directory into which pc-files are installed.
+ * the build scripts add explicit -ltinfo, etc., to the generated
+ ".pc" file when ld option "--as-needed" is used, or when ncurses
+ and tinfo are installed without using rpath.
+ * the configure script disallows conflicting options
+ "--with-termlib" and "--enable-term-driver".
+ * the check for missing c++ compiler to work when no error is
+ reported, and no variables set is improved (see note for
+ [82]20021206).
+ * the misc/gen_edit.sh script selects a "linux" entry which works
+ with the current kernel rather than assuming it is always
+ "linux3.0"
+ * the test/configure script makes it simpler to override names of
+ curses-related libraries, to help with linking with pdcurses in
+ MinGW environment.
+ * the configure-script/ifdef's allow the BSD OLD_TTY feature to be
+ suppressed if the type of ospeed is configured using the option
+ --with-ospeed to not be a short. By default, it is a short for
+ termcap-compatibility.
+ * the MKlib_gen.sh script works around a recent change in gcc 5
+ (released [83]mid-2015) which essentially emits multiple #line
+ statements for the same position in a file.
+ * the configure script works with Minix3.2 (see [84]note on
+ portability)
+ * OS/2 redux:
+ + the configure script supports OS/2 kLIBC.
+ + the --with-lib-prefix option allows configuring for old/new
+ flavors of OS/2 EMX.
+ * improved configure-script checks for _XOPEN_SOURCE:
+ + the definition works starting with Solaris 10.
+ + the definition is suppressed for IRIX64, since its header
+ files have a conflict versus _SGI_SOURCE.
+ _________________________________________________________________
+
+Features of ncurses
+
+ The ncurses package is fully upward-compatible with SVr4 (System V
+ Release 4) curses:
+ * All of the SVr4 calls have been implemented (and are documented).
+ * ncurses supports all of the for SVr4 curses features including
+ keyboard mapping, color, forms-drawing with ACS characters, and
+ automatic recognition of keypad and function keys.
+ * ncurses provides these SVr4 add-on libraries (not part of X/Open
+ Curses):
+ + the panels library, supporting a stack of windows with
+ backing store.
+ + the menus library, supporting a uniform but flexible
+ interface for menu programming.
+ + the form library, supporting data collection through
+ on-screen forms.
+ * ncurses's terminal database is fully compatible with that used by
+ SVr4 curses.
+ + ncurses supports user-defined capabilities which it can see,
+ but which are hidden from SVr4 curses applications using the
+ same terminal database.
+ + It can be optionally configured to match the format used in
+ related systems such as AIX and Tru64.
+ + Alternatively, ncurses can be configured to use hashed
+ databases rather than the directory of files used by SVr4
+ curses.
+ * The ncurses utilities have options to allow you to filter terminfo
+ entries for use with less capable curses/terminfo versions such as
+ the HP/UX and AIX ports.
The ncurses package also has many useful extensions over SVr4:
* The API is 8-bit clean and base-level conformant with the X/OPEN
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
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
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 <name>@<host.domain>
+ 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 <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 [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
-# $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"), #
# Author: Juergen Pfeifer, 1996
#
# Version Control
-# $Revision: 1.21 $
+# $Revision: 1.22 $
#
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
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 *
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
])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.
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
,[$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:
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)
$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'`
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 87 updated: 2015/04/17 21:13:04
+dnl CF_SHARED_OPTS version: 88 updated: 2015/08/05 20:44:28
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
;;
(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
;;
(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
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
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],
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
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
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:3653: 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
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
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
;;
(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
;;
(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
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
-# $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"), #
#
# Makefile for AdaCurses manual pages.
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR = @DESTDIR@
#
# 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
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
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]
##############################################################################
-# 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"), #
#
# 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
##############################################################################
-# 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"), #
#
# 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
/****************************************************************************
- * 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 *
* 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 <ncurses_cfg.h>
+
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+
#include <curses.h>
extern WINDOW *stdscr_as_function(void);
/****************************************************************************
- * 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 *
* 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 <ncurses_cfg.h>
+#else
+#include <ncurses.h>
+#endif
+
+#include <stdlib.h>
+
#include <form.h>
extern int set_field_type_alnum(FIELD * /* field */ ,
/****************************************************************************
- * 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 *
/*
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 <ncurses_cfg.h>
+
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+
#include <curses.h>
#if defined(NCURSES_VERSION_PATCH)
bool
has_mouse(void)
{
- return (bool) _nc_has_mouse();
+ return (bool)_nc_has_mouse();
}
#endif
-# $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"), #
#
# Master Makefile for ncurses library.
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR=@DESTDIR@
-- 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
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.
-5:0:9 6.0 20150725
+5:0:9 6.0 20150808
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
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
dnl ( generating this script makes the makefiles a little tidier :-)
echo creating headers.sh
cat >headers.sh <<CF_EOF
-#! /bin/sh
+#! $SHELL
# This shell script is generated by the 'configure' script. It is invoked in a
# subdirectory of the build tree. It generates a sed-script in the parent
# directory that is used to adjust includes for header files that reside in a
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.
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MANPAGE_RENAMES version: 9 updated: 2015/04/18 08:56:57
+dnl CF_MANPAGE_RENAMES version: 10 updated: 2015/08/05 20:44:28
dnl ------------------
dnl The Debian people have their own naming convention for manpages. This
dnl option lets us override the name of the file containing renaming, or
# 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
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
cf_man_alias=`pwd`/man_alias.sed
cat >$cf_edit_man <<CF_EOF
-#! /bin/sh
+#! $SHELL
# this script is generated by the configure-script CF_MAN_PAGES macro.
prefix="$cf_prefix"
if test "\$form" = normal ; then
if test "$cf_format" = yes ; then
if test "$cf_inboth" = no ; then
- sh \[$]0 format \$verb \$mandir \$srcdir \[$]*
+ $SHELL \[$]0 format \$verb \$mandir \$srcdir \[$]*
exit $?
fi
fi
if test $cf_inboth = yes ; then
if test \$form != format ; then
- sh \[$]0 format \$verb \$mandir \$srcdir \[$]*
+ $SHELL \[$]0 format \$verb \$mandir \$srcdir \[$]*
fi
fi
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 87 updated: 2015/04/17 21:13:04
+dnl CF_SHARED_OPTS version: 88 updated: 2015/08/05 20:44:28
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
;;
(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
;;
(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
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
<!--
- $Id: announce.html.in,v 1.89 2013/05/18 10:12:25 tom Exp $
+ $Id: announce.html.in,v 1.91 2015/08/08 19:27:17 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2011,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 *
* authorization. *
****************************************************************************
-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rev="made" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
+ <style type="text/css">
+p,li { max-width:700px; }
+ dd { max-width:630px; }
+ </style>
</head>
<body>
- <h1>Announcing ncurses @VERSION@</h1>
+ <h1 class="no-header">Announcing ncurses @VERSION@</h1>
- <p>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.</p>
+ <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
+
+ <p>The <em class="small-caps">ncurses</em> (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.</p>
<p>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.</p>
+ keepers of <em class="small-caps">unix</em> releases such as
+ BSD/OS, FreeBSD and NetBSD to switch over to <em class=
+ "small-caps">ncurses</em>.</p>
+
+ <p>Since 1995, <em class="small-caps">ncurses</em> has been
+ ported to many systems:</p>
+
+ <ul>
+ <li>It is used in almost every system based on the Linux kernel
+ (aside from some embedded applications).</li>
+
+ <li>It is used as the system curses library on OpenBSD, FreeBSD
+ and OSX.</li>
+
+ <li>It is used in environments such as Cygwin and MinGW. The
+ first of these was EMX on OS/2 Warp.</li>
+
+ <li>It is used (though usually not as the <em>system</em>
+ curses) on all of the vendor <em class="small-caps">unix</em>
+ systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, Tru64.</li>
+
+ <li>It should work readily on any ANSI/POSIX-conforming
+ <em class="small-caps">unix</em>.</li>
+ </ul>
+
+ <p>The distribution includes the library and support utilities,
+ including</p>
+
+ <ul>
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>,
+ a termcap conversion tool</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/clear.1.html">clear</a>,
+ utility for clearing the screen</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp</a>,
+ the terminfo decompiler</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tabs.1.html">tabs</a>,
+ set tabs on a terminal</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tic.1m.html">tic</a>,
+ the terminfo compiler</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/toe.1m.html">toe</a>,
+ list (table of) terminfo entries</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tput.1.html">tput</a>,
+ utility for retrieving terminal capabilities in shell
+ scripts</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tset.1.html">tset</a>,
+ to initialize the terminal</li>
+ </ul>
+
+ <p>Full manual pages are provided for the library and tools.</p>
+
+ <p>The <em class="small-caps">ncurses</em> distribution is
+ available via anonymous FTP at the GNU distribution site</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .</p>
+ </blockquote>It is also available at
+
+ <blockquote>
+ <p><a href=
+ "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
+ </blockquote>
+
+ <h2><a name="h2-release-notes" id="h2-release-notes">Release
+ Notes</a></h2>
+
+ <p>These notes are for <em class="small-caps">ncurses</em>
+ @VERSION@, released <strong>August 8, 2015</strong>.</p>
+
+ <p>This release is designed to be source-compatible with
+ <em class="small-caps">ncurses</em> 5.0 through 5.9; providing a
+ new application binary interface (ABI). Although the source can
+ still be configured to support the <em class=
+ "small-caps">ncurses</em> 5 ABI, the intent of the release is to
+ provide extensions which are generally useful, but
+ binary-incompatible with <em class="small-caps">ncurses</em>
+ 5:</p>
+
+ <ul>
+ <li>
+ <p>Extend the <code>cchar_t</code> structure to allow more
+ than 16 colors to be encoded.</p>
+ </li>
+
+ <li>
+ <p>Modify the encoding of mouse state to make room for a 5th
+ mouse button. That allows one to use <em class=
+ "small-caps">ncurses</em> with a wheel mouse with xterm or
+ similar X terminal emulators.</p>
+ </li>
+ </ul>
+
+ <p>There are, of course, numerous other improvements,
+ including</p>
+
+ <ul>
+ <li>
+ <p>fixes made based on the Clang and Coverity static
+ analyzers.</p>
+ </li>
+
+ <li>
+ <p>memory leak fixes using Valgrind</p>
+ </li>
+ </ul>
+
+ <p>The release notes mention some bug-fixes, but are focused on
+ new features and improvements to existing features log since
+ <em class="small-caps">ncurses</em> 5.9 release.</p>
+
+ <p>While the intent of the release is to provide a new stable
+ ABI, there are other development activities which are summarized
+ below.</p>
+
+ <ul>
+ <li>
+ <p>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 <code>Console2</code> took a while.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+
+ <p>The <a href=
+ "http://invisible-island.net/ncurses/tctest.html">termcap
+ library checker (tctest)</a> (not part of <em class=
+ "small-caps">ncurses</em>) was one result. A followup review
+ of performance using <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>
+ in 2014 led to additional improvements.</p>
+ </li>
+
+ <li>
+ <p>Output buffering provided a further, but worthwhile
+ distraction. A bug report in 2012 regarding the use of signal
+ handlers in <em class="small-caps">ncurses</em>) pointed out
+ <a href=
+ "http://lists.gnu.org/archive/html/bug-ncurses/2012-07/msg00029.html">
+ a problem</a> with the use of unsafe functions for handling
+ <code>SIGTSTP</code>. Other signals could be addressed with
+ workarounds; repairing <code>SIGTSTP</code> required a
+ different approach. The solution required changing internal
+ behavior of the library: how it handles output buffering.</p>
+
+ <p>Now <em class="small-caps">ncurses</em> 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
+ <em>unspecified</em> 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.</p>
+ </li>
+
+ <li>
+ <p>Since the introduction of the experimental support for 256
+ colors early in <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20050101">2005</a>
+ (released in <a href=
+ "http://invisible-island.net/ncurses/announce-5.5.html">ncurses
+ 5.5</a>), there has been increased user interest. Almost all
+ packagers continue providing the ncurses ABI 5 which cannot
+ support 256 colors.</p>
+ </li>
+
+ <li>
+ <p>Symbol versioning, or the lack of it in ncurses, is the
+ main reason why packagers would be reluctant to add a new
+ ncurses ABI.</p>
+
+ <p>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
+ <a href=
+ "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <em class="small-caps">ncurses</em></a>.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-library" id="h3-library">Library
+ improvements</a></h3>
+
+ <h3><a name="h3-lib-setbuf" id="h3-lib-setbuf">Output
+ buffering</a></h3>
+
+ <p>X/Open curses provides more than one initialization
+ function:</p>
+
+ <ul>
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr">
+ initscr</a> (the simplest) accepts no parameters.</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm">
+ newterm</a> accepts parameters for the stream input and
+ output</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization">
+ setupterm</a> (the low-level function) accepts a parameter for
+ the <em>file descriptor</em> of the output.</li>
+ </ul>
+
+ <p>They are documented in X/Open <em>as if</em>
+ <code>initscr</code> calls <code>newterm</code> using
+ <code>stdout</code> for output stream, and in turn
+ <code>newterm</code> calls <code>setupterm</code> using
+ <code>fileno(stdout)</code> for the file descriptor. As long as
+ an implementation acts <em>as if</em> it does this, it conforms.
+ In practice, implementations do what is implied. This creates a
+ problem: the low-level <code>setupterm</code> function's file
+ descriptor is unbuffered, while <code>newterm</code> 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.</p>
+
+ <p>Initially, <em class="small-caps">ncurses</em> used the file
+ descriptor (obtained from the output stream passed to
+ <code>newterm</code>) for changing the terminal modes, and relied
+ upon the output parameter of <code>newterm</code> for buffered
+ output. Later (to avoid using unsafe buffered I/O in signal
+ handlers), <em class="small-caps">ncurses</em> 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.</p>
+
+ <p>That approach worked reasonably well and as a side effect,
+ using the same buffered output as an application might use for
+ <code>printf</code> meant that no flushing was needed when
+ switching between normal- and screen-modes.</p>
+
+ <p>There were a couple of problems:</p>
+
+ <ul>
+ <li>
+ <p>to get good performance, curses (not only <em class=
+ "small-caps">ncurses</em>, but SVr4 curses in general) set an
+ output buffer using <code>setbuf</code> or similar function.
+ There is no standard (or portable) way to turn that output
+ buffer off, and revert to line-buffering. The <code><a href=
+ "http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_NO_SETBUF">
+ NCURSES_NO_SETBUF</a></code> environment variable did make it
+ optional.</p>
+ </li>
+
+ <li>
+ <p>to handle <code>SIGTSTP</code> (the “stop”
+ signal), <em class="small-caps">ncurses</em> 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.</p>
+ </li>
+ </ul>
+
+ <p>Conveniently, solving the second problem (by making <em class=
+ "small-caps">ncurses</em> do its <em>own</em> output buffering)
+ also fixed the first one. But there were special cases to
+ resolve: <a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html"><em>
+ low-level</em></a> 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.</p>
+
+ <p>Finally, there may still be a few programs which should be
+ modified to improve their portability, e.g., adding an</p>
+
+ <blockquote>
+ <pre class="code-block">
+fflush(stdout);
+</pre>
+ </blockquote>
+
+ <p>when switching from “<a href=
+ "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">shell</a>”
+ mode to “<a href=
+ "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">program</a>”
+ (curses) mode. Those are fairly rare because most programmers
+ have learned not to mix <code>printf</code> and <code><a href=
+ "http://invisible-island.net/ncurses/man/curs_printw.3x.html">printw</a></code>.</p>
+
+ <h3><a name="h3-lib-versioning" id="h3-lib-versioning">Symbol
+ versioning</a></h3>
+
+ <p>This release introduces symbol-versioning to <em class=
+ "small-caps">ncurses</em> because without it, the change of ABI
+ would be less successful. A lengthy discussion will be presented
+ in <a href=
+ "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <em class="small-caps">ncurses</em></a>. These
+ notes summarize what has changed, and what can be done with the
+ new release.</p>
+
+ <p>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.</p>
+
+ <p>This release provides sample files for the four principal
+ configurations of <em class="small-caps">ncurses</em> libraries:
+ <code>ncurses</code>, <code>ncursesw</code>,
+ <code>ncursest</code> and <code>ncursestw</code>. Each sample is
+ given in two forms:</p>
+
+ <blockquote>
+ <dl>
+ <dt>“<code>.map</code>”</dt>
+
+ <dd>These list all public symbols, together with version
+ names.</dd>
+
+ <dt>“<code>.sym</code>”</dt>
+
+ <dd>These list all public symbols, without version
+ names.</dd>
+ </dl>
+ </blockquote>
+
+ <p>The sample files are <em>generated</em> by scripts which take
+ into account a few special cases such as <a href=
+ "http://invisible-island.net/ncurses/tack.html">tack</a> to omit
+ many of the <em class="small-caps">ncurses</em> private symbols
+ (beginning with “<code>_nc_</code>”). Here are
+ counts of globals versus locals:</p>
+
+ <blockquote>
+ <table border="1" summary="Total global and local symbols">
+ <tr>
+ <th>Config</th>
+
+ <th>Symbols</th>
+
+ <th>Globals</th>
+
+ <th>Locals</th>
+
+ <th>"_nc_"</th>
+ </tr>
+
+ <tr>
+ <td>ncurses</td>
+
+ <td align="right">976</td>
+
+ <td align="right">796</td>
+
+ <td align="right">180</td>
+
+ <td align="right">332</td>
+ </tr>
+
+ <tr>
+ <td>ncursesw</td>
+
+ <td align="right">1089</td>
+
+ <td align="right">905</td>
+
+ <td align="right">184</td>
+
+ <td align="right">343</td>
+ </tr>
+
+ <tr>
+ <td>ncursest</td>
+
+ <td align="right">979</td>
+
+ <td align="right">804</td>
+
+ <td align="right">175</td>
+
+ <td align="right">358</td>
+ </tr>
+
+ <tr>
+ <td>ncursestw</td>
+
+ <td align="right">1098</td>
+
+ <td align="right">914</td>
+
+ <td align="right">184</td>
+
+ <td align="right">372</td>
+ </tr>
+ </table>
+ </blockquote>
+
+ <p>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
+ <em>not</em> support the feature, and a few (such as Solaris)
+ which provide incomplete support.</p>
+
+ <p>The version-naming convention used allows these sample files
+ to build distinct libraries for ABI 5 and 6. Version names
+ consist of</p>
+
+ <ul>
+ <li>
+ <p>configuration name, e.g.,
+ “<code>NCURSESW</code>” for the wide-character
+ libraries</p>
+ </li>
+
+ <li>
+ <p>ABI version (if not 5)</p>
+ </li>
+
+ <li>
+ <p>library name for two special cases which have the same
+ interface across configurations:
+ “<code>TINFO</code>” and
+ “<code>TIC</code>”</p>
+ </li>
+
+ <li>
+ <p>release version</p>
+ </li>
+
+ <li>
+ <p>patch date (for the release version)</p>
+ </li>
+ </ul>
+
+ <p>For example, running <code>nm -D</code> on the libraries in
+ the ncurses6 test package shows these symbol-versions:</p>
+
+ <blockquote>
+ <pre class="code-block">
+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
+</pre>
+ </blockquote>
+
+ <p>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.</p>
+
+ <h3><a name="h3-lib-other" id=
+ "h3-lib-other">Miscellaneous</a></h3>
+
+ <p>The new release has several improvements for performance and
+ building. For instance:</p>
+
+ <ul>
+ <li>
+ <p>several files in ncurses- and progs-directories were
+ modified to allow <code>const</code> data used in internal
+ tables to be put by the linker into the readonly text
+ segment.</p>
+ </li>
+
+ <li>
+ <p>various improvements were made to building the Ada95
+ binding, both in simplifying the generated files as well as
+ improving the way it uses <code>gnatmake</code></p>
+ </li>
+ </ul>
+
+ <p>There are also new features in the libraries:</p>
+
+ <ul>
+ <li>added <a href=
+ "http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl">
+ use_tioctl</a> function</li>
+
+ <li>
+ <p>added <a href=
+ "http://invisible-island.net/ncurses/man/curs_opaque.3x.html">
+ wgetdelay</a> to retrieve _delay member of WINDOW if it
+ happens to be opaque, e.g., in the pthread configuration.</p>
+ </li>
+
+ <li>
+ <p>added <a href=
+ "http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
+ A_ITALIC</a> extension.</p>
+ </li>
+
+ <li>
+ <p>added form library extension <a href=
+ "http://invisible-island.net/ncurses/man/form_field_opts.3x.html">
+ O_DYNAMIC_JUSTIFY</a> option which can be used to override
+ the different treatment of justification for static versus
+ dynamic fields .</p>
+ </li>
+
+ <li>
+ <p>rewrote <a href=
+ "http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin">
+ putwin</a> and <a href=
+ "http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin">
+ getwin</a>, making an extended version which is capable of
+ reading screen-dumps between the wide/normal <em class=
+ "small-caps">ncurses</em> configurations. These are text
+ files, except for a <em>magic</em> code at the beginning:</p>
+
+ <blockquote>
+ <pre class="code-block">
+0 string \210\210 Screen-dump (ncurses)
+</pre>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>several changes to mouse support include:</p>
+
+ <ul>
+ <li>added decoder for xterm SGR 1006 mouse mode.</li>
+
+ <li>added experimental support for
+ “<code>%u</code>” format to terminfo.</li>
+
+ <li>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 .</li>
+ </ul>
+ </li>
+ </ul>
+
+ <p>There are a few new configure options dealing with library
+ customization:</p>
+
+ <ul>
+ <li>
+ <p>add “<code>--enable-ext-putwin</code>”
+ configure option to turn on the extended putwin/getwin. By
+ default, this is enabled for ABI 6 and disabled with ABI
+ 5.</p>
+ </li>
+
+ <li>
+ <p>add “<code>--enable-string-hacks</code>”
+ option to control whether strlcat and strlcpy may be used.
+ Because <em class="small-caps">ncurses</em> already does the
+ requisite buffer-limit checks, this feature is mainly of
+ interest to quiet compiler-warnings on a few systems.</p>
+ </li>
+
+ <li>
+ <p>add configure option
+ “<code>--with-tparm-arg</code>” to allow <a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output">
+ tparm</a>'s parameters to be something more likely to be the
+ same size as a pointer, e.g., <code>intptr_t</code> (again,
+ the default is set for ABI 6).</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-programs" id="h3-programs">Program
+ improvements</a></h3>
+
+ <h4><a name="h4-utilities" id="h4-utilities">Utilities</a></h4>
+
+ <p>Most of the termcap-related changes based on development of
+ <a href="http://invisible-island.net/ncurses/tctest.html">tctest
+ (termcap library checker)</a> are implemented in the tic and
+ infocmp programs rather than affecting the library. As noted in
+ the <a href=
+ "http://invisible-island.net/ncurses/tctest.html#my-better-translation">
+ discussion</a> of <code>tctest</code>, <em class=
+ "small-caps">ncurses</em>'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 <em>termcap</em> users are
+ using <em class="small-caps">ncurses</em> (or NetBSD, with its
+ own terminfo library) and their programs are actually using
+ terminfo rather than termcap data.</p>
+
+ <p>Still, there are a few. A comment about the translation of the
+ ASCII <code>NUL</code> character prompted a review:</p>
+
+ <ul>
+ <li>
+ <p>Both terminfo and termcap store string capabilities as
+ <code>NUL</code>-terminated strings.</p>
+ </li>
+
+ <li>
+ <p>In terminfo, a <code>\0</code> in a terminal description
+ is stored as <code>\200</code>.</p>
+ </li>
+
+ <li>
+ <p>There are no (known) terminals which would behave
+ differently when sent <code>\0</code> or
+ <code>\200</code>.</p>
+ </li>
+
+ <li>
+ <p>When translating to terminfo format (or displaying a
+ printable version of an entry using infocmp), <em class=
+ "small-caps">ncurses</em> shows <code>\200</code> as
+ <code>\0</code>.</p>
+ </li>
+
+ <li>
+ <p>It has done this since 1998 (quoting from the NEWS
+ file):</p>
+
+ <blockquote>
+ <pre class="code-block">
+<a href=
+"http://invisible-island.net/ncurses/NEWS.html#t980103">980103</a>
+...
+ + modify _nc_tic_expand() to generate \0 rather than \200.
+...
+ + correct translation of terminfo "^@", to \200, like \0.
+</pre>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>However, the <code>_nc_tic_expand</code> function (which
+ optionally produces terminfo or termcap format) did not
+ address this special case for termcap. Even the later 4.4BSD
+ <a href=
+ "https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&view=markup#l784">
+ cgetstr</a> interprets a <code>\0</code> literally, ending
+ <em>that</em> string (rather than using the terminfo
+ improvement).</p>
+ </li>
+ </ul>
+
+ <p>As a result of the review, several improvements were made to
+ <em class="small-caps">ncurses</em> 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:</p>
+
+ <ul>
+ <li>
+ <p>the “<code>-0</code>” option generates
+ termcap/terminfo source on a single line.</p>
+ </li>
+
+ <li>
+ <p>the “<code>-K</code>” option provides stricter
+ BSD-compatibility for termcap output.</p>
+ </li>
+ </ul>
+
+ <p>Other user-visible improvements and new features include:</p>
+
+ <ul>
+ <li>
+ <p>added “<code>-D</code>” option to tic and
+ infocmp, to show the database locations that it could
+ use.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-s</code>” option to toe, to sort
+ its output.</p>
+ </li>
+
+ <li>
+ <p>extended “<code>-c</code>” and
+ “<code>-n</code>” options of infocmp to allow
+ comparing more than two entries.</p>
+ </li>
+
+ <li>
+ <p>modified toe's report when “<code>-a</code>”
+ and “<code>-s</code>” options are combined, to
+ add a column showing which entries belong to a given
+ database.</p>
+ </li>
+
+ <li>
+ <p>modified the clear program to take into account the
+ “<code>E3</code>” extended capability to clear
+ the terminal's scrollback buffer.</p>
+ </li>
+ </ul>
+
+ <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
+
+ <p>Along with the library and utilities, many improvements were
+ made to the <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.
+ 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).</p>
+
+ <p>These changes were made to verify compatibility or compare
+ performance of <em class="small-caps">ncurses</em>:</p>
+
+ <ul>
+ <li>
+ <p>made workarounds for compiling test-programs with NetBSD
+ curses, though it lacks some common functions such as
+ <a href="http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env">
+ use_env</a>.</p>
+ </li>
+
+ <li>
+ <p>added dots_termcap test-program</p>
+ </li>
+
+ <li>
+ <p>added dots_curses test-program, for comparison with the
+ low-level examples.</p>
+ </li>
+
+ <li>
+ <p>added test_setupterm test-proram to demonstrate
+ normal/error returns from the setupterm and restartterm
+ functions.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-d</code>”,
+ “<code>-e</code>” and
+ “<code>-q</code>” options to the demo_terminfo
+ and demo_termcap test-programs.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-y</code>” option to demo_termcap
+ and test/demo_terminfo test-programs to demonstrate behavior
+ with/without extended capabilities.</p>
+ </li>
+
+ <li>
+ <p>modified demo_termcap and demo_terminfo test-programs to
+ make their options more directly comparable, and add
+ “<code>-i</code>” option to specify a terminal
+ description filename to parse for names to lookup.</p>
+ </li>
+
+ <li>
+ <p>rewrote the tests for <a href=
+ "http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-derwin">
+ mvderwin</a> and test for recursive <a href=
+ "http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-mvwin">
+ mvwin</a> in the movewindow test-program.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to help with the MinGW port:</p>
+
+ <ul>
+ <li>
+ <p>added test-screens to the ncurses test-program to show
+ 256-characters at a time, to help with MinGW port.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-s</code>” 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.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to verify new extensions in <em class=
+ "small-caps">ncurses</em>:</p>
+
+ <ul>
+ <li>
+ <p>added <a href=
+ "http://invisible-island.net/ncurses/man/form_driver.3x.html#h3-form_driver_w">
+ form_driver_w</a> entrypoint to wide-character forms library,
+ as well as form_driver_w test-program.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>modified ncurses test-program, adding
+ “<code>-E</code>” and
+ “<code>-T</code>” options to demonstrate use_env
+ versus use_tioctl.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>modified the ncurses test-program to also show position
+ reports in 'a' test.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to make the examples more useful:</p>
+
+ <ul>
+ <li>
+ <p>added scripts for building dpkg and rpm test-packages</p>
+ </li>
+
+ <li>
+ <p>modified the hanoi test-program to show the minimum number
+ of moves possible for the given number of tiles.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-database" id="h3-database">Terminal
+ database</a></h3>
+
+ <p>This release provides improvements to tic's
+ “<code>-c</code>” checking option, which was used for
+ example to</p>
+
+ <ul>
+ <li>
+ <p>make <code>sgr</code> in several entries agree with other
+ caps.</p>
+ </li>
+
+ <li>
+ <p>correct padding in some entries where earlier versions had
+ miscounted the number of octal digits.</p>
+ </li>
+ </ul>
+
+ <p>There are several new terminal descriptions:</p>
+
+ <ul>
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_M_L_T_E_R_M">
+ mlterm</a> is now aliased to mlterm3</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm">
+ nsterm</a> is now derived from nsterm-256color</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco">
+ putty-sco</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-teken">
+ teken</a> is FreeBSD's "xterm" console.</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R">
+ terminator</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y">
+ terminology</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux">
+ tmux</a> is derived from screen.</li>
+
+ <li>several screen.XXX entries support the respective
+ variations for 256 colors.</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_S_I_M_P_L_E_T_E_R_M">
+ simpleterm</a> is now 0.5</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-vte">
+ vte</a> is aliased to vte-2012</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi">
+ vt520ansi</a></li>
+ </ul>
+
+ <p>A few entries use extensions (user-defined terminal
+ capabilities):</p>
+
+ <ul>
+ <li>
+ <p><code>E3</code>, used in linux, putty and xterm-basic is
+ tested in the <a href=
+ "http://aerie.jexium-island.net/ncurses/man/clear.1.html">clear</a>
+ program to erase a terminal's scrollback.</p>
+ </li>
+
+ <li>
+ <p><code>TS</code> is used in the <a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_sl">
+ xterm+sl</a> building block to help deprecate the misuse of
+ <code>tsl</code> for xterm's title-string.</p>
+ </li>
+
+ <li>
+ <p><code>XT</code> 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.</p>
+ </li>
+
+ <li>
+ <p><code>xm</code> is used in examples <a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1005">
+ xterm-1005</a> and <a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1006">
+ xterm-1006</a> to illustrate a way to make mouse handling
+ more general</p>
+ </li>
+ </ul>
+
+ <p>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
+ <code>A_ITALIC</code> extension.</p>
+
+ <ul>
+ <li>konsole, mlterm3 (italics)</li>
+
+ <li>nsterm (dim)</li>
+
+ <li>screen (dim)</li>
+
+ <li>vte (dim, italics)</li>
+
+ <li>xterm (dim, italics)</li>
+ </ul>
+
+ <h3><a name="h3-documentation" id=
+ "h3-documentation">Documentation</a></h3>
+
+ <p>As usual, this release</p>
+
+ <ul>
+ <li>
+ <p>improves documentation by describing new features,</p>
+ </li>
+
+ <li>
+ <p>attempts to improve the description of features which
+ users have found confusing</p>
+ </li>
+
+ <li>
+ <p>fills in overlooked descriptions of features which were
+ described in the <a href=
+ "http://invisible-island.net/ncurses/NEWS.html">NEWS</a> file
+ but treated sketchily in manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In addition, the mechanism for producing HTML versions of the
+ documentation has been improved:</p>
+
+ <ul>
+ <li>
+ <p>use an improved version of <a href=
+ "http://invisible-island.net/scripts/man2html.html">man2html</a>
+ to generate html manpages.</p>
+ </li>
+
+ <li>
+ <p>regenerated <a href=
+ "http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html">
+ NCURSES-Programming-HOWTO.html</a> to fix some of the broken
+ html emitted by docbook.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
+ bug-fixes</a></h3>
+
+ <ul>
+ <li>
+ <p>Ada95 binding:</p>
+
+ <ul>
+ <li>
+ <p>modify makefile rules to ensure that the PIC option is
+ not used when building a static library</p>
+ </li>
+
+ <li>
+ <p>make Ada95 build-fix for big-endian architectures such
+ as sparc. This undoes one of the fixes from <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20110319">
+ 20110319</a>, which added an
+ “<code>Unused</code>” member to
+ representation clauses, replacing that with pragmas to
+ suppress warnings about unused bits.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>Color and attributes:</p>
+
+ <ul>
+ <li>
+ <p>parenthesize parameter of <code>COLOR_PAIR</code> and
+ <code>PAIR_NUMBER</code> in curses.h in case it happens
+ to be a comma-expression.</p>
+ </li>
+
+ <li>
+ <p>improve <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20021221">
+ 20021221</a> workaround for broken acs, handling a case
+ where that ACS_<em>xxx</em> character is not in the
+ <code>acsc</code> string but there is a known
+ wide-character which can be used.</p>
+ </li>
+
+ <li>
+ <p>modify <a href=
+ "http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions">
+ init_pair</a> to accept -1's for color value after
+ <a href=
+ "http://invisible-island.net/ncurses/man/default_colors.3x.html">
+ assume_default_colors</a> has been called.</p>
+ </li>
+
+ <li>
+ <p>add a check in <a href=
+ "http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions">
+ start_color</a> to limit color-pairs to 256 when extended
+ colors are not supported.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>Resizing the screen:</p>
+
+ <ul>
+ <li>
+ <p>propagate error-returns from wresize, i.e., the
+ internal increase_size and decrease_size functions
+ through <a href=
+ "http://invisible-island.net/ncurses/man/resizeterm.3x.html">
+ resize_term</a>.</p>
+ </li>
+
+ <li>
+ <p>add check for zero/negative dimensions for
+ <code>resizeterm</code> and <code>resize_term</code>.</p>
+ </li>
+
+ <li>
+ <p>modify <code>resizeterm</code> to always push a
+ <code>KEY_RESIZE</code> onto the fifo, even if screensize
+ is unchanged. Modify library to push a
+ <code>KEY_RESIZE</code> if there was a SIGWINCH, even if
+ it does not call <code>resizeterm</code>). These changes
+ eliminate the case where a SIGWINCH is received, but ERR
+ is returned from <code>wgetch</code> or
+ <code>wgetnstr</code> because the screen dimensions did
+ not change.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>Low-level interfaces</p>
+
+ <ul>
+ <li>
+ <p>fix an old bug in the termcap emulation;
+ “<code>%i</code>” was ignored in
+ <code>tparm</code> because the parameters to be
+ incremented were already on the internal stack.</p>
+ </li>
+
+ <li>
+ <p>change “<code>%l</code>” behavior in tparm
+ to push the string length onto the stack rather than
+ saving the formatted length into the output buffer.</p>
+ </li>
+
+ <li>
+ <p>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 <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t980725">980725</a>).</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>High-level interfaces
+
+ <ul>
+ <li>
+ <p>modify internal recursion in <code>wgetch</code> which
+ handles cooked mode to check if the call to
+ <code>wgetnstr</code> returned an error. This can happen
+ when both <code>nocbreak</code> and <code>nodelay</code>
+ are set, for instance (see note for <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t960418">960418</a>).</p>
+ </li>
+
+ <li>
+ <p>add a check in internal function
+ <code>waddch_nosync</code> to ensure that tab characters
+ are treated as control characters; some broken locales
+ claim they are printable.</p>
+ </li>
+
+ <li>
+ <p>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</p>
+ </li>
+
+ <li>
+ <p>fix special case where double-width character
+ overwrites a single- width character in the first
+ column.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+
+ <h3><a name="h3-config-config" id=
+ "h3-config-config">Configuration changes</a></h3>
+
+ <h4><a name="h4-config-major" id="h4-config-major">Major
+ changes</a></h4>
- <p>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!</p>
+ <p>The <em class="small-caps">ncurses</em> 6.0 configure script
+ makes changes to the <em>default</em> value of several configure
+ options, depending on the <code>--with-abi-version</code> option
+ (i.e., whether its value is “5” or
+ “6”):</p>
- <p>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.</p>
+ <dl>
+ <dt><code>--enable-const</code></dt>
+
+ <dd>
+ <p>Feature introduced in <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t970405">970405</a>
+ supports the use of <code>const</code> where X/Open Curses
+ should have, but did not. NetBSD curses does something
+ similar with <code>const</code>.</p>
+ </dd>
+
+ <dt><code>--enable-ext-colors</code></dt>
+
+ <dd>
+ <p>Extends the <code>cchar_t</code> structure to allow more
+ than 16 colors to be encoded. This applies only to the
+ wide-character (<code>--enable-widec</code>)
+ configuration.</p>
+ </dd>
+
+ <dt><code>--enable-ext-mouse</code></dt>
+
+ <dd>
+ <p>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.</p>
+ </dd>
+
+ <dt><code>--enable-ext-putwin</code></dt>
+
+ <dd>
+ <p>Modifies the file-format written by <code>putwin</code> to
+ use printable text rather than binary files, allowing
+ <code>getwin</code> to read screen dumps written by
+ differently-configured ncurses libraries. The extended
+ <code>getwin</code> can still read binary screen dumps from
+ the <em>same</em> configuration of ncurses. This does not
+ change the ABI (the binary interface seen by calling
+ applications).</p>
+ </dd>
+
+ <dt><code>--enable-interop</code></dt>
+
+ <dd>
+ <p>Modifies the <code>FIELDTYPE</code> structure used for the
+ form library to make it more generic.</p>
+ </dd>
+
+ <dt><code>--enable-lp64</code></dt>
+
+ <dd>
+ <p>Allows an application to define <code>_LP64</code> to
+ declare <code>chtype</code> and <code>mmask_t</code> as
+ simply “<code>unsigned</code>” rather than the
+ configured types using the <code>--with-chtype</code> and
+ <code>--with-mmask_t</code> options.</p>
+ </dd>
+
+ <dt><code>--enable-sp-funcs</code></dt>
+
+ <dd>
+ <p>Compile-in support for extended functions which accept a
+ SCREEN pointer, reducing the need for juggling the global SP
+ value with <a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-set_term">
+ set_term</a> and <a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-delscreen">
+ delscreen</a>.</p>
+ </dd>
- <p>The ncurses distribution is available via anonymous FTP at the
- GNU distribution site <a href=
- "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .<br>
+ <dt><code>--with-chtype=uint32_t</code></dt>
- It is also available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
+ <dd>
+ <p>Makes <code>chtype</code> explicitly a 32-bit unsigned
+ value.</p>
+ </dd>
+
+ <dt><code>--with-mmask_t=uint32_t</code></dt>
- <h1>Release Notes</h1>
+ <dd>
+ <p>Makes <code>mmask_t</code> explicitly a 32-bit unsigned
+ value.</p>
+ </dd>
- <p>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.</p>
+ <dt><code>--with-tparm-arg=intptr_t</code></dt>
- <p>This is a bug-fix release, correcting a small number of urgent
- problems in the ncurses library from the 5.8 release.</p>
+ <dd>
+ <p>X/Open Curses declares <a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output">
+ tparm</a> using <code>long</code> for each of the parameters
+ aside from the formatting string, presuming that
+ <code>long</code> and <code>char*</code> are the same size.
+ This configure option uses <code>intptr_t</code> which
+ provides a better guarantee of the sizes.</p>
+ </dd>
+ </dl>
- <p>It also improves the Ada95 binding:</p>
+ <p>The configure script no longer checks for antique compilers;
+ <code>c89</code> 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 <em class=
+ "small-caps">ncurses</em> 6.0 with any of the current (or not so
+ current) C compilers available in 2015.</p>
+
+ <p>The configure script, by the way, makes changes which do not
+ work with systems whose <code>/bin/sh</code> is non-POSIX. This
+ mainly affects Solaris (the other vendor <em class=
+ "small-caps">unix</em> systems have followed the POSIX guidelines
+ for the past twenty years). If you must build on Solaris, its
+ <a href=
+ "http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html">xpg4</a>
+ binaries suffice, e.g.,</p>
+
+ <blockquote class="code-block">
+ <!--{{atr2html-->
+
+ <p style="font-family: monospace; font-size: 10pt;">
+ <font color="#800000">#!/bin/sh</font><br>
+ <font color="#008080">WHAT</font>=<strong><em><font color=
+ "#800000">`</font></em></strong>hostname|sed -e <font color="#800080">'s/\..*//'</font><strong><em><font color="#800000">`</font></em></strong><br>
+
+ <font color="#008080">OUT</font>=configure.out<br>
+ <strong><font color=
+ "#000080">cat</font></strong> >><font color=
+ "#008080">$OUT</font> <font color=
+ "#800080"><<EOF/</font><font color="#800080"><br>
+ ** </font><strong><em><font color=
+ "#800000">`</font></em></strong>date<strong><em><font color=
+ "#800000">`</font></em></strong><font color="#800080"><br>
+ ** node: </font><font color=
+ "#008080">$WHAT</font><font color="#800080"><br>
+ ** user: </font><strong><em><font color=
+ "#800000">`</font></em></strong>id<strong><em><font color=
+ "#800000">`</font></em></strong><font color="#800080"><br>
+ ** conf: $*<br>
+ EOF/</font><br>
+ <br>
+ <font color="#008080">SHELL</font>=/bin/sh<br>
+ <strong><font color=
+ "#000080">if</font></strong> <strong><font color=
+ "#000080">test</font></strong> -f /usr/xpg4/bin/sh<br>
+
+ <strong><font color="#000080">then</font></strong><br>
+ <font color=
+ "#008080">CONFIG_SHELL</font>=/usr/xpg4/bin/sh<br>
+ <strong><font color="#000080">export</font></strong> CONFIG_SHELL<br>
+
+ <font color=
+ "#008080">SHELL</font>=<font color=
+ "#008080">$CONFIG_SHELL</font><br>
+ <strong><font color="#000080">fi</font></strong><br>
+ <br>
+ rm -f config.status config.cache<br>
+ <font color="#008080">TOP</font>=<font color=
+ "#008080">$HOME</font>/<font color="#008080">$WHAT</font><br>
+ <font color=
+ "#008080">$SHELL</font> ./configure --verbose \<br>
+
+ --disable-echo \<br>
+
+ --disable-overwrite \<br>
+
+ --enable-warnings \<br>
+
+ --with-warnings \<br>
+
+ --prefix=<font color="#008080">$TOP</font> <font color="#008080">$*</font> <strong><font color="#008080">2</font></strong>>&<strong><font color="#008080">1</font></strong> | tee -a <font color="#008080">$OUT</font><br>
+
+ <!--atr2html}}--></p>
+ </blockquote>
+
+ <p>Other major changes to the configure script include:</p>
<ul>
- <li>fixes a longstanding portability problem with its use of
- the <a href=
- "http://invisible-island.net/ncurses/man/form_fieldtype.3x">set_field_type</a>
- function. Because that function uses variable-length argument
- lists, its interface with gnat does not work with certain
- platforms.</li>
+ <li>
+ <p>ABI 6 is now the default, intending that the existing ABI
+ 5 should build as before using the
+ “<code>--with-abi-version=5</code>” option.</p>
+ </li>
+
+ <li>
+ <p>added <code>--with-extra-suffix</code> option to help with
+ installing nonconflicting ncurses6 packages, e.g., avoiding
+ header- and library-conflicts.</p>
+
+ <p><strong>NOTE:</strong> as a side-effect, this renames</p>
- <li>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.
+ <blockquote>
+ <p><code>adacurses-config</code> to
+ <code>adacurses5-config</code> and<br>
+ <code>adacursesw-config</code> to
+ <code>adacursesw5-config</code></p>
+ </blockquote>
+ </li>
- <p>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 <a href=
- "http://invisible-island.net/ncurses/ncurses-Ada95.html">here</a>.</p>
+ <li>
+ <p>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.</p>
</li>
- <li>additional improvements were made for portability of the
- ncurses examples, adding rpm- and dpkg-scripts for test-builds.
- See <a href=
- "http://invisible-island.net/ncurses/ncurses-examples.html">this
- page</a> for snapshots and other information.</li>
+ <li>
+ <p>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.</p>
+ </li>
</ul>
- <h1>Features of Ncurses</h1>
+ <h4><a name="h4-config-options" id=
+ "h4-config-options">Configuration options</a></h4>
+
+ <p>There are several new (or extended) configure options:</p>
+
+ <dl>
+ <dt><code>--disable-db-install</code></dt>
+
+ <dd>
+ <p>Do not install the terminal database. This is used to omit
+ features for packages, as done with
+ <code>--without-progs</code>. The option simplifies building
+ cross-compile support packages.</p>
+ </dd>
+
+ <dt><code>--disable-gnat-projects</code></dt>
+
+ <dd>
+ <p>This option is used for regression testing</p>
+ </dd>
+
+ <dt><code>--disable-lib-suffixes</code></dt>
+
+ <dd>
+ <p>Suppress the “w”, “t” or
+ “tw” suffixes which normally would be added to
+ the library names for the <code>--enable-widec</code> and
+ <code>--with-pthread</code> options.</p>
+ </dd>
+
+ <dt><code>--with-cxx-shared</code></dt>
+
+ <dd>
+ <p>When <code>--with-shared</code> 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.</p>
+ </dd>
+
+ <dt><code>--with-hashed-db</code></dt>
+
+ <dd>
+ <p>Extended this configure option to simplify building with
+ different versions of Berkeley database using FreeBSD
+ ports.</p>
+ </dd>
+
+ <dt><code>--with-pc-suffix</code></dt>
- <p>The ncurses package is fully compatible with SVr4 (System V
- Release 4) curses:</p>
+ <dd>
+ <p>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.</p>
+ </dd>
+
+ <dt><code>--with-xterm-kbs</code></dt>
+
+ <dd>
+ <p>Configure xterm's terminfo entries to use either BS
+ (<code>^H</code>, i.e., ASCII backspace) or DEL
+ (<code>^?</code>, or 127).</p>
+ </dd>
+ </dl>
+
+ <h3><a name="h3-portability" id=
+ "h3-portability">Portability</a></h3>
+
+ <h4><a name="h4-port-mingw" id="h4-port-mingw">MinGW</a></h4>
+
+ <p>Most of the portability-related work since <a href=
+ "http://invisible-island.net/ncurses/announce-5.9.html"><em class="small-caps">
+ ncurses</em> 5.9</a> extended and improved the MinGW port
+ introduced in <a href=
+ "http://invisible-island.net/ncurses/announce-5.8.html"><em class="small-caps">
+ ncurses</em> 5.8</a>.</p>
+
+ <p>The MinGW port can be readily cross-compiled:</p>
<ul>
- <li>All 257 of the SVr4 calls have been implemented (and are
- documented).</li>
+ <li>
+ <p>modified configure script to allow creating dll's for
+ MinGW when cross-compiling.</p>
+ </li>
- <li>Full support for SVr4 curses features including keyboard
- mapping, color, forms-drawing with ACS characters, and
- automatic recognition of keypad and function keys.</li>
+ <li>
+ <p>enforced Windows-style path-separator if
+ cross-compiling,</p>
+ </li>
- <li>An emulation of the SVr4 panels library, supporting a stack
- of windows with backing store, is included.</li>
+ <li>
+ <p>added scripts for test-builds of cross-compiled packages
+ for ncurses6 to MinGW.</p>
+ </li>
- <li>An emulation of the SVr4 menus library, supporting a
- uniform but flexible interface for menu programming, is
- included.</li>
+ <li>
+ <p>added pc-files to the MinGW cross-compiling
+ test-packages.</p>
+ </li>
- <li>An emulation of the SVr4 form library, supporting data
- collection through on-screen forms, is included.</li>
+ <li>
+ <p>added script for building test-packages of binaries
+ cross-compiled to MinGW using NSIS.</p>
+ </li>
- <li>Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
- SVr4 curses uses.</li>
+ <li>
+ <p>added <code>nc_mingw.h</code> to installed headers for
+ MinGW port; this is needed for cross-compiling <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.</p>
+ </li>
- <li>The utilities have options to allow you to filter terminfo
- entries for use with less capable
- <strong>curses</strong>/<strong>terminfo</strong> versions such
- as the HP/UX and AIX ports.</li>
+ <li>
+ <p>added test-packages for cross-compiling ncurses-examples
+ using the MinGW test-packages.</p>
+ </li>
</ul>
- <p>The ncurses package also has many useful extensions over
- SVr4:</p>
+ <p>The MinGW-specific Windows driver accounts for several
+ changes:</p>
<ul>
- <li>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).</li>
+ <li>
+ <p>wide-character display is made usable by replacing MinGW's
+ non-working <code>wcrtomb</code> and <code>wctomb</code>
+ functions.</p>
+ </li>
+
+ <li>
+ <p>implemented some display features: <a href=
+ "http://invisible-island.net/ncurses/man/curs_beep.3x.html">beep</a>,
+ <a href=
+ "http://invisible-island.net/ncurses/man/curs_beep.3x.html">flash</a>,
+ <a href=
+ "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set">
+ curs_set</a>.</p>
+ </li>
- <li>Unlike SVr3 curses, ncurses can write to the
- rightmost-bottommost corner of the screen if your terminal has
- an insert-character capability.</li>
+ <li>
+ <p>the driver handles repainting on endwin/refresh
+ combination.</p>
+ </li>
- <li>Ada95 and C++ bindings.</li>
+ <li>
+ <p>modified treatment of <code>TERM</code> variable for MinGW
+ port to allow explicit use of the Windows console driver by
+ checking if <code>$TERM</code> is set to
+ “<code>#win32console</code>” or an abbreviation
+ of that.</p>
+ </li>
- <li>Support for mouse event reporting with X Window xterm and
- FreeBSD and OS/2 console windows.</li>
+ <li>
+ <p>the Windows driver also matches the special
+ <code>TERM</code> value “unknown”</p>
+ </li>
- <li>Extended mouse support via Alessandro Rubini's gpm
- package.</li>
+ <li>
+ <p>the driver now returns characters for special keys, (like
+ <code>ansi.sys</code> does), when keypad mode is off, rather
+ than returning nothing at all.</p>
+ </li>
- <li>The function <code>wresize</code> allows you to resize
- windows, preserving their data.</li>
+ <li>
+ <p>the driver checks a new environment variable <a href=
+ "http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_CONSOLE2">
+ NCURSES_CONSOLE2</a> to optionally work around a deficiency
+ in <code>Console2</code> (and its descendent
+ <code>ConsoleZ</code>) which hang when an application creates
+ a console buffer.</p>
+ </li>
+ </ul>
- <li>The function <code>use_default_colors</code> allows you to
- use the terminal's default colors for the default color pair,
- achieving the effect of transparent colors.</li>
+ <p>Finally, there are other improvements:</p>
- <li>The functions <code>keyok</code> and
- <code>define_key</code> 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.</li>
+ <ul>
+ <li>
+ <p>MinGW is one of the configurations where <em class=
+ "small-caps">ncurses</em> installs by default into /usr</p>
+ </li>
- <li>Support for 256-color terminals, such as modern xterm, when
- configured using the <code>--enable-ext-colors</code>
- option.</li>
+ <li>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.</li>
- <li>Support for 16-color terminals, such as <em>aixterm</em>
- and <em>modern xterm</em>.</li>
+ <li>
+ <p>extend Windows support to work with MSYS2;</p>
- <li>Better cursor-movement optimization. The package now
- features a cursor-local-movement computation more efficient
- than either BSD's or System V's.</li>
+ <ul>
+ <li>
+ <p>this works with a scenario where there is an
+ ANSI-escape handler such as <code>ansicon</code> running
+ in the console window.</p>
+ </li>
- <li>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 <code>quickch</code>
- routine.</li>
+ <li>wrap <code>isatty</code> calls with a macro, provide a
+ corresponding set of support routines to address
+ differences between MinGW and MSYS2.</li>
+ </ul>
+ </li>
- <li>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.</li>
+ <li>
+ <p>ensure <code>WINVER</code> is defined in makefiles rather
+ than using headers.</p>
+ </li>
- <li>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).</li>
+ <li>
+ <p>add check for the <code>gnatprep</code>
+ “<code>-T</code>” option.</p>
+ </li>
- <li>The tic(1)/captoinfo utility provided with ncurses has the
- ability to translate many termcaps from the XENIX, IBM and
- AT&T extension sets.</li>
+ <li>
+ <p>work around a bug introduced by <a href=
+ "http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual">
+ gcc 4.8.1</a> in MinGW which breaks "trace" feature.</p>
+ </li>
- <li>A BSD-like tset(1) utility is provided.</li>
+ <li>
+ <p>add a driver-name method to each of the drivers.</p>
+ </li>
+ </ul>
- <li>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.</li>
-
- <li>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.)</li>
+ <h4><a name="h4-port-systems" id="h4-port-systems">Other
+ ports</a></h4>
- <li>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.</li>
-
- <li>A script (<strong>capconvert</strong>) 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.</li>
-
- <li>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.</li>
-
- <li>The table-of-entries utility <strong>toe</strong> makes it
- easy for users to see exactly what terminal types are available
- on the system.</li>
-
- <li>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 <code>#undef</code>.</li>
-
- <li>An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
- interface.</li>
- </ul>
-
- <h1>State of the Package</h1>
-
- <p>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.</p>
-
- <p>The ncurses code has been tested with a wide variety of
- applications including (versions starting with those noted):</p>
+ <p>These changes affect certain platforms (ports):</p>
- <dl>
- <dt>cdk</dt>
+ <ul>
+ <li>
+ <p>the configure script knows how to build shared libraries
+ with DragonFlyBSD and Interix.</p>
+ </li>
- <dd>Curses Development Kit<br>
- <a href=
- "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
+ <li>
+ <p>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:</p>
+
+ <ul>
+ <li>
+ <p>the shared-library suffix for AIX 5 and 6 is now
+ ".so"</p>
+ </li>
+
+ <li>
+ <p>the <code>-brtl</code> option is used with AIX 5-7; it
+ is needed to link with the shared libraries.</p>
+ </li>
+ </ul>
+ </li>
- <a href=
- "http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>
+ <li>
+ <p>the configure <code>--enable-pc-files</code> option takes
+ into account the <a href=
+ "http://linux.die.net/man/1/pkg-config"><code>PKG_CONFIG_PATH</code></a>
+ variable.</p>
+ </li>
- <dt>ded</dt>
+ <li>
+ <p>the configure option <code>--with-pkg-config-libdir</code>
+ provides control over the actual directory into which
+ pc-files are installed.</p>
+ </li>
- <dd>directory-editor<br>
- <a href=
- "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>
+ <li>
+ <p>the build scripts add explicit -ltinfo, etc., to the
+ generated ".pc" file when <code>ld</code> option
+ “<code>--as-needed</code>” is used, or when
+ ncurses and tinfo are installed without using rpath.</p>
+ </li>
- <dt>dialog</dt>
+ <li>
+ <p>the configure script disallows conflicting options
+ “<code>--with-termlib</code>” and
+ “<code>--enable-term-driver</code>”.</p>
+ </li>
- <dd>the underlying application used in Slackware's setup, and
- the basis for similar applications on GNU/Linux.<br>
- <a href=
- "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>
+ <li>
+ <p>the check for missing c++ compiler to work when no error
+ is reported, and no variables set is improved (see note for
+ <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20021206">20021206</a>).</p>
+ </li>
- <dt>lynx</dt>
+ <li>
+ <p>the misc/gen_edit.sh script selects a "linux" entry which
+ works with the current kernel rather than assuming it is
+ always "linux3.0"</p>
+ </li>
- <dd>the character-screen WWW browser<br>
- <a href=
- "http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>
+ <li>
+ <p>the test/configure script makes it simpler to override
+ names of curses-related libraries, to help with linking with
+ pdcurses in MinGW environment.</p>
+ </li>
- <dt>Midnight Commander</dt>
+ <li>
+ <p>the configure-script/ifdef's allow the BSD OLD_TTY feature
+ to be suppressed if the type of <code>ospeed</code> is
+ configured using the option <code>--with-ospeed</code> to not
+ be a <code>short</code>. By default, it is a
+ <code>short</code> for termcap-compatibility.</p>
+ </li>
- <dd>file manager<br>
- <a href=
- "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>
+ <li>
+ <p>the MKlib_gen.sh script works around a recent change in
+ gcc 5 (released <a href=
+ "https://gcc.gnu.org/gcc-5/">mid-2015</a>) which essentially
+ emits multiple <code>#line</code> statements for the same
+ position in a file.</p>
+ </li>
- <dt>mutt</dt>
+ <li>
+ <p>the configure script works with Minix3.2 (see <a href=
+ "http://invisible-island.net/autoconf/portability-test.html">note</a>
+ on portability)</p>
+ </li>
+
+ <li>
+ <p>OS/2 redux:</p>
- <dd>mail utility<br>
- <a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>
+ <ul>
+ <li>
+ <p>the configure script supports OS/2 kLIBC.</p>
+ </li>
- <dt>ncftp</dt>
+ <li>
+ <p>the <code>--with-lib-prefix</code> option allows
+ configuring for old/new flavors of OS/2 EMX.</p>
+ </li>
+ </ul>
+ </li>
- <dd>file-transfer utility<br>
- <a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>
+ <li>
+ <p>improved configure-script checks for
+ <code>_XOPEN_SOURCE</code>:</p>
+
+ <ul>
+ <li>
+ <p>the definition works starting with Solaris 10.</p>
+ </li>
+
+ <li>
+ <p>the definition is suppressed for IRIX64, since its
+ header files have a conflict versus
+ <code>_SGI_SOURCE</code>.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
- <dt>nvi</dt>
+ <h2><a name="h2-features" id="h2-features">Features of <em class=
+ "small-caps">ncurses</em></a></h2>
- <dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
- and later.<br>
- <a href=
- "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
- </dd>
+ <p>The <em class="small-caps">ncurses</em> package is fully
+ upward-compatible with SVr4 (System V Release 4) curses:</p>
- <dt>pinfo</dt>
+ <ul>
+ <li>
+ <p>All of the SVr4 calls have been implemented (and are
+ documented).</p>
+ </li>
- <dd>Lynx-like info browser. <a href=
- "https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>
+ <li>
+ <p><em class="small-caps">ncurses</em> 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.</p>
+ </li>
- <dt>tin</dt>
+ <li>
+ <p><em class="small-caps">ncurses</em> provides these SVr4
+ add-on libraries (not part of X/Open Curses):</p>
+
+ <ul>
+ <li>
+ <p>the panels library, supporting a stack of windows with
+ backing store.</p>
+ </li>
+
+ <li>
+ <p>the menus library, supporting a uniform but flexible
+ interface for menu programming.</p>
+ </li>
+
+ <li>
+ <p>the form library, supporting data collection through
+ on-screen forms.</p>
+ </li>
+ </ul>
+ </li>
- <dd>newsreader, supporting color, MIME <a href=
- "http://www.tin.org/">http://www.tin.org/</a></dd>
- </dl>
+ <li>
+ <p><em class="small-caps">ncurses</em>'s terminal database is
+ fully compatible with that used by SVr4 curses.</p>
+
+ <ul>
+ <li><em class="small-caps">ncurses</em> supports
+ user-defined capabilities which it can see, but which are
+ hidden from SVr4 curses applications using the
+ <em>same</em> terminal database.</li>
+
+ <li>
+ <p>It can be optionally configured to match the format
+ used in related systems such as AIX and Tru64.</p>
+ </li>
+
+ <li>
+ <p>Alternatively, <em class="small-caps">ncurses</em> can
+ be configured to use hashed databases rather than the
+ directory of files used by SVr4 curses.</p>
+ </li>
+ </ul>
+ </li>
- <p>as well as some that use ncurses for the terminfo support
- alone:</p>
+ <li>
+ <p>The <em class="small-caps">ncurses</em> utilities have
+ options to allow you to filter terminfo entries for use with
+ less capable <em>curses</em>/<em>terminfo</em> versions such
+ as the HP/UX and AIX ports.</p>
+ </li>
+ </ul>
- <dl>
- <dt>minicom</dt>
+ <p>The <em class="small-caps">ncurses</em> package also has many
+ useful extensions over SVr4:</p>
- <dd>terminal emulator<br>
- <a href=
- "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>
+ <ul>
+ <li>
+ <p>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).</p>
+ </li>
+
+ <li>
+ <p>Unlike SVr3 curses, <em class="small-caps">ncurses</em>
+ can write to the rightmost-bottommost corner of the screen if
+ your terminal has an insert-character capability.</p>
+ </li>
+
+ <li>
+ <p>Ada95 and C++ bindings.</p>
+ </li>
+
+ <li>
+ <p>Support for mouse event reporting with X Window xterm and
+ FreeBSD and OS/2 console windows.</p>
+ </li>
+
+ <li>
+ <p>Extended mouse support via Alessandro Rubini's gpm
+ package.</p>
+ </li>
+
+ <li>
+ <p>The function <code>wresize</code> allows you to resize
+ windows, preserving their data.</p>
+ </li>
+
+ <li>
+ <p>The function <code>use_default_colors</code> allows you to
+ use the terminal's default colors for the default color pair,
+ achieving the effect of transparent colors.</p>
+ </li>
+
+ <li>
+ <p>The functions <code>keyok</code> and
+ <code>define_key</code> allow you to better control the use
+ of function keys, e.g., disabling the <em class=
+ "small-caps">ncurses</em> KEY_MOUSE, or by defining more than
+ one control sequence to map to a given key code.</p>
+ </li>
+
+ <li>
+ <p>Support for 256-color terminals, such as modern xterm.</p>
+ </li>
+
+ <li>
+ <p>Support for 16-color terminals, such as <em>aixterm</em>
+ and <em>modern xterm</em>.</p>
+ </li>
+
+ <li>
+ <p>Better cursor-movement optimization. The package now
+ features a cursor-local-movement computation more efficient
+ than either BSD's or System V's.</p>
+ </li>
+
+ <li>
+ <p>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
+ <code>quickch</code> routine.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>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).</p>
+ </li>
+
+ <li>
+ <p>The <a href=
+ "http://invisible-island.net/ncurses/man/tic.1m.html">tic</a>/<a href="http://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
+ utility provided with <em class="small-caps">ncurses</em> has
+ the ability to translate many termcaps from the XENIX, IBM
+ and AT&T extension sets.</p>
+ </li>
+
+ <li>
+ <p>A BSD-like <a href=
+ "http://invisible-island.net/ncurses/man/tset.1.html">tset</a>
+ utility is provided.</p>
+ </li>
+
+ <li>
+ <p>The <em class="small-caps">ncurses</em> 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.</p>
+ </li>
+
+ <li>
+ <p>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.)</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>The table-of-entries utility <a href=
+ "http://invisible-island.net/ncurses/man/toe.1m.html">toe</a>
+ makes it easy for users to see exactly what terminal types
+ are available on the system.</p>
+ </li>
+
+ <li>
+ <p>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 <code>#undef</code>.</p>
+ </li>
+
+ <li>
+ <p>Extensive documentation is provided (see the <em><a href=
+ "http://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
+ Additional Reading</a></em> section of the <em><a href=
+ "http://invisible-island.net/ncurses/ncurses.faq.html"><em class="small-caps">
+ ncurses</em> FAQ</a></em> for online documentation).</p>
+ </li>
+ </ul>
+
+ <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
+ <em class="small-caps">ncurses</em></a></h2>
+
+ <p>The <em class="small-caps">ncurses</em> distribution includes
+ a selection of test programs (including a few games). These are
+ available separately as <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
+
+ <p>The ncurses library has been tested with a wide variety of
+ applications including:</p>
+
+ <blockquote>
+ <dl>
+ <dt>cdk</dt>
+
+ <dd>
+ <p>Curses Development Kit</p>
+
+ <p><a href=
+ "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
+ </p>
+ </dd>
+
+ <dt>ded</dt>
+
+ <dd>
+ <p>directory-editor</p>
+
+ <p><a href=
+ "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></p>
+ </dd>
+
+ <dt>dialog</dt>
+
+ <dd>
+ <p>the underlying application used in Slackware's setup,
+ and the basis for similar install/configure applications on
+ many systems.</p>
+
+ <p><a href=
+ "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></p>
+ </dd>
+
+ <dt>lynx</dt>
+
+ <dd>
+ <p>the text WWW browser</p>
+
+ <p><a href=
+ "http://lynx.isc.org/">http://lynx.isc.org/</a></p>
+ </dd>
+
+ <dt>Midnight Commander</dt>
+
+ <dd>
+ <p>file manager</p>
+
+ <p><a href=
+ "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></p>
+ </dd>
+
+ <dt>mutt</dt>
+
+ <dd>
+ <p>mail utility</p>
+
+ <p><a href=
+ "http://www.mutt.org/">http://www.mutt.org/</a></p>
+ </dd>
+
+ <dt>ncftp</dt>
+
+ <dd>
+ <p>file-transfer utility</p>
+
+ <p><a href=
+ "http://www.ncftp.com/">http://www.ncftp.com/</a></p>
+ </dd>
+
+ <dt>nvi</dt>
+
+ <dd>
+ <p>New vi uses ncurses.</p>
+
+ <p><a href=
+ "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
+ </p>
+ </dd>
+
+ <dt>tin</dt>
+
+ <dd>
+ <p>newsreader, supporting color, MIME</p>
+
+ <p><a href=
+ "http://www.tin.org/">http://www.tin.org/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
- <dt>vile</dt>
+ <p>as well as some that use <em class="small-caps">ncurses</em>
+ for the terminfo support alone:</p>
- <dd>vi-like-emacs<br>
+ <blockquote>
+ <dl>
+ <dt>minicom</dt>
+
+ <dd>
+ <p>terminal emulator for serial modem connections</p>
+
+ <p><a href=
+ "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></p>
+ </dd>
+
+ <dt>mosh</dt>
+
+ <dd>
+ <p>a replacement for <code>ssh</code>.</p>
+
+ <p><a href=
+ "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
+ </dd>
+
+ <dt>tack</dt>
+
+ <dd>
+ <p>terminfo action checker</p>
+
+ <p><a href=
+ "http://invisible-island.net/ncurses/tack.html">http://invisible-island.net/ncurses/tack.html</a></p>
+ </dd>
+
+ <dt>tmux</dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "http://tmux.github.io/">http://tmux.github.io/</a></p>
+ </dd>
+
+ <dt>vile</dt>
+
+ <dd>
+ <p>vi-like-emacs may be built to use the terminfo, termcap
+ or curses interfaces.</p>
+
+ <p><a href=
+ "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <p>and finally, those which use only the termcap interface:</p>
+
+ <blockquote>
+ <dl>
+ <dt>emacs</dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "http://www.gnu.org/software/emacs/">http://www.gnu.org/software/emacs/</a></p>
+ </dd>
+
+ <dt>screen</dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "http://www.gnu.org/software/screen/">http://www.gnu.org/software/screen/</a></p>
+ </dd>
+
+ <dt>vim</dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "http://www.vim.org/">http://www.vim.org/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <h2><a name="h2-development" id="h2-development">Development
+ activities</a></h2>
+
+ <p>Zeyd Ben-Halim started <em class="small-caps">ncurses</em>
+ 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
+ <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
+ Thomas Dickey also acts as the maintainer for the Free Software
+ Foundation, which holds the <a href=
+ "http://invisible-island.net/ncurses/ncurses-license.html">copyright
+ on ncurses</a>.</p>
+
+ <p>Contact the current maintainers at</p>
+
+ <blockquote>
+ <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
+ </blockquote>
+
+ <p>To join the ncurses mailing list, please write email to</p>
+
+ <blockquote>
<a href=
- "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
- </dl>
+ "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
+ </blockquote>containing the line:
- <p>The ncurses distribution includes a selection of test programs
- (including a few games).</p>
-
- <h2>Who's Who and What's What</h2>
-
- <p>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 <a href=
- "mailto:dickey@invisible-island.net">Thomas Dickey</a>. Thomas
- Dickey acts as the maintainer for the Free Software Foundation,
- which holds the copyright on ncurses. Contact the current
- maintainers at <a href=
- "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.</p>
-
- <p>To join the ncurses mailing list, please write email to
- <code>bug-ncurses-request@gnu.org</code> containing the line:</p>
- <pre>
- subscribe <name>@<host.domain>
-</pre>
+ <blockquote>
+ <p><code>subscribe</code>
+ <em><name>@<host.domain></em></p>
+ </blockquote>
<p>This list is open to anyone interested in helping with the
development and testing of this package.</p>
- <p>Beta versions of ncurses and patches to the current release
- are made available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
+ <p>Beta versions of <em class="small-caps">ncurses</em> and
+ patches to the current release are made available at</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
+ </blockquote>
<p>There is an archive of the mailing list here:</p>
- <p><a href=
- "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
- (also <a href=
- "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+ <blockquote>
+ <p><a href=
+ "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
+ (also <a href=
+ "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+ </blockquote>
+
+ <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
+ resources</a></h2>
- <h2>Future Plans</h2>
+ <p>The release notes make scattered references to these pages,
+ which may be interesting by themselves:</p>
<ul>
- <li>Extended-level XPG4 conformance, with internationalization
- support.</li>
+ <li><a href=
+ "http://invisible-island.net/scripts/man2html.html">man2html</a></li>
- <li>Ports to more systems, including DOS and Windows.</li>
- </ul>
+ <li><a href=
+ "http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html">
+ <em class="small-caps">ncurses</em> licensing</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <em class="small-caps">ncurses</em></a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/ncurses-mingw.html">The
+ MinGW port of <em class="small-caps">ncurses</em></a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/tack.html">tack –
+ terminfo action checker</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/autoconf/portability-tar.html">tar
+ versus portability</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/tctest.html">tctest
+ – termcap library checker</a></li>
- <p>We need people to help with these projects. If you are
- interested in working on them, please join the ncurses list.</p>
+ <li><a href=
+ "http://invisible-island.net/ncurses/ncurses.html#download_database">
+ Terminal Database</a></li>
+ </ul>
- <h2>Other Related Resources</h2>
+ <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
+ resources</a></h2>
<p>The distribution provides a newer version of the
terminfo-format terminal description file once maintained by
not covered in the terminfo file at <a href=
"http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
Richard Shuford's archive</a> .</p>
+
+ <div class="nav">
+ <ul>
+ <li><a href="#h2-overview">Overview</a></li>
+
+ <li>
+ <a href="#h2-release-notes">Release Notes</a>
+
+ <ul>
+ <li>
+ <a href="#h3-library">Library improvements</a>
+
+ <ul>
+ <li><a href="#h3-lib-setbuf">Output
+ buffering</a></li>
+
+ <li><a href="#h3-lib-versioning">Symbol
+ versioning</a></li>
+
+ <li><a href="#h3-lib-other">Miscellaneous</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#h3-programs">Program improvements</a>
+
+ <ul>
+ <li><a href="#h4-utilities">Utilities</a></li>
+
+ <li><a href="#h4-examples">Examples</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h3-database">Terminal database</a></li>
+
+ <li><a href="#h3-documentation">Documentation</a></li>
+
+ <li><a href="#h3-bug-fixes">Interesting
+ bug-fixes</a></li>
+
+ <li>
+ <a href="#h3-config-config">Configuration changes</a>
+
+ <ul>
+ <li><a href="#h4-config-major">Major changes</a></li>
+
+ <li><a href="#h4-config-options">Configuration
+ options</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#h3-portability">Portability</a>
+
+ <ul>
+ <li><a href="#h4-port-mingw">MinGW</a></li>
+
+ <li><a href="#h4-port-systems">Other ports</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+
+ <li><a href="#h2-features">Features of <em class=
+ "small-caps">ncurses</em></a></li>
+
+ <li><a href="#h2-who-uses">Applications using <em class=
+ "small-caps">ncurses</em></a></li>
+
+ <li><a href="#h2-development">Development activities</a></li>
+
+ <li><a href="#h2-this-stuff">Related resources</a></li>
+
+ <li><a href="#h2-other-stuff">Other resources</a></li>
+ </ul>
+ </div>
</body>
</html>
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
CF_MFLAGS = @cf_cv_makeflags@
-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
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
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
;;
(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
;;
(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
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
# 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
cf_man_alias=`pwd`/man_alias.sed
cat >$cf_edit_man <<CF_EOF
-#! /bin/sh
+#! $SHELL
# this script is generated by the configure-script CF_MAN_PAGES macro.
prefix="$cf_prefix"
if test "\$form" = normal ; then
if test "$cf_format" = yes ; then
if test "$cf_inboth" = no ; then
- sh \$0 format \$verb \$mandir \$srcdir \$*
+ $SHELL \$0 format \$verb \$mandir \$srcdir \$*
exit $?
fi
fi
if test $cf_inboth = yes ; then
if test \$form != format ; then
- sh \$0 format \$verb \$mandir \$srcdir \$*
+ $SHELL \$0 format \$verb \$mandir \$srcdir \$*
fi
fi
done
# symbols that differ when compiling Ada95 by itself.
-NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib'
+NCURSES_SHLIB2=$SHELL' $(top_srcdir)/misc/shlib'
# values to use as strings
echo creating headers.sh
cat >headers.sh <<CF_EOF
-#! /bin/sh
+#! $SHELL
# This shell script is generated by the 'configure' script. It is invoked in a
# subdirectory of the build tree. It generates a sed-script in the parent
# directory that is used to adjust includes for header files that reside in a
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: configure.in,v 1.618 2015/06/27 22:59:56 tom Exp $
+dnl $Id: configure.in,v 1.619 2015/08/05 23:32:27 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
dnl See http://invisible-island.net/autoconf/ for additional information.
dnl
dnl ---------------------------------------------------------------------------
AC_PREREQ(2.52.20030208)
-AC_REVISION($Revision: 1.618 $)
+AC_REVISION($Revision: 1.619 $)
AC_INIT(ncurses/base/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
CF_DIRS_TO_MAKE
# symbols that differ when compiling Ada95 by itself.
-NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib'
+NCURSES_SHLIB2=$SHELL' $(top_srcdir)/misc/shlib'
AC_SUBST(NCURSES_SHLIB2)
# values to use as strings
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.1062 2015/07/20 22:28:06 tom Exp $
+# $Id: dist.mk,v 1.1064 2015/08/06 23:13:39 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 6
NCURSES_MINOR = 0
-NCURSES_PATCH = 20150725
+NCURSES_PATCH = 20150808
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
<TABLE ALIGN=CENTER BORDER>
<TR ALIGN=LEFT>
<TH>C name</TH><TH>Ada name</TH><TH>man page</TH></TR>
+<TR><TD>_nc_freeall()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_159">Curses_Free_All</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
+<TR><TD>_tracef()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_2">Trace_Put</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
<TR><TD>assume_default_colors()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_156">Assume_Default_Colors</A></TD><TD><A HREF="../man/default_colors.3x.html">default_colors.3x</A></TD></TR>
<TR><TD>baudrate()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_131">Baudrate</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
<TR><TD>beep()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_40">Beep</A></TD><TD><A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
<TR><TD>copywin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_79">Copy</A></TD><TD><A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
<TR><TD>current_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_58">Current</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR>
<TR><TD>current_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_14">Current</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
+<TR><TD>curs_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_153">Set_Cursor_Visibility</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
<TR><TD>curscr</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_2">Current_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
<TR><TD>curses_version()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_157">Curses_Version</A></TD><TD><A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></TD></TR>
-<TR><TD>curs_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_153">Set_Cursor_Visibility</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
<TR><TD>data_ahead()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_54">Data_Ahead</A></TD><TD><A HREF="../man/form_data.3x.html">form_data.3x</A></TD></TR>
<TR><TD>data_behind()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_55">Data_Behind</A></TD><TD><A HREF="../man/form_data.3x.html">form_data.3x</A></TD></TR>
-<TR><TD>define_key()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_124">Define_Key</A></TD><TD><A HREF="../man/define_key.3x.html">define_key.3x</A></TD></TR>
<TR><TD>def_prog_mode()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_148">Save_Curses_Mode</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>delay_output()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_129">Delay_Output</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>define_key()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_124">Define_Key</A></TD><TD><A HREF="../man/define_key.3x.html">define_key.3x</A></TD></TR>
<TR><TD>del_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_15">Delete</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>delay_output()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_129">Delay_Output</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
<TR><TD>delwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_12">Delete</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
<TR><TD>derwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_14">Derived_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
<TR><TD>doupdate()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_61">Update_Screen</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
<TR><TD>field_info()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_25">Info</A></TD><TD><A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></TD></TR>
<TR><TD>field_init()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_36">Get_Field_Init_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
<TR><TD>field_just()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_7">Get_Justification</A></TD><TD><A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></TD></TR>
-<TR><TD>field_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_14">Switch_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
<TR><TD>field_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_15">Get_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
<TR><TD>field_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_16">Get_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
+<TR><TD>field_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_14">Switch_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
<TR><TD>field_pad()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_24">Pad_Character</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
<TR><TD>field_status()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_11">Changed</A></TD><TD><A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
<TR><TD>field_term()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_37">Get_Field_Term_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
<TR><TD>form_driver()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_56">Driver</A></TD><TD><A HREF="../man/form_driver.3x.html">form_driver.3x</A></TD></TR>
<TR><TD>form_fields()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_42">Fields</A></TD><TD><A HREF="../man/form_field.3x.html">form_field.3x</A></TD></TR>
<TR><TD>form_init()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_38">Get_Form_Init_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>form_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_49">Switch_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR>
<TR><TD>form_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_50">Get_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR>
<TR><TD>form_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_51">Get_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR>
+<TR><TD>form_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_49">Switch_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR>
<TR><TD>form_page()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_60">Page</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR>
<TR><TD>form_sub()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_30">Get_Sub_Window</A></TD><TD><A HREF="../man/form_win.3x.html">form_win.3x</A></TD></TR>
<TR><TD>form_term()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_39">Get_Form_Term_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
<TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_3">Init_Screen</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
<TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_4">Init_Windows</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
<TR><TD>intrflush()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_48">Set_Flush_On_Interrupt_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>isendwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_6">Is_End_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
<TR><TD>is_linetouched()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_77">Is_Touched</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
<TR><TD>is_wintouched()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_78">Is_Touched</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>isendwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_6">Is_End_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
<TR><TD>item_count()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_58">Item_Count</A></TD><TD><A HREF="../man/menu_items.3x.html">menu_items.3x</A></TD></TR>
<TR><TD>item_description();</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_12">Description</A></TD><TD><A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></TD></TR>
<TR><TD>item_index()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_17">Get_Index</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
<TR><TD>item_init()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_52">Get_Item_Init_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
<TR><TD>item_name()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_11">Name</A></TD><TD><A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></TD></TR>
-<TR><TD>item_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_8">Switch_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
<TR><TD>item_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_10">Get_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
<TR><TD>item_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_9">Get_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
+<TR><TD>item_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_8">Switch_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
<TR><TD>item_term()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_53">Get_Item_Term_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
<TR><TD>item_userptr</TD><TD><A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
<TR><TD>item_userptr</TD><TD><A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
<TR><TD>menu_init()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_54">Get_Menu_Init_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
<TR><TD>menu_items()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_57">Items</A></TD><TD><A HREF="../man/menu_items.3x.html">menu_items.3x</A></TD></TR>
<TR><TD>menu_mark()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_30">Mark</A></TD><TD><A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></TD></TR>
-<TR><TD>menu_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_20">Switch_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
<TR><TD>menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_21">Get_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
<TR><TD>menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_22">Get_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
+<TR><TD>menu_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_20">Switch_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
<TR><TD>menu_pad()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_41">Pad_Character</A></TD><TD><A HREF="../man/menu_attributes.3x.html">menu_attributes.3x</A></TD></TR>
<TR><TD>menu_pattern()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_45">Pattern</A></TD><TD><A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></TD></TR>
<TR><TD>menu_requestname.3x</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_62"></A></TD><TD><A HREF="../man/menu_driver.3x.html">menu_driver.3x</A></TD></TR>
<TR><TD>move_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_44">Move</A></TD><TD><A HREF="../man/form_field.3x.html">form_field.3x</A></TD></TR>
<TR><TD>move_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_11">Move</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
<TR><TD>mvderwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_17">Move_Derived_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>mvwaddchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_24">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
<TR><TD>mvwaddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_9">Add</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
+<TR><TD>mvwaddchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_24">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
<TR><TD>mvwaddnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_22">Add</A></TD><TD><A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></TD></TR>
<TR><TD>mvwchgat()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_39">Change_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
<TR><TD>mvwdelch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_96">Delete_Character</A></TD><TD><A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
<TR><TD>mvwgetnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_108">Get</A></TD><TD><A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></TD></TR>
-<TR><TD>mvwinchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_106">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
+<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_16">Move_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
<TR><TD>mvwinch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_98">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
+<TR><TD>mvwinchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_106">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
<TR><TD>mvwinnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_104">Peek</A></TD><TD><A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></TD></TR>
<TR><TD>mvwinsch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_100">Insert</A></TD><TD><A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></TD></TR>
<TR><TD>mvwinsnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_102">Insert</A></TD><TD><A HREF="../man/curs_insstr.3x.html">curs_insstr.3x</A></TD></TR>
-<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_16">Move_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
<TR><TD>napms()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_154">Nap_Milli_Seconds</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>_nc_freeall()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_159">Curses_Free_All</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
<TR><TD>new_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_1">Create</A></TD><TD><A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
<TR><TD>new_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_2">New_Field</A></TD><TD><A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
<TR><TD>new_form()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_45">Create</A></TD><TD><A HREF="../man/form_new.3x.html">form_new.3x</A></TD></TR>
<TR><TD>new_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_1">Create</A></TD><TD><A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></TD></TR>
<TR><TD>new_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_2">New_Item</A></TD><TD><A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></TD></TR>
<TR><TD>new_menu()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_59">Create</A></TD><TD><A HREF="../man/menu_new.3x.html">menu_new.3x</A></TD></TR>
-<TR><TD>newpad()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_89">New_Pad</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
<TR><TD>new_page()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_63">Is_New_Page</A></TD><TD><A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></TD></TR>
<TR><TD>new_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_1">Create</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
<TR><TD>new_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_2">New_Panel</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>newpad()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_89">New_Pad</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
<TR><TD>newwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_11">Create</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
<TR><TD>nl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_53">Set_NL_Mode</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
<TR><TD>nodelay()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_50">Set_NoDelay_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
<TR><TD>scale_menu()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_27">Scale</A></TD><TD><A HREF="../man/menu_win.3x.html">menu_win.3x</A></TD></TR>
<TR><TD>scr_dump()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_160">Screen_Dump_To_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
<TR><TD>scr_init()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_162">Screen_Init_From_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
-<TR><TD>scrollok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_59">Allow_Scrolling</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
<TR><TD>scr_restore()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_161">Screen_Restore_From_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
<TR><TD>scr_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_163">Screen_Set_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
+<TR><TD>scrollok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_59">Allow_Scrolling</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
<TR><TD>set_current_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_57">Set_Current</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR>
<TR><TD>set_current_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_13">Set_Current</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
<TR><TD>set_field_back()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_20">Set_Background</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
<TR><TD>set_panel_userptr</TD><TD><A HREF="terminal_interface-curses-panels-user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
<TR><TD>set_top_row()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_15">Set_Top_Row</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
<TR><TD>show_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_5">Show</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>slk_attron()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_118">Switch_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_attrset()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_119">Set_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_120">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_121">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_attron()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_118">Switch_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_attrset()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_119">Set_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
<TR><TD>slk_clear()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_115">Clear_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
<TR><TD>slk_color()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_122">Set_Soft_Label_Key_Color</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
<TR><TD>slk_init()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_109">Init_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
<TR><TD>top_row()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_16">Top_Row</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
<TR><TD>touchline()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_75">Touch</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
<TR><TD>touchwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_74">Touch</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>_tracef()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_2">Trace_Put</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
<TR><TD>trace()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_1">Trace_on</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
<TR><TD>unctrl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_127">Un_Control</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
<TR><TD>unctrl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_128">Un_Control</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
<TR><TD>update_panels()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_6">Update_Panels</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
<TR><TD>use_default_colors()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_155">Use_Default_Colors</A></TD><TD><A HREF="../man/default_colors.3x.html">default_colors.3x</A></TD></TR>
<TR><TD>use_extended_names()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_158">Use_Extended_Names</A></TD><TD><A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></TD></TR>
-<TR><TD>waddchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_23">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
<TR><TD>waddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_8">Add</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
+<TR><TD>waddchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_23">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
<TR><TD>waddnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_21">Add</A></TD><TD><A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></TD></TR>
<TR><TD>wattr_get()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_35">Get_Character_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
<TR><TD>wattr_get()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_36">Get_Character_Attribute</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
<TR><TD>wattron()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_33">Switch_Character_Attribute</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
<TR><TD>wattrset()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_34">Set_Character_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wbkgd()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_71">Change_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
<TR><TD>wbkgdget()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_72">Get_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
<TR><TD>wbkgdset()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_70">Set_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
-<TR><TD>wbkgd()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_71">Change_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
<TR><TD>wborder()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_25">Border</A></TD><TD><A HREF="../man/curs_border.3x.html">curs_border.3x</A></TD></TR>
<TR><TD>wchgat()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_38">Change_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
<TR><TD>wclear()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_67">Clear</A></TD><TD><A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
<TR><TD>wgetch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_29">Get_Keystroke</A></TD><TD><A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
<TR><TD>wgetnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_107">Get</A></TD><TD><A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></TD></TR>
<TR><TD>whline()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_27">Horizontal_Line</A></TD><TD><A HREF="../man/curs_border.3x.html">curs_border.3x</A></TD></TR>
-<TR><TD>winchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_105">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
<TR><TD>winch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_97">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
+<TR><TD>winchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_105">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
<TR><TD>winnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_103">Peek</A></TD><TD><A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></TD></TR>
<TR><TD>winsch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_99">Insert</A></TD><TD><A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></TD></TR>
<TR><TD>winsdelln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_82">Insert_Delete_Lines</A></TD><TD><A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: announce.html,v 1.56 2013/05/17 23:34:26 tom Exp $
+ @Id: announce.html.in,v 1.90 2015/08/08 18:39:58 tom Exp @
****************************************************************************
- * Copyright (c) 1998-2010,2011 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 *
* authorization. *
****************************************************************************
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content=
- "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
+ "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
- <title>Announcing ncurses 5.9</title>
+ <title>Announcing ncurses 6.0</title>
<link rev="made" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
+ <style type="text/css">
+p,li { max-width:700px; }
+ dd { max-width:630px; }
+ </style>
</head>
<body>
- <h1>Announcing ncurses 5.9</h1>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
+ <h1 class="no-header">Announcing ncurses 6.0</h1>
+
+ <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
+
+ <p>The <em class="small-caps">ncurses</em> (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.</p>
<p>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.</p>
+ keepers of <em class="small-caps">unix</em> releases such as
+ BSD/OS, FreeBSD and NetBSD to switch over to <em class=
+ "small-caps">ncurses</em>.</p>
+
+ <p>Since 1995, <em class="small-caps">ncurses</em> has been
+ ported to many systems:</p>
+
+ <ul>
+ <li>It is used in almost every system based on the Linux kernel
+ (aside from some embedded applications).</li>
+
+ <li>It is used as the system curses library on OpenBSD, FreeBSD
+ and OSX.</li>
- <p>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!</p>
+ <li>It is used in environments such as Cygwin and MinGW. The
+ first of these was EMX on OS/2 Warp.</li>
+
+ <li>It is used (though usually not as the <em>system</em>
+ curses) on all of the vendor <em class="small-caps">unix</em>
+ systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, Tru64.</li>
+
+ <li>It should work readily on any ANSI/POSIX-conforming
+ <em class="small-caps">unix</em>.</li>
+ </ul>
<p>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.</p>
-
- <p>The ncurses distribution is available via anonymous FTP at the
- GNU distribution site <a href=
- "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .<br>
-
- It is also available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
-
- <h1>Release Notes</h1>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.
- <p>
- This is a bug-fix release, correcting a small number of urgent problems
- in the ncurses library from the 5.8 release.
- <p>
- It also improves the Ada95 binding:
- <ul>
- <li>fixes a longstanding portability problem with its use of the
- <a href="http://invisible-island.net/ncurses/man/form_fieldtype.3x">set_field_type</a>
- function. Because that function uses variable-length argument lists,
- its interface with gnat does not work with certain platforms.
- <li>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.
- <p>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
- <a href="http://invisible-island.net/ncurses/ncurses-Ada95.html">here</a>.
- <li>additional improvements were made for portability of the
- ncurses examples, adding rpm- and dpkg-scripts for test-builds.
- See
- <a href="http://invisible-island.net/ncurses/ncurses-examples.html">this page</a>
- for snapshots and other information.
- </ul>
-
- <h1>Features of Ncurses</h1>The ncurses package is fully
- compatible with SVr4 (System V Release 4) curses:
-
- <ul>
- <li>All 257 of the SVr4 calls have been implemented (and are
- documented).</li>
-
- <li>Full support for SVr4 curses features including keyboard
- mapping, color, forms-drawing with ACS characters, and
- automatic recognition of keypad and function keys.</li>
-
- <li>An emulation of the SVr4 panels library, supporting a stack
- of windows with backing store, is included.</li>
-
- <li>An emulation of the SVr4 menus library, supporting a
- uniform but flexible interface for menu programming, is
- included.</li>
-
- <li>An emulation of the SVr4 form library, supporting data
- collection through on-screen forms, is included.</li>
-
- <li>Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
- SVr4 curses uses.</li>
-
- <li>The utilities have options to allow you to filter terminfo
- entries for use with less capable
- <strong>curses</strong>/<strong>terminfo</strong> versions such
- as the HP/UX and AIX ports.</li>
- </ul>The ncurses package also has many useful extensions over
- SVr4:
-
- <ul>
- <li>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).</li>
-
- <li>Unlike SVr3 curses, ncurses can write to the
- rightmost-bottommost corner of the screen if your terminal has
- an insert-character capability.</li>
-
- <li>Ada95 and C++ bindings.</li>
-
- <li>Support for mouse event reporting with X Window xterm and
- FreeBSD and OS/2 console windows.</li>
-
- <li>Extended mouse support via Alessandro Rubini's gpm
- package.</li>
-
- <li>The function <code>wresize</code> allows you to resize
- windows, preserving their data.</li>
-
- <li>The function <code>use_default_colors</code> allows you to
- use the terminal's default colors for the default color pair,
- achieving the effect of transparent colors.</li>
-
- <li>The functions <code>keyok</code> and
- <code>define_key</code> 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.</li>
-
- <li>Support for 256-color terminals, such as modern xterm, when
- configured using the <code>--enable-ext-colors</code>
- option.</li>
-
- <li>Support for 16-color terminals, such as <em>aixterm</em>
- and <em>modern xterm</em>.</li>
-
- <li>Better cursor-movement optimization. The package now
- features a cursor-local-movement computation more efficient
- than either BSD's or System V's.</li>
-
- <li>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 <code>quickch</code>
- routine.</li>
-
- <li>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.</li>
-
- <li>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).</li>
+ including</p>
+
+ <ul>
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>,
+ a termcap conversion tool</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/clear.1.html">clear</a>,
+ utility for clearing the screen</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp</a>,
+ the terminfo decompiler</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tabs.1.html">tabs</a>,
+ set tabs on a terminal</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tic.1m.html">tic</a>,
+ the terminfo compiler</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/toe.1m.html">toe</a>,
+ list (table of) terminfo entries</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tput.1.html">tput</a>,
+ utility for retrieving terminal capabilities in shell
+ scripts</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/tset.1.html">tset</a>,
+ to initialize the terminal</li>
+ </ul>
+
+ <p>Full manual pages are provided for the library and tools.</p>
+
+ <p>The <em class="small-caps">ncurses</em> distribution is
+ available via anonymous FTP at the GNU distribution site</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .</p>
+ </blockquote>It is also available at
+
+ <blockquote>
+ <p><a href=
+ "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
+ </blockquote>
+
+ <h2><a name="h2-release-notes" id="h2-release-notes">Release
+ Notes</a></h2>
+
+ <p>These notes are for <em class="small-caps">ncurses</em>
+ 6.0, released <strong>August 8, 2015</strong>.</p>
+
+ <p>This release is designed to be source-compatible with
+ <em class="small-caps">ncurses</em> 5.0 through 5.9; providing a
+ new application binary interface (ABI). Although the source can
+ still be configured to support the <em class=
+ "small-caps">ncurses</em> 5 ABI, the intent of the release is to
+ provide extensions which are generally useful, but
+ binary-incompatible with <em class="small-caps">ncurses</em>
+ 5:</p>
+
+ <ul>
+ <li>
+ <p>Extend the <code>cchar_t</code> structure to allow more
+ than 16 colors to be encoded.</p>
+ </li>
+
+ <li>
+ <p>Modify the encoding of mouse state to make room for a 5th
+ mouse button. That allows one to use <em class=
+ "small-caps">ncurses</em> with a wheel mouse with xterm or
+ similar X terminal emulators.</p>
+ </li>
+ </ul>
+
+ <p>There are, of course, numerous other improvements,
+ including</p>
+
+ <ul>
+ <li>
+ <p>fixes made based on the Clang and Coverity static
+ analyzers.</p>
+ </li>
+
+ <li>
+ <p>memory leak fixes using Valgrind</p>
+ </li>
+ </ul>
+
+ <p>The release notes mention some bug-fixes, but are focused on
+ new features and improvements to existing features log since
+ <em class="small-caps">ncurses</em> 5.9 release.</p>
+
+ <p>While the intent of the release is to provide a new stable
+ ABI, there are other development activities which are summarized
+ below.</p>
+
+ <ul>
+ <li>
+ <p>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 <code>Console2</code> took a while.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+
+ <p>The <a href=
+ "http://invisible-island.net/ncurses/tctest.html">termcap
+ library checker (tctest)</a> (not part of <em class=
+ "small-caps">ncurses</em>) was one result. A followup review
+ of performance using <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>
+ in 2014 led to additional improvements.</p>
+ </li>
+
+ <li>
+ <p>Output buffering provided a further, but worthwhile
+ distraction. A bug report in 2012 regarding the use of signal
+ handlers in <em class="small-caps">ncurses</em>) pointed out
+ <a href=
+ "http://lists.gnu.org/archive/html/bug-ncurses/2012-07/msg00029.html">
+ a problem</a> with the use of unsafe functions for handling
+ <code>SIGTSTP</code>. Other signals could be addressed with
+ workarounds; repairing <code>SIGTSTP</code> required a
+ different approach. The solution required changing internal
+ behavior of the library: how it handles output buffering.</p>
+
+ <p>Now <em class="small-caps">ncurses</em> 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
+ <em>unspecified</em> 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.</p>
+ </li>
+
+ <li>
+ <p>Since the introduction of the experimental support for 256
+ colors early in <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20050101">2005</a>
+ (released in <a href=
+ "http://invisible-island.net/ncurses/announce-5.5.html">ncurses
+ 5.5</a>), there has been increased user interest. Almost all
+ packagers continue providing the ncurses ABI 5 which cannot
+ support 256 colors.</p>
+ </li>
+
+ <li>
+ <p>Symbol versioning, or the lack of it in ncurses, is the
+ main reason why packagers would be reluctant to add a new
+ ncurses ABI.</p>
+
+ <p>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
+ <a href=
+ "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <em class="small-caps">ncurses</em></a>.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-library" id="h3-library">Library
+ improvements</a></h3>
+
+ <h3><a name="h3-lib-setbuf" id="h3-lib-setbuf">Output
+ buffering</a></h3>
+
+ <p>X/Open curses provides more than one initialization
+ function:</p>
+
+ <ul>
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr">
+ initscr</a> (the simplest) accepts no parameters.</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm">
+ newterm</a> accepts parameters for the stream input and
+ output</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization">
+ setupterm</a> (the low-level function) accepts a parameter for
+ the <em>file descriptor</em> of the output.</li>
+ </ul>
+
+ <p>They are documented in X/Open <em>as if</em>
+ <code>initscr</code> calls <code>newterm</code> using
+ <code>stdout</code> for output stream, and in turn
+ <code>newterm</code> calls <code>setupterm</code> using
+ <code>fileno(stdout)</code> for the file descriptor. As long as
+ an implementation acts <em>as if</em> it does this, it conforms.
+ In practice, implementations do what is implied. This creates a
+ problem: the low-level <code>setupterm</code> function's file
+ descriptor is unbuffered, while <code>newterm</code> 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.</p>
+
+ <p>Initially, <em class="small-caps">ncurses</em> used the file
+ descriptor (obtained from the output stream passed to
+ <code>newterm</code>) for changing the terminal modes, and relied
+ upon the output parameter of <code>newterm</code> for buffered
+ output. Later (to avoid using unsafe buffered I/O in signal
+ handlers), <em class="small-caps">ncurses</em> 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.</p>
+
+ <p>That approach worked reasonably well and as a side effect,
+ using the same buffered output as an application might use for
+ <code>printf</code> meant that no flushing was needed when
+ switching between normal- and screen-modes.</p>
+
+ <p>There were a couple of problems:</p>
+
+ <ul>
+ <li>
+ <p>to get good performance, curses (not only <em class=
+ "small-caps">ncurses</em>, but SVr4 curses in general) set an
+ output buffer using <code>setbuf</code> or similar function.
+ There is no standard (or portable) way to turn that output
+ buffer off, and revert to line-buffering. The <code><a href=
+ "http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_NO_SETBUF">
+ NCURSES_NO_SETBUF</a></code> environment variable did make it
+ optional.</p>
+ </li>
+
+ <li>
+ <p>to handle <code>SIGTSTP</code> (the “stop”
+ signal), <em class="small-caps">ncurses</em> 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.</p>
+ </li>
+ </ul>
+
+ <p>Conveniently, solving the second problem (by making <em class=
+ "small-caps">ncurses</em> do its <em>own</em> output buffering)
+ also fixed the first one. But there were special cases to
+ resolve: <a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html"><em>
+ low-level</em></a> 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.</p>
+
+ <p>Finally, there may still be a few programs which should be
+ modified to improve their portability, e.g., adding an</p>
+
+ <blockquote>
+ <pre class="code-block">
+fflush(stdout);
+</pre>
+ </blockquote>
+
+ <p>when switching from “<a href=
+ "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">shell</a>”
+ mode to “<a href=
+ "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">program</a>”
+ (curses) mode. Those are fairly rare because most programmers
+ have learned not to mix <code>printf</code> and <code><a href=
+ "http://invisible-island.net/ncurses/man/curs_printw.3x.html">printw</a></code>.</p>
+
+ <h3><a name="h3-lib-versioning" id="h3-lib-versioning">Symbol
+ versioning</a></h3>
+
+ <p>This release introduces symbol-versioning to <em class=
+ "small-caps">ncurses</em> because without it, the change of ABI
+ would be less successful. A lengthy discussion will be presented
+ in <a href=
+ "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <em class="small-caps">ncurses</em></a>. These
+ notes summarize what has changed, and what can be done with the
+ new release.</p>
+
+ <p>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.</p>
+
+ <p>This release provides sample files for the four principal
+ configurations of <em class="small-caps">ncurses</em> libraries:
+ <code>ncurses</code>, <code>ncursesw</code>,
+ <code>ncursest</code> and <code>ncursestw</code>. Each sample is
+ given in two forms:</p>
+
+ <blockquote>
+ <dl>
+ <dt>“<code>.map</code>”</dt>
+
+ <dd>These list all public symbols, together with version
+ names.</dd>
+
+ <dt>“<code>.sym</code>”</dt>
+
+ <dd>These list all public symbols, without version
+ names.</dd>
+ </dl>
+ </blockquote>
+
+ <p>The sample files are <em>generated</em> by scripts which take
+ into account a few special cases such as <a href=
+ "http://invisible-island.net/ncurses/tack.html">tack</a> to omit
+ many of the <em class="small-caps">ncurses</em> private symbols
+ (beginning with “<code>_nc_</code>”). Here are
+ counts of globals versus locals:</p>
+
+ <blockquote>
+ <table border="1" summary="Total global and local symbols">
+ <tr>
+ <th>Config</th>
+
+ <th>Symbols</th>
+
+ <th>Globals</th>
+
+ <th>Locals</th>
+
+ <th>"_nc_"</th>
+ </tr>
+
+ <tr>
+ <td>ncurses</td>
+
+ <td align="right">976</td>
+
+ <td align="right">796</td>
+
+ <td align="right">180</td>
+
+ <td align="right">332</td>
+ </tr>
+
+ <tr>
+ <td>ncursesw</td>
+
+ <td align="right">1089</td>
+
+ <td align="right">905</td>
+
+ <td align="right">184</td>
+
+ <td align="right">343</td>
+ </tr>
+
+ <tr>
+ <td>ncursest</td>
+
+ <td align="right">979</td>
+
+ <td align="right">804</td>
+
+ <td align="right">175</td>
+
+ <td align="right">358</td>
+ </tr>
+
+ <tr>
+ <td>ncursestw</td>
+
+ <td align="right">1098</td>
+
+ <td align="right">914</td>
+
+ <td align="right">184</td>
+
+ <td align="right">372</td>
+ </tr>
+ </table>
+ </blockquote>
+
+ <p>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
+ <em>not</em> support the feature, and a few (such as Solaris)
+ which provide incomplete support.</p>
+
+ <p>The version-naming convention used allows these sample files
+ to build distinct libraries for ABI 5 and 6. Version names
+ consist of</p>
+
+ <ul>
+ <li>
+ <p>configuration name, e.g.,
+ “<code>NCURSESW</code>” for the wide-character
+ libraries</p>
+ </li>
+
+ <li>
+ <p>ABI version (if not 5)</p>
+ </li>
+
+ <li>
+ <p>library name for two special cases which have the same
+ interface across configurations:
+ “<code>TINFO</code>” and
+ “<code>TIC</code>”</p>
+ </li>
+
+ <li>
+ <p>release version</p>
+ </li>
+
+ <li>
+ <p>patch date (for the release version)</p>
+ </li>
+ </ul>
+
+ <p>For example, running <code>nm -D</code> on the libraries in
+ the ncurses6 test package shows these symbol-versions:</p>
+
+ <blockquote>
+ <pre class="code-block">
+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
+</pre>
+ </blockquote>
+
+ <p>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.</p>
+
+ <h3><a name="h3-lib-other" id=
+ "h3-lib-other">Miscellaneous</a></h3>
- <li>The tic(1)/captoinfo utility provided with ncurses has the
- ability to translate many termcaps from the XENIX, IBM and
- AT&T extension sets.</li>
-
- <li>A BSD-like tset(1) utility is provided.</li>
-
- <li>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.</li>
-
- <li>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.)</li>
-
- <li>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.</li>
-
- <li>A script (<strong>capconvert</strong>) 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.</li>
-
- <li>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.</li>
-
- <li>The table-of-entries utility <strong>toe</strong> makes it
- easy for users to see exactly what terminal types are available
- on the system.</li>
-
- <li>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 <code>#undef</code>.</li>
-
- <li>An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
- interface.</li>
- </ul>
-
- <h1>State of the Package</h1>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.
-
- <p>The ncurses code has been tested with a wide variety of
- applications including (versions starting with those noted):</p>
+ <p>The new release has several improvements for performance and
+ building. For instance:</p>
+
+ <ul>
+ <li>
+ <p>several files in ncurses- and progs-directories were
+ modified to allow <code>const</code> data used in internal
+ tables to be put by the linker into the readonly text
+ segment.</p>
+ </li>
+
+ <li>
+ <p>various improvements were made to building the Ada95
+ binding, both in simplifying the generated files as well as
+ improving the way it uses <code>gnatmake</code></p>
+ </li>
+ </ul>
+
+ <p>There are also new features in the libraries:</p>
+
+ <ul>
+ <li>added <a href=
+ "http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl">
+ use_tioctl</a> function</li>
+
+ <li>
+ <p>added <a href=
+ "http://invisible-island.net/ncurses/man/curs_opaque.3x.html">
+ wgetdelay</a> to retrieve _delay member of WINDOW if it
+ happens to be opaque, e.g., in the pthread configuration.</p>
+ </li>
+
+ <li>
+ <p>added <a href=
+ "http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
+ A_ITALIC</a> extension.</p>
+ </li>
+
+ <li>
+ <p>added form library extension <a href=
+ "http://invisible-island.net/ncurses/man/form_field_opts.3x.html">
+ O_DYNAMIC_JUSTIFY</a> option which can be used to override
+ the different treatment of justification for static versus
+ dynamic fields .</p>
+ </li>
+
+ <li>
+ <p>rewrote <a href=
+ "http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin">
+ putwin</a> and <a href=
+ "http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin">
+ getwin</a>, making an extended version which is capable of
+ reading screen-dumps between the wide/normal <em class=
+ "small-caps">ncurses</em> configurations. These are text
+ files, except for a <em>magic</em> code at the beginning:</p>
+
+ <blockquote>
+ <pre class="code-block">
+0 string \210\210 Screen-dump (ncurses)
+</pre>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>several changes to mouse support include:</p>
+
+ <ul>
+ <li>added decoder for xterm SGR 1006 mouse mode.</li>
+
+ <li>added experimental support for
+ “<code>%u</code>” format to terminfo.</li>
+
+ <li>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 .</li>
+ </ul>
+ </li>
+ </ul>
+
+ <p>There are a few new configure options dealing with library
+ customization:</p>
+
+ <ul>
+ <li>
+ <p>add “<code>--enable-ext-putwin</code>”
+ configure option to turn on the extended putwin/getwin. By
+ default, this is enabled for ABI 6 and disabled with ABI
+ 5.</p>
+ </li>
+
+ <li>
+ <p>add “<code>--enable-string-hacks</code>”
+ option to control whether strlcat and strlcpy may be used.
+ Because <em class="small-caps">ncurses</em> already does the
+ requisite buffer-limit checks, this feature is mainly of
+ interest to quiet compiler-warnings on a few systems.</p>
+ </li>
+
+ <li>
+ <p>add configure option
+ “<code>--with-tparm-arg</code>” to allow <a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output">
+ tparm</a>'s parameters to be something more likely to be the
+ same size as a pointer, e.g., <code>intptr_t</code> (again,
+ the default is set for ABI 6).</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-programs" id="h3-programs">Program
+ improvements</a></h3>
+
+ <h4><a name="h4-utilities" id="h4-utilities">Utilities</a></h4>
+
+ <p>Most of the termcap-related changes based on development of
+ <a href="http://invisible-island.net/ncurses/tctest.html">tctest
+ (termcap library checker)</a> are implemented in the tic and
+ infocmp programs rather than affecting the library. As noted in
+ the <a href=
+ "http://invisible-island.net/ncurses/tctest.html#my-better-translation">
+ discussion</a> of <code>tctest</code>, <em class=
+ "small-caps">ncurses</em>'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 <em>termcap</em> users are
+ using <em class="small-caps">ncurses</em> (or NetBSD, with its
+ own terminfo library) and their programs are actually using
+ terminfo rather than termcap data.</p>
+
+ <p>Still, there are a few. A comment about the translation of the
+ ASCII <code>NUL</code> character prompted a review:</p>
+
+ <ul>
+ <li>
+ <p>Both terminfo and termcap store string capabilities as
+ <code>NUL</code>-terminated strings.</p>
+ </li>
+
+ <li>
+ <p>In terminfo, a <code>\0</code> in a terminal description
+ is stored as <code>\200</code>.</p>
+ </li>
+
+ <li>
+ <p>There are no (known) terminals which would behave
+ differently when sent <code>\0</code> or
+ <code>\200</code>.</p>
+ </li>
+
+ <li>
+ <p>When translating to terminfo format (or displaying a
+ printable version of an entry using infocmp), <em class=
+ "small-caps">ncurses</em> shows <code>\200</code> as
+ <code>\0</code>.</p>
+ </li>
+
+ <li>
+ <p>It has done this since 1998 (quoting from the NEWS
+ file):</p>
+
+ <blockquote>
+ <pre class="code-block">
+<a href=
+"http://invisible-island.net/ncurses/NEWS.html#t980103">980103</a>
+...
+ + modify _nc_tic_expand() to generate \0 rather than \200.
+...
+ + correct translation of terminfo "^@", to \200, like \0.
+</pre>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>However, the <code>_nc_tic_expand</code> function (which
+ optionally produces terminfo or termcap format) did not
+ address this special case for termcap. Even the later 4.4BSD
+ <a href=
+ "https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&view=markup#l784">
+ cgetstr</a> interprets a <code>\0</code> literally, ending
+ <em>that</em> string (rather than using the terminfo
+ improvement).</p>
+ </li>
+ </ul>
+
+ <p>As a result of the review, several improvements were made to
+ <em class="small-caps">ncurses</em> 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:</p>
+
+ <ul>
+ <li>
+ <p>the “<code>-0</code>” option generates
+ termcap/terminfo source on a single line.</p>
+ </li>
+
+ <li>
+ <p>the “<code>-K</code>” option provides stricter
+ BSD-compatibility for termcap output.</p>
+ </li>
+ </ul>
+
+ <p>Other user-visible improvements and new features include:</p>
+
+ <ul>
+ <li>
+ <p>added “<code>-D</code>” option to tic and
+ infocmp, to show the database locations that it could
+ use.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-s</code>” option to toe, to sort
+ its output.</p>
+ </li>
+
+ <li>
+ <p>extended “<code>-c</code>” and
+ “<code>-n</code>” options of infocmp to allow
+ comparing more than two entries.</p>
+ </li>
+
+ <li>
+ <p>modified toe's report when “<code>-a</code>”
+ and “<code>-s</code>” options are combined, to
+ add a column showing which entries belong to a given
+ database.</p>
+ </li>
+
+ <li>
+ <p>modified the clear program to take into account the
+ “<code>E3</code>” extended capability to clear
+ the terminal's scrollback buffer.</p>
+ </li>
+ </ul>
+
+ <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
+
+ <p>Along with the library and utilities, many improvements were
+ made to the <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.
+ 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).</p>
+
+ <p>These changes were made to verify compatibility or compare
+ performance of <em class="small-caps">ncurses</em>:</p>
+
+ <ul>
+ <li>
+ <p>made workarounds for compiling test-programs with NetBSD
+ curses, though it lacks some common functions such as
+ <a href="http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env">
+ use_env</a>.</p>
+ </li>
+
+ <li>
+ <p>added dots_termcap test-program</p>
+ </li>
+
+ <li>
+ <p>added dots_curses test-program, for comparison with the
+ low-level examples.</p>
+ </li>
+
+ <li>
+ <p>added test_setupterm test-proram to demonstrate
+ normal/error returns from the setupterm and restartterm
+ functions.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-d</code>”,
+ “<code>-e</code>” and
+ “<code>-q</code>” options to the demo_terminfo
+ and demo_termcap test-programs.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-y</code>” option to demo_termcap
+ and test/demo_terminfo test-programs to demonstrate behavior
+ with/without extended capabilities.</p>
+ </li>
+
+ <li>
+ <p>modified demo_termcap and demo_terminfo test-programs to
+ make their options more directly comparable, and add
+ “<code>-i</code>” option to specify a terminal
+ description filename to parse for names to lookup.</p>
+ </li>
+
+ <li>
+ <p>rewrote the tests for <a href=
+ "http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-derwin">
+ mvderwin</a> and test for recursive <a href=
+ "http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-mvwin">
+ mvwin</a> in the movewindow test-program.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to help with the MinGW port:</p>
+
+ <ul>
+ <li>
+ <p>added test-screens to the ncurses test-program to show
+ 256-characters at a time, to help with MinGW port.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>added “<code>-s</code>” 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.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to verify new extensions in <em class=
+ "small-caps">ncurses</em>:</p>
+
+ <ul>
+ <li>
+ <p>added <a href=
+ "http://invisible-island.net/ncurses/man/form_driver.3x.html#h3-form_driver_w">
+ form_driver_w</a> entrypoint to wide-character forms library,
+ as well as form_driver_w test-program.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>modified ncurses test-program, adding
+ “<code>-E</code>” and
+ “<code>-T</code>” options to demonstrate use_env
+ versus use_tioctl.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>modified the ncurses test-program to also show position
+ reports in 'a' test.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to make the examples more useful:</p>
+
+ <ul>
+ <li>
+ <p>added scripts for building dpkg and rpm test-packages</p>
+ </li>
+
+ <li>
+ <p>modified the hanoi test-program to show the minimum number
+ of moves possible for the given number of tiles.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-database" id="h3-database">Terminal
+ database</a></h3>
+
+ <p>This release provides improvements to tic's
+ “<code>-c</code>” checking option, which was used for
+ example to</p>
+
+ <ul>
+ <li>
+ <p>make <code>sgr</code> in several entries agree with other
+ caps.</p>
+ </li>
+
+ <li>
+ <p>correct padding in some entries where earlier versions had
+ miscounted the number of octal digits.</p>
+ </li>
+ </ul>
+
+ <p>There are several new terminal descriptions:</p>
+
+ <ul>
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_M_L_T_E_R_M">
+ mlterm</a> is now aliased to mlterm3</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm">
+ nsterm</a> is now derived from nsterm-256color</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco">
+ putty-sco</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-teken">
+ teken</a> is FreeBSD's "xterm" console.</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R">
+ terminator</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y">
+ terminology</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux">
+ tmux</a> is derived from screen.</li>
+
+ <li>several screen.XXX entries support the respective
+ variations for 256 colors.</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#toc-_S_I_M_P_L_E_T_E_R_M">
+ simpleterm</a> is now 0.5</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-vte">
+ vte</a> is aliased to vte-2012</li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi">
+ vt520ansi</a></li>
+ </ul>
+
+ <p>A few entries use extensions (user-defined terminal
+ capabilities):</p>
+
+ <ul>
+ <li>
+ <p><code>E3</code>, used in linux, putty and xterm-basic is
+ tested in the <a href=
+ "http://aerie.jexium-island.net/ncurses/man/clear.1.html">clear</a>
+ program to erase a terminal's scrollback.</p>
+ </li>
+
+ <li>
+ <p><code>TS</code> is used in the <a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_sl">
+ xterm+sl</a> building block to help deprecate the misuse of
+ <code>tsl</code> for xterm's title-string.</p>
+ </li>
+
+ <li>
+ <p><code>XT</code> 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.</p>
+ </li>
+
+ <li>
+ <p><code>xm</code> is used in examples <a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1005">
+ xterm-1005</a> and <a href=
+ "http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1006">
+ xterm-1006</a> to illustrate a way to make mouse handling
+ more general</p>
+ </li>
+ </ul>
+
+ <p>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
+ <code>A_ITALIC</code> extension.</p>
+
+ <ul>
+ <li>konsole, mlterm3 (italics)</li>
+
+ <li>nsterm (dim)</li>
+
+ <li>screen (dim)</li>
+
+ <li>vte (dim, italics)</li>
+
+ <li>xterm (dim, italics)</li>
+ </ul>
+
+ <h3><a name="h3-documentation" id=
+ "h3-documentation">Documentation</a></h3>
+
+ <p>As usual, this release</p>
+
+ <ul>
+ <li>
+ <p>improves documentation by describing new features,</p>
+ </li>
+
+ <li>
+ <p>attempts to improve the description of features which
+ users have found confusing</p>
+ </li>
+
+ <li>
+ <p>fills in overlooked descriptions of features which were
+ described in the <a href=
+ "http://invisible-island.net/ncurses/NEWS.html">NEWS</a> file
+ but treated sketchily in manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In addition, the mechanism for producing HTML versions of the
+ documentation has been improved:</p>
+
+ <ul>
+ <li>
+ <p>use an improved version of <a href=
+ "http://invisible-island.net/scripts/man2html.html">man2html</a>
+ to generate html manpages.</p>
+ </li>
+
+ <li>
+ <p>regenerated <a href=
+ "http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html">
+ NCURSES-Programming-HOWTO.html</a> to fix some of the broken
+ html emitted by docbook.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
+ bug-fixes</a></h3>
+
+ <ul>
+ <li>
+ <p>Ada95 binding:</p>
+
+ <ul>
+ <li>
+ <p>modify makefile rules to ensure that the PIC option is
+ not used when building a static library</p>
+ </li>
+
+ <li>
+ <p>make Ada95 build-fix for big-endian architectures such
+ as sparc. This undoes one of the fixes from <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20110319">
+ 20110319</a>, which added an
+ “<code>Unused</code>” member to
+ representation clauses, replacing that with pragmas to
+ suppress warnings about unused bits.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>Color and attributes:</p>
+
+ <ul>
+ <li>
+ <p>parenthesize parameter of <code>COLOR_PAIR</code> and
+ <code>PAIR_NUMBER</code> in curses.h in case it happens
+ to be a comma-expression.</p>
+ </li>
+
+ <li>
+ <p>improve <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20021221">
+ 20021221</a> workaround for broken acs, handling a case
+ where that ACS_<em>xxx</em> character is not in the
+ <code>acsc</code> string but there is a known
+ wide-character which can be used.</p>
+ </li>
+
+ <li>
+ <p>modify <a href=
+ "http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions">
+ init_pair</a> to accept -1's for color value after
+ <a href=
+ "http://invisible-island.net/ncurses/man/default_colors.3x.html">
+ assume_default_colors</a> has been called.</p>
+ </li>
+
+ <li>
+ <p>add a check in <a href=
+ "http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions">
+ start_color</a> to limit color-pairs to 256 when extended
+ colors are not supported.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>Resizing the screen:</p>
+
+ <ul>
+ <li>
+ <p>propagate error-returns from wresize, i.e., the
+ internal increase_size and decrease_size functions
+ through <a href=
+ "http://invisible-island.net/ncurses/man/resizeterm.3x.html">
+ resize_term</a>.</p>
+ </li>
+
+ <li>
+ <p>add check for zero/negative dimensions for
+ <code>resizeterm</code> and <code>resize_term</code>.</p>
+ </li>
+
+ <li>
+ <p>modify <code>resizeterm</code> to always push a
+ <code>KEY_RESIZE</code> onto the fifo, even if screensize
+ is unchanged. Modify library to push a
+ <code>KEY_RESIZE</code> if there was a SIGWINCH, even if
+ it does not call <code>resizeterm</code>). These changes
+ eliminate the case where a SIGWINCH is received, but ERR
+ is returned from <code>wgetch</code> or
+ <code>wgetnstr</code> because the screen dimensions did
+ not change.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>Low-level interfaces</p>
+
+ <ul>
+ <li>
+ <p>fix an old bug in the termcap emulation;
+ “<code>%i</code>” was ignored in
+ <code>tparm</code> because the parameters to be
+ incremented were already on the internal stack.</p>
+ </li>
+
+ <li>
+ <p>change “<code>%l</code>” behavior in tparm
+ to push the string length onto the stack rather than
+ saving the formatted length into the output buffer.</p>
+ </li>
+
+ <li>
+ <p>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 <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t980725">980725</a>).</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>High-level interfaces
+
+ <ul>
+ <li>
+ <p>modify internal recursion in <code>wgetch</code> which
+ handles cooked mode to check if the call to
+ <code>wgetnstr</code> returned an error. This can happen
+ when both <code>nocbreak</code> and <code>nodelay</code>
+ are set, for instance (see note for <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t960418">960418</a>).</p>
+ </li>
+
+ <li>
+ <p>add a check in internal function
+ <code>waddch_nosync</code> to ensure that tab characters
+ are treated as control characters; some broken locales
+ claim they are printable.</p>
+ </li>
+
+ <li>
+ <p>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</p>
+ </li>
+
+ <li>
+ <p>fix special case where double-width character
+ overwrites a single- width character in the first
+ column.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+
+ <h3><a name="h3-config-config" id=
+ "h3-config-config">Configuration changes</a></h3>
+
+ <h4><a name="h4-config-major" id="h4-config-major">Major
+ changes</a></h4>
+
+ <p>The <em class="small-caps">ncurses</em> 6.0 configure script
+ makes changes to the <em>default</em> value of several configure
+ options, depending on the <code>--with-abi-version</code> option
+ (i.e., whether its value is “5” or
+ “6”):</p>
<dl>
- <dt>cdk</dt>
+ <dt><code>--enable-const</code></dt>
+
+ <dd>
+ <p>Feature introduced in <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t970405">970405</a>
+ supports the use of <code>const</code> where X/Open Curses
+ should have, but did not. NetBSD curses does something
+ similar with <code>const</code>.</p>
+ </dd>
- <dd>Curses Development Kit<br>
- <a href=
- "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
+ <dt><code>--enable-ext-colors</code></dt>
- <a href=
- "http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>
+ <dd>
+ <p>Extends the <code>cchar_t</code> structure to allow more
+ than 16 colors to be encoded. This applies only to the
+ wide-character (<code>--enable-widec</code>)
+ configuration.</p>
+ </dd>
- <dt>ded</dt>
+ <dt><code>--enable-ext-mouse</code></dt>
- <dd>directory-editor<br>
- <a href=
- "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>
+ <dd>
+ <p>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.</p>
+ </dd>
- <dt>dialog</dt>
+ <dt><code>--enable-ext-putwin</code></dt>
+
+ <dd>
+ <p>Modifies the file-format written by <code>putwin</code> to
+ use printable text rather than binary files, allowing
+ <code>getwin</code> to read screen dumps written by
+ differently-configured ncurses libraries. The extended
+ <code>getwin</code> can still read binary screen dumps from
+ the <em>same</em> configuration of ncurses. This does not
+ change the ABI (the binary interface seen by calling
+ applications).</p>
+ </dd>
- <dd>the underlying application used in Slackware's setup, and
- the basis for similar applications on GNU/Linux.<br>
- <a href=
- "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>
+ <dt><code>--enable-interop</code></dt>
- <dt>lynx</dt>
+ <dd>
+ <p>Modifies the <code>FIELDTYPE</code> structure used for the
+ form library to make it more generic.</p>
+ </dd>
- <dd>the character-screen WWW browser<br>
- <a href=
- "http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>
+ <dt><code>--enable-lp64</code></dt>
- <dt>Midnight Commander</dt>
+ <dd>
+ <p>Allows an application to define <code>_LP64</code> to
+ declare <code>chtype</code> and <code>mmask_t</code> as
+ simply “<code>unsigned</code>” rather than the
+ configured types using the <code>--with-chtype</code> and
+ <code>--with-mmask_t</code> options.</p>
+ </dd>
- <dd>file manager<br>
- <a href=
- "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>
+ <dt><code>--enable-sp-funcs</code></dt>
- <dt>mutt</dt>
+ <dd>
+ <p>Compile-in support for extended functions which accept a
+ SCREEN pointer, reducing the need for juggling the global SP
+ value with <a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-set_term">
+ set_term</a> and <a href=
+ "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-delscreen">
+ delscreen</a>.</p>
+ </dd>
- <dd>mail utility<br>
- <a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>
+ <dt><code>--with-chtype=uint32_t</code></dt>
+
+ <dd>
+ <p>Makes <code>chtype</code> explicitly a 32-bit unsigned
+ value.</p>
+ </dd>
- <dt>ncftp</dt>
+ <dt><code>--with-mmask_t=uint32_t</code></dt>
- <dd>file-transfer utility<br>
- <a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>
+ <dd>
+ <p>Makes <code>mmask_t</code> explicitly a 32-bit unsigned
+ value.</p>
+ </dd>
- <dt>nvi</dt>
+ <dt><code>--with-tparm-arg=intptr_t</code></dt>
- <dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
- and later.<br>
- <a href=
- "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
+ <dd>
+ <p>X/Open Curses declares <a href=
+ "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output">
+ tparm</a> using <code>long</code> for each of the parameters
+ aside from the formatting string, presuming that
+ <code>long</code> and <code>char*</code> are the same size.
+ This configure option uses <code>intptr_t</code> which
+ provides a better guarantee of the sizes.</p>
</dd>
+ </dl>
- <dt>pinfo</dt>
+ <p>The configure script no longer checks for antique compilers;
+ <code>c89</code> 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 <em class=
+ "small-caps">ncurses</em> 6.0 with any of the current (or not so
+ current) C compilers available in 2015.</p>
+
+ <p>The configure script, by the way, makes changes which do not
+ work with systems whose <code>/bin/sh</code> is non-POSIX. This
+ mainly affects Solaris (the other vendor <em class=
+ "small-caps">unix</em> systems have followed the POSIX guidelines
+ for the past twenty years). If you must build on Solaris, its
+ <a href=
+ "http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html">xpg4</a>
+ binaries suffice, e.g.,</p>
+
+ <blockquote class="code-block">
+ <!--{{atr2html-->
+
+ <p style="font-family: monospace; font-size: 10pt;">
+ <font color="#800000">#!/bin/sh</font><br>
+ <font color="#008080">WHAT</font>=<strong><em><font color=
+ "#800000">`</font></em></strong>hostname|sed -e <font color="#800080">'s/\..*//'</font><strong><em><font color="#800000">`</font></em></strong><br>
+
+ <font color="#008080">OUT</font>=configure.out<br>
+ <strong><font color=
+ "#000080">cat</font></strong> >><font color=
+ "#008080">$OUT</font> <font color=
+ "#800080"><<EOF/</font><font color="#800080"><br>
+ ** </font><strong><em><font color=
+ "#800000">`</font></em></strong>date<strong><em><font color=
+ "#800000">`</font></em></strong><font color="#800080"><br>
+ ** node: </font><font color=
+ "#008080">$WHAT</font><font color="#800080"><br>
+ ** user: </font><strong><em><font color=
+ "#800000">`</font></em></strong>id<strong><em><font color=
+ "#800000">`</font></em></strong><font color="#800080"><br>
+ ** conf: $*<br>
+ EOF/</font><br>
+ <br>
+ <font color="#008080">SHELL</font>=/bin/sh<br>
+ <strong><font color=
+ "#000080">if</font></strong> <strong><font color=
+ "#000080">test</font></strong> -f /usr/xpg4/bin/sh<br>
+
+ <strong><font color="#000080">then</font></strong><br>
+ <font color=
+ "#008080">CONFIG_SHELL</font>=/usr/xpg4/bin/sh<br>
+ <strong><font color="#000080">export</font></strong> CONFIG_SHELL<br>
+
+ <font color=
+ "#008080">SHELL</font>=<font color=
+ "#008080">$CONFIG_SHELL</font><br>
+ <strong><font color="#000080">fi</font></strong><br>
+ <br>
+ rm -f config.status config.cache<br>
+ <font color="#008080">TOP</font>=<font color=
+ "#008080">$HOME</font>/<font color="#008080">$WHAT</font><br>
+ <font color=
+ "#008080">$SHELL</font> ./configure --verbose \<br>
+
+ --disable-echo \<br>
+
+ --disable-overwrite \<br>
+
+ --enable-warnings \<br>
+
+ --with-warnings \<br>
+
+ --prefix=<font color="#008080">$TOP</font> <font color="#008080">$*</font> <strong><font color="#008080">2</font></strong>>&<strong><font color="#008080">1</font></strong> | tee -a <font color="#008080">$OUT</font><br>
+
+ <!--atr2html}}--></p>
+ </blockquote>
+
+ <p>Other major changes to the configure script include:</p>
- <dd>Lynx-like info browser. <a href=
- "https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>
+ <ul>
+ <li>
+ <p>ABI 6 is now the default, intending that the existing ABI
+ 5 should build as before using the
+ “<code>--with-abi-version=5</code>” option.</p>
+ </li>
+
+ <li>
+ <p>added <code>--with-extra-suffix</code> option to help with
+ installing nonconflicting ncurses6 packages, e.g., avoiding
+ header- and library-conflicts.</p>
+
+ <p><strong>NOTE:</strong> as a side-effect, this renames</p>
+
+ <blockquote>
+ <p><code>adacurses-config</code> to
+ <code>adacurses5-config</code> and<br>
+ <code>adacursesw-config</code> to
+ <code>adacursesw5-config</code></p>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+ </ul>
- <dt>tin</dt>
+ <h4><a name="h4-config-options" id=
+ "h4-config-options">Configuration options</a></h4>
- <dd>newsreader, supporting color, MIME <a href=
- "http://www.tin.org/">http://www.tin.org/</a></dd>
- </dl>as well as some that use ncurses for the terminfo support
- alone:
+ <p>There are several new (or extended) configure options:</p>
<dl>
- <dt>minicom</dt>
+ <dt><code>--disable-db-install</code></dt>
- <dd>terminal emulator<br>
- <a href=
- "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>
+ <dd>
+ <p>Do not install the terminal database. This is used to omit
+ features for packages, as done with
+ <code>--without-progs</code>. The option simplifies building
+ cross-compile support packages.</p>
+ </dd>
- <dt>vile</dt>
+ <dt><code>--disable-gnat-projects</code></dt>
- <dd>vi-like-emacs<br>
- <a href=
- "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
+ <dd>
+ <p>This option is used for regression testing</p>
+ </dd>
+
+ <dt><code>--disable-lib-suffixes</code></dt>
+
+ <dd>
+ <p>Suppress the “w”, “t” or
+ “tw” suffixes which normally would be added to
+ the library names for the <code>--enable-widec</code> and
+ <code>--with-pthread</code> options.</p>
+ </dd>
+
+ <dt><code>--with-cxx-shared</code></dt>
+
+ <dd>
+ <p>When <code>--with-shared</code> 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.</p>
+ </dd>
+
+ <dt><code>--with-hashed-db</code></dt>
+
+ <dd>
+ <p>Extended this configure option to simplify building with
+ different versions of Berkeley database using FreeBSD
+ ports.</p>
+ </dd>
+
+ <dt><code>--with-pc-suffix</code></dt>
+
+ <dd>
+ <p>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.</p>
+ </dd>
+
+ <dt><code>--with-xterm-kbs</code></dt>
+
+ <dd>
+ <p>Configure xterm's terminfo entries to use either BS
+ (<code>^H</code>, i.e., ASCII backspace) or DEL
+ (<code>^?</code>, or 127).</p>
+ </dd>
</dl>
- <p>The ncurses distribution includes a selection of test programs
- (including a few games).</p>
+ <h3><a name="h3-portability" id=
+ "h3-portability">Portability</a></h3>
+
+ <h4><a name="h4-port-mingw" id="h4-port-mingw">MinGW</a></h4>
+
+ <p>Most of the portability-related work since <a href=
+ "http://invisible-island.net/ncurses/announce-5.9.html"><em class="small-caps">
+ ncurses</em> 5.9</a> extended and improved the MinGW port
+ introduced in <a href=
+ "http://invisible-island.net/ncurses/announce-5.8.html"><em class="small-caps">
+ ncurses</em> 5.8</a>.</p>
+
+ <p>The MinGW port can be readily cross-compiled:</p>
+
+ <ul>
+ <li>
+ <p>modified configure script to allow creating dll's for
+ MinGW when cross-compiling.</p>
+ </li>
+
+ <li>
+ <p>enforced Windows-style path-separator if
+ cross-compiling,</p>
+ </li>
+
+ <li>
+ <p>added scripts for test-builds of cross-compiled packages
+ for ncurses6 to MinGW.</p>
+ </li>
+
+ <li>
+ <p>added pc-files to the MinGW cross-compiling
+ test-packages.</p>
+ </li>
+
+ <li>
+ <p>added script for building test-packages of binaries
+ cross-compiled to MinGW using NSIS.</p>
+ </li>
+
+ <li>
+ <p>added <code>nc_mingw.h</code> to installed headers for
+ MinGW port; this is needed for cross-compiling <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.</p>
+ </li>
+
+ <li>
+ <p>added test-packages for cross-compiling ncurses-examples
+ using the MinGW test-packages.</p>
+ </li>
+ </ul>
+
+ <p>The MinGW-specific Windows driver accounts for several
+ changes:</p>
+
+ <ul>
+ <li>
+ <p>wide-character display is made usable by replacing MinGW's
+ non-working <code>wcrtomb</code> and <code>wctomb</code>
+ functions.</p>
+ </li>
+
+ <li>
+ <p>implemented some display features: <a href=
+ "http://invisible-island.net/ncurses/man/curs_beep.3x.html">beep</a>,
+ <a href=
+ "http://invisible-island.net/ncurses/man/curs_beep.3x.html">flash</a>,
+ <a href=
+ "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set">
+ curs_set</a>.</p>
+ </li>
+
+ <li>
+ <p>the driver handles repainting on endwin/refresh
+ combination.</p>
+ </li>
+
+ <li>
+ <p>modified treatment of <code>TERM</code> variable for MinGW
+ port to allow explicit use of the Windows console driver by
+ checking if <code>$TERM</code> is set to
+ “<code>#win32console</code>” or an abbreviation
+ of that.</p>
+ </li>
+
+ <li>
+ <p>the Windows driver also matches the special
+ <code>TERM</code> value “unknown”</p>
+ </li>
+
+ <li>
+ <p>the driver now returns characters for special keys, (like
+ <code>ansi.sys</code> does), when keypad mode is off, rather
+ than returning nothing at all.</p>
+ </li>
+
+ <li>
+ <p>the driver checks a new environment variable <a href=
+ "http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_CONSOLE2">
+ NCURSES_CONSOLE2</a> to optionally work around a deficiency
+ in <code>Console2</code> (and its descendent
+ <code>ConsoleZ</code>) which hang when an application creates
+ a console buffer.</p>
+ </li>
+ </ul>
+
+ <p>Finally, there are other improvements:</p>
+
+ <ul>
+ <li>
+ <p>MinGW is one of the configurations where <em class=
+ "small-caps">ncurses</em> installs by default into /usr</p>
+ </li>
+
+ <li>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.</li>
+
+ <li>
+ <p>extend Windows support to work with MSYS2;</p>
+
+ <ul>
+ <li>
+ <p>this works with a scenario where there is an
+ ANSI-escape handler such as <code>ansicon</code> running
+ in the console window.</p>
+ </li>
+
+ <li>wrap <code>isatty</code> calls with a macro, provide a
+ corresponding set of support routines to address
+ differences between MinGW and MSYS2.</li>
+ </ul>
+ </li>
+
+ <li>
+ <p>ensure <code>WINVER</code> is defined in makefiles rather
+ than using headers.</p>
+ </li>
+
+ <li>
+ <p>add check for the <code>gnatprep</code>
+ “<code>-T</code>” option.</p>
+ </li>
+
+ <li>
+ <p>work around a bug introduced by <a href=
+ "http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual">
+ gcc 4.8.1</a> in MinGW which breaks "trace" feature.</p>
+ </li>
+
+ <li>
+ <p>add a driver-name method to each of the drivers.</p>
+ </li>
+ </ul>
+
+ <h4><a name="h4-port-systems" id="h4-port-systems">Other
+ ports</a></h4>
+
+ <p>These changes affect certain platforms (ports):</p>
+
+ <ul>
+ <li>
+ <p>the configure script knows how to build shared libraries
+ with DragonFlyBSD and Interix.</p>
+ </li>
+
+ <li>
+ <p>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:</p>
+
+ <ul>
+ <li>
+ <p>the shared-library suffix for AIX 5 and 6 is now
+ ".so"</p>
+ </li>
+
+ <li>
+ <p>the <code>-brtl</code> option is used with AIX 5-7; it
+ is needed to link with the shared libraries.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>the configure <code>--enable-pc-files</code> option takes
+ into account the <a href=
+ "http://linux.die.net/man/1/pkg-config"><code>PKG_CONFIG_PATH</code></a>
+ variable.</p>
+ </li>
+
+ <li>
+ <p>the configure option <code>--with-pkg-config-libdir</code>
+ provides control over the actual directory into which
+ pc-files are installed.</p>
+ </li>
+
+ <li>
+ <p>the build scripts add explicit -ltinfo, etc., to the
+ generated ".pc" file when <code>ld</code> option
+ “<code>--as-needed</code>” is used, or when
+ ncurses and tinfo are installed without using rpath.</p>
+ </li>
+
+ <li>
+ <p>the configure script disallows conflicting options
+ “<code>--with-termlib</code>” and
+ “<code>--enable-term-driver</code>”.</p>
+ </li>
+
+ <li>
+ <p>the check for missing c++ compiler to work when no error
+ is reported, and no variables set is improved (see note for
+ <a href=
+ "http://invisible-island.net/ncurses/NEWS.html#t20021206">20021206</a>).</p>
+ </li>
+
+ <li>
+ <p>the misc/gen_edit.sh script selects a "linux" entry which
+ works with the current kernel rather than assuming it is
+ always "linux3.0"</p>
+ </li>
+
+ <li>
+ <p>the test/configure script makes it simpler to override
+ names of curses-related libraries, to help with linking with
+ pdcurses in MinGW environment.</p>
+ </li>
+
+ <li>
+ <p>the configure-script/ifdef's allow the BSD OLD_TTY feature
+ to be suppressed if the type of <code>ospeed</code> is
+ configured using the option <code>--with-ospeed</code> to not
+ be a <code>short</code>. By default, it is a
+ <code>short</code> for termcap-compatibility.</p>
+ </li>
+
+ <li>
+ <p>the MKlib_gen.sh script works around a recent change in
+ gcc 5 (released <a href=
+ "https://gcc.gnu.org/gcc-5/">mid-2015</a>) which essentially
+ emits multiple <code>#line</code> statements for the same
+ position in a file.</p>
+ </li>
+
+ <li>
+ <p>the configure script works with Minix3.2 (see <a href=
+ "http://invisible-island.net/autoconf/portability-test.html">note</a>
+ on portability)</p>
+ </li>
+
+ <li>
+ <p>OS/2 redux:</p>
+
+ <ul>
+ <li>
+ <p>the configure script supports OS/2 kLIBC.</p>
+ </li>
+
+ <li>
+ <p>the <code>--with-lib-prefix</code> option allows
+ configuring for old/new flavors of OS/2 EMX.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>improved configure-script checks for
+ <code>_XOPEN_SOURCE</code>:</p>
+
+ <ul>
+ <li>
+ <p>the definition works starting with Solaris 10.</p>
+ </li>
+
+ <li>
+ <p>the definition is suppressed for IRIX64, since its
+ header files have a conflict versus
+ <code>_SGI_SOURCE</code>.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
+
+ <h2><a name="h2-features" id="h2-features">Features of <em class=
+ "small-caps">ncurses</em></a></h2>
+
+ <p>The <em class="small-caps">ncurses</em> package is fully
+ upward-compatible with SVr4 (System V Release 4) curses:</p>
+
+ <ul>
+ <li>
+ <p>All of the SVr4 calls have been implemented (and are
+ documented).</p>
+ </li>
+
+ <li>
+ <p><em class="small-caps">ncurses</em> 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.</p>
+ </li>
+
+ <li>
+ <p><em class="small-caps">ncurses</em> provides these SVr4
+ add-on libraries (not part of X/Open Curses):</p>
+
+ <ul>
+ <li>
+ <p>the panels library, supporting a stack of windows with
+ backing store.</p>
+ </li>
+
+ <li>
+ <p>the menus library, supporting a uniform but flexible
+ interface for menu programming.</p>
+ </li>
+
+ <li>
+ <p>the form library, supporting data collection through
+ on-screen forms.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p><em class="small-caps">ncurses</em>'s terminal database is
+ fully compatible with that used by SVr4 curses.</p>
+
+ <ul>
+ <li><em class="small-caps">ncurses</em> supports
+ user-defined capabilities which it can see, but which are
+ hidden from SVr4 curses applications using the
+ <em>same</em> terminal database.</li>
+
+ <li>
+ <p>It can be optionally configured to match the format
+ used in related systems such as AIX and Tru64.</p>
+ </li>
+
+ <li>
+ <p>Alternatively, <em class="small-caps">ncurses</em> can
+ be configured to use hashed databases rather than the
+ directory of files used by SVr4 curses.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>The <em class="small-caps">ncurses</em> utilities have
+ options to allow you to filter terminfo entries for use with
+ less capable <em>curses</em>/<em>terminfo</em> versions such
+ as the HP/UX and AIX ports.</p>
+ </li>
+ </ul>
+
+ <p>The <em class="small-caps">ncurses</em> package also has many
+ useful extensions over SVr4:</p>
+
+ <ul>
+ <li>
+ <p>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).</p>
+ </li>
+
+ <li>
+ <p>Unlike SVr3 curses, <em class="small-caps">ncurses</em>
+ can write to the rightmost-bottommost corner of the screen if
+ your terminal has an insert-character capability.</p>
+ </li>
+
+ <li>
+ <p>Ada95 and C++ bindings.</p>
+ </li>
+
+ <li>
+ <p>Support for mouse event reporting with X Window xterm and
+ FreeBSD and OS/2 console windows.</p>
+ </li>
+
+ <li>
+ <p>Extended mouse support via Alessandro Rubini's gpm
+ package.</p>
+ </li>
+
+ <li>
+ <p>The function <code>wresize</code> allows you to resize
+ windows, preserving their data.</p>
+ </li>
+
+ <li>
+ <p>The function <code>use_default_colors</code> allows you to
+ use the terminal's default colors for the default color pair,
+ achieving the effect of transparent colors.</p>
+ </li>
+
+ <li>
+ <p>The functions <code>keyok</code> and
+ <code>define_key</code> allow you to better control the use
+ of function keys, e.g., disabling the <em class=
+ "small-caps">ncurses</em> KEY_MOUSE, or by defining more than
+ one control sequence to map to a given key code.</p>
+ </li>
+
+ <li>
+ <p>Support for 256-color terminals, such as modern xterm.</p>
+ </li>
+
+ <li>
+ <p>Support for 16-color terminals, such as <em>aixterm</em>
+ and <em>modern xterm</em>.</p>
+ </li>
+
+ <li>
+ <p>Better cursor-movement optimization. The package now
+ features a cursor-local-movement computation more efficient
+ than either BSD's or System V's.</p>
+ </li>
+
+ <li>
+ <p>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
+ <code>quickch</code> routine.</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>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).</p>
+ </li>
+
+ <li>
+ <p>The <a href=
+ "http://invisible-island.net/ncurses/man/tic.1m.html">tic</a>/<a href="http://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
+ utility provided with <em class="small-caps">ncurses</em> has
+ the ability to translate many termcaps from the XENIX, IBM
+ and AT&T extension sets.</p>
+ </li>
+
+ <li>
+ <p>A BSD-like <a href=
+ "http://invisible-island.net/ncurses/man/tset.1.html">tset</a>
+ utility is provided.</p>
+ </li>
+
+ <li>
+ <p>The <em class="small-caps">ncurses</em> 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.</p>
+ </li>
+
+ <li>
+ <p>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.)</p>
+ </li>
+
+ <li>
+ <p>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.</p>
+ </li>
+
+ <li>
+ <p>The table-of-entries utility <a href=
+ "http://invisible-island.net/ncurses/man/toe.1m.html">toe</a>
+ makes it easy for users to see exactly what terminal types
+ are available on the system.</p>
+ </li>
+
+ <li>
+ <p>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 <code>#undef</code>.</p>
+ </li>
+
+ <li>
+ <p>Extensive documentation is provided (see the <em><a href=
+ "http://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
+ Additional Reading</a></em> section of the <em><a href=
+ "http://invisible-island.net/ncurses/ncurses.faq.html"><em class="small-caps">
+ ncurses</em> FAQ</a></em> for online documentation).</p>
+ </li>
+ </ul>
+
+ <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
+ <em class="small-caps">ncurses</em></a></h2>
+
+ <p>The <em class="small-caps">ncurses</em> distribution includes
+ a selection of test programs (including a few games). These are
+ available separately as <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
+
+ <p>The ncurses library has been tested with a wide variety of
+ applications including:</p>
+
+ <blockquote>
+ <dl>
+ <dt>cdk</dt>
+
+ <dd>
+ <p>Curses Development Kit</p>
+
+ <p><a href=
+ "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
+ </p>
+ </dd>
+
+ <dt>ded</dt>
+
+ <dd>
+ <p>directory-editor</p>
+
+ <p><a href=
+ "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></p>
+ </dd>
+
+ <dt>dialog</dt>
+
+ <dd>
+ <p>the underlying application used in Slackware's setup,
+ and the basis for similar install/configure applications on
+ many systems.</p>
+
+ <p><a href=
+ "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></p>
+ </dd>
+
+ <dt>lynx</dt>
- <h2>Who's Who and What's What</h2>Zeyd Ben-Halim started it from
- a previous package pcurses, written by Pavel Curtis. Eric S.
+ <dd>
+ <p>the text WWW browser</p>
+
+ <p><a href=
+ "http://lynx.isc.org/">http://lynx.isc.org/</a></p>
+ </dd>
+
+ <dt>Midnight Commander</dt>
+
+ <dd>
+ <p>file manager</p>
+
+ <p><a href=
+ "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></p>
+ </dd>
+
+ <dt>mutt</dt>
+
+ <dd>
+ <p>mail utility</p>
+
+ <p><a href=
+ "http://www.mutt.org/">http://www.mutt.org/</a></p>
+ </dd>
+
+ <dt>ncftp</dt>
+
+ <dd>
+ <p>file-transfer utility</p>
+
+ <p><a href=
+ "http://www.ncftp.com/">http://www.ncftp.com/</a></p>
+ </dd>
+
+ <dt>nvi</dt>
+
+ <dd>
+ <p>New vi uses ncurses.</p>
+
+ <p><a href=
+ "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
+ </p>
+ </dd>
+
+ <dt>tin</dt>
+
+ <dd>
+ <p>newsreader, supporting color, MIME</p>
+
+ <p><a href=
+ "http://www.tin.org/">http://www.tin.org/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <p>as well as some that use <em class="small-caps">ncurses</em>
+ for the terminfo support alone:</p>
+
+ <blockquote>
+ <dl>
+ <dt>minicom</dt>
+
+ <dd>
+ <p>terminal emulator for serial modem connections</p>
+
+ <p><a href=
+ "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></p>
+ </dd>
+
+ <dt>mosh</dt>
+
+ <dd>
+ <p>a replacement for <code>ssh</code>.</p>
+
+ <p><a href=
+ "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
+ </dd>
+
+ <dt>tack</dt>
+
+ <dd>
+ <p>terminfo action checker</p>
+
+ <p><a href=
+ "http://invisible-island.net/ncurses/tack.html">http://invisible-island.net/ncurses/tack.html</a></p>
+ </dd>
+
+ <dt>tmux</dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "http://tmux.github.io/">http://tmux.github.io/</a></p>
+ </dd>
+
+ <dt>vile</dt>
+
+ <dd>
+ <p>vi-like-emacs may be built to use the terminfo, termcap
+ or curses interfaces.</p>
+
+ <p><a href=
+ "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <p>and finally, those which use only the termcap interface:</p>
+
+ <blockquote>
+ <dl>
+ <dt>emacs</dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "http://www.gnu.org/software/emacs/">http://www.gnu.org/software/emacs/</a></p>
+ </dd>
+
+ <dt>screen</dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "http://www.gnu.org/software/screen/">http://www.gnu.org/software/screen/</a></p>
+ </dd>
+
+ <dt>vim</dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "http://www.vim.org/">http://www.vim.org/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <h2><a name="h2-development" id="h2-development">Development
+ activities</a></h2>
+
+ <p>Zeyd Ben-Halim started <em class="small-caps">ncurses</em>
+ 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
<a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
- Thomas Dickey acts as the maintainer for the Free Software
- Foundation, which holds the copyright on ncurses. Contact the
- current maintainers at <a href=
- "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.
-
- <p>To join the ncurses mailing list, please write email to
- <code>bug-ncurses-request@gnu.org</code> containing the line:</p>
- <pre>
- subscribe <name>@<host.domain>
-</pre>
+ Thomas Dickey also acts as the maintainer for the Free Software
+ Foundation, which holds the <a href=
+ "http://invisible-island.net/ncurses/ncurses-license.html">copyright
+ on ncurses</a>.</p>
+
+ <p>Contact the current maintainers at</p>
+
+ <blockquote>
+ <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
+ </blockquote>
+
+ <p>To join the ncurses mailing list, please write email to</p>
+
+ <blockquote>
+ <a href=
+ "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
+ </blockquote>containing the line:
+
+ <blockquote>
+ <p><code>subscribe</code>
+ <em><name>@<host.domain></em></p>
+ </blockquote>
<p>This list is open to anyone interested in helping with the
development and testing of this package.</p>
- <p>Beta versions of ncurses and patches to the current release
- are made available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
+ <p>Beta versions of <em class="small-caps">ncurses</em> and
+ patches to the current release are made available at</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
+ </blockquote>
+
+ <p>There is an archive of the mailing list here:</p>
+
+ <blockquote>
+ <p><a href=
+ "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
+ (also <a href=
+ "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+ </blockquote>
- <h2>Future Plans</h2>
+ <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
+ resources</a></h2>
+
+ <p>The release notes make scattered references to these pages,
+ which may be interesting by themselves:</p>
<ul>
- <li>Extended-level XPG4 conformance, with internationalization
- support.</li>
+ <li><a href=
+ "http://invisible-island.net/scripts/man2html.html">man2html</a></li>
+
+ <li><a href=
+ "http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html">
+ <em class="small-caps">ncurses</em> licensing</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <em class="small-caps">ncurses</em></a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/ncurses-mingw.html">The
+ MinGW port of <em class="small-caps">ncurses</em></a></li>
+
+ <li><a href=
+ "http://invisible-island.net/ncurses/tack.html">tack –
+ terminfo action checker</a></li>
+
+ <li><a href=
+ "http://invisible-island.net/autoconf/portability-tar.html">tar
+ versus portability</a></li>
- <li>Ports to more systems, including DOS and Windows.</li>
- </ul>We need people to help with these projects. If you are
- interested in working on them, please join the ncurses list.
+ <li><a href=
+ "http://invisible-island.net/ncurses/tctest.html">tctest
+ – termcap library checker</a></li>
- <h2>Other Related Resources</h2>The distribution provides a newer
- version of the terminfo-format terminal description file once
- maintained by <a href="http://www.catb.org/~esr/terminfo/">Eric
+ <li><a href=
+ "http://invisible-island.net/ncurses/ncurses.html#download_database">
+ Terminal Database</a></li>
+ </ul>
+
+ <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
+ resources</a></h2>
+
+ <p>The distribution provides a newer version of the
+ terminfo-format terminal description file once maintained by
+ <a href="http://www.catb.org/~esr/terminfo/">Eric
Raymond</a> . 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.</p>
<p>You can find lots of information on terminal-related topics
not covered in the terminfo file at <a href=
"http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
Richard Shuford's archive</a> .</p>
+
+ <div class="nav">
+ <ul>
+ <li><a href="#h2-overview">Overview</a></li>
+
+ <li>
+ <a href="#h2-release-notes">Release Notes</a>
+
+ <ul>
+ <li>
+ <a href="#h3-library">Library improvements</a>
+
+ <ul>
+ <li><a href="#h3-lib-setbuf">Output
+ buffering</a></li>
+
+ <li><a href="#h3-lib-versioning">Symbol
+ versioning</a></li>
+
+ <li><a href="#h3-lib-other">Miscellaneous</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#h3-programs">Program improvements</a>
+
+ <ul>
+ <li><a href="#h4-utilities">Utilities</a></li>
+
+ <li><a href="#h4-examples">Examples</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h3-database">Terminal database</a></li>
+
+ <li><a href="#h3-documentation">Documentation</a></li>
+
+ <li><a href="#h3-bug-fixes">Interesting
+ bug-fixes</a></li>
+
+ <li>
+ <a href="#h3-config-config">Configuration changes</a>
+
+ <ul>
+ <li><a href="#h4-config-major">Major changes</a></li>
+
+ <li><a href="#h4-config-options">Configuration
+ options</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#h3-portability">Portability</a>
+
+ <ul>
+ <li><a href="#h4-port-mingw">MinGW</a></li>
+
+ <li><a href="#h4-port-systems">Other ports</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+
+ <li><a href="#h2-features">Features of <em class=
+ "small-caps">ncurses</em></a></li>
+
+ <li><a href="#h2-who-uses">Applications using <em class=
+ "small-caps">ncurses</em></a></li>
+
+ <li><a href="#h2-development">Development activities</a></li>
+
+ <li><a href="#h2-this-stuff">Related resources</a></li>
+
+ <li><a href="#h2-other-stuff">Other resources</a></li>
+ </ul>
+ </div>
</body>
</html>
<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
</PRE>
<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
<!--
* 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 *
* sale, use or other dealings in this Software without prior written *
* 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 @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
field_userptr <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
form_driver <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+ form_driver_w <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>*
form_fields <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
form_init <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
form_opts <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
detailed descriptions of the entry points.
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
<!--
****************************************************************************
- * 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 *
* sale, use or other dealings in this Software without prior written *
* 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 @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
</PRE>
<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- int form_driver(FORM *form, int c);
+ <STRONG>int</STRONG> <STRONG>form_driver(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>form_driver_w(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG>
</PRE>
<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-form_driver">form_driver</a></H3><PRE>
Once a form has been posted (displayed), you should funnel
input events to it through <STRONG>form_driver</STRONG>. This routine has
three major input cases:
<STRONG>o</STRONG> The input is a form navigation request. Navigation
request codes are constants defined in <STRONG><form.h></STRONG>, which
are distinct from the key- and character codes
- returned by <STRONG>wgetch</STRONG>.
+ returned by <STRONG><A HREF="wgetch.3x.html">wgetch(3x)</A></STRONG>.
<STRONG>o</STRONG> The input is a printable character. Printable charac-
ters (which must be positive, less than 256) are
<STRONG>o</STRONG> 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.
+</PRE>
+<H3><a name="h3-form_driver_w">form_driver_w</a></H3><PRE>
+ 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 <STRONG><A HREF="get_wch.3x.html">get_wch(3x)</A></STRONG>. 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.
+</PRE>
+<H3><a name="h3-Form-driver-requests">Form-driver requests</a></H3><PRE>
+ 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,
+ <EM>Name</EM> <EM>Description</EM>
+ -------------------------------------------------------------------------
+ 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.
</PRE>
-<H3><a name="h3-MOUSE-HANDLING">MOUSE HANDLING</a></H3><PRE>
- If the second argument is the KEY_MOUSE special key, the
+<H3><a name="h3-Mouse-handling">Mouse handling</a></H3><PRE>
+ 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:
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:
<STRONG>o</STRONG> the form cursor is positioned to that field.
- <STRONG>o</STRONG> If you double-click a field, the form cursor is
- positioned to that field and <STRONG>E_UNKNOWN_COMMAND</STRONG> is
+ <STRONG>o</STRONG> If you double-click a field, the form cursor is
+ positioned to that field and <STRONG>E_UNKNOWN_COMMAND</STRONG> 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.
- <STRONG>o</STRONG> If a translation into a request was done,
+ <STRONG>o</STRONG> If a translation into a request was done,
<STRONG>form_driver</STRONG> 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
<STRONG>E_REQUEST_DENIED</STRONG> is returned.
</PRE>
-<H3><a name="h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></H3><PRE>
+<H3><a name="h3-Application-defined-commands">Application-defined commands</a></H3><PRE>
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 <STRONG>E_UNKNOWN_COM-</STRONG>
<STRONG>MAND</STRONG>. Application-defined commands should be defined rel-
- ative to <STRONG>MAX_COMMAND</STRONG>, the maximum value of these pre-
+ ative to <STRONG>MAX_COMMAND</STRONG>, the maximum value of these pre-
defined requests.
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
+ Routine detected an incorrect or out-of-range argu-
ment.
<STRONG>E_BAD_STATE</STRONG>
</PRE>
<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
- 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.
</PRE>
<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
+ Juergen Pfeifer. Manual pages and adaptation for new
curses by Eric S. Raymond.
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
<ul>
-<li><a href="#h3-MOUSE-HANDLING">MOUSE HANDLING</a></li>
-<li><a href="#h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></li>
+<li><a href="#h3-form_driver">form_driver</a></li>
+<li><a href="#h3-form_driver_w">form_driver_w</a></li>
+<li><a href="#h3-Form-driver-requests">Form-driver requests</a></li>
+<li><a href="#h3-Mouse-handling">Mouse handling</a></li>
+<li><a href="#h3-Application-defined-commands">Application-defined commands</a></li>
</ul>
</li>
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
http://invisible-island.net/ncurses/tctest.html
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
</PRE>
<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
</PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for
detailed descriptions of the entry points.
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
* 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 @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
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
- <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
The <STRONG>ncurses</STRONG> library emulates the curses library of System
V Release 4 UNIX, and XPG4 (X/Open Portability Guide)
is_nodelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
is_notimeout <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_pad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
is_scrollok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_subwin <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
is_syncok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
is_term_resized <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
is_wintouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
mvscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
mvvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
mvvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+
mvwadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
mvwadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
-
mvwadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
mvwaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
mvwaddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
qiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
raw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
redrawwin <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+
refresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
reset_prog_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
-
reset_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
resetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+ resize_term <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
resizeterm <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
restartterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
ripoffline <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
tigetflag <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
tigetnum <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
tigetstr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ tiparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>*
timeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
touchline <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
touchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
tputs <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
typeahead <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+
unctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
unget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
ungetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
ungetmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
-
untouchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
use_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>*
use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
wget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
wgetbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
wgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ wgetdelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
wgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
wgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+ wgetparent <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ wgetscrreg <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
wgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
whline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+
whline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
win_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
win_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
winch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
winchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
winchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
-
winnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
winnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
wins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
</PRE>
<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
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 <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
Entries in <EM>terminfo</EM> consist of a sequence of `,' separated
fields (embedded commas may be escaped with a backslash or
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
</PRE>
<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
<STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>,
<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150725).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
-# $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. #
# #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
$(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:
-# $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"), #
# 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@
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
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.*
'\" 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 *
.\" 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
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)
.\"***************************************************************************
-.\" 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 *
.\" 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
.SH SYNOPSIS
\fB#include <form.h>\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<form.h>\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.
.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
.\" 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
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)
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)
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)
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)
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES :
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
../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 \
$(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 > $@
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)
#
# 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. #
# 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
#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
}
#endif
-#define ReturnScreenError() { _nc_set_screen(0); \
+#define ReturnScreenError() do { _nc_set_screen(0); \
returnCode(ERR); } while (0)
/* OS-independent screen initializations */
-ncurses6 (6.0+20150725) unstable; urgency=low
+ncurses6 (6.0+20150808) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 20 Jul 2015 18:28:06 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 06 Aug 2015 19:13:39 -0400
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.0+20150725) unstable; urgency=low
+ncurses6 (6.0+20150808) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 20 Jul 2015 18:28:06 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 06 Aug 2015 19:13:39 -0400
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.0+20150725) unstable; urgency=low
+ncurses6 (6.0+20150808) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 20 Jul 2015 18:28:06 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 06 Aug 2015 19:13:39 -0400
ncurses6 (5.9-20120608) unstable; urgency=low
-; $Id: mingw-ncurses.nsi,v 1.115 2015/07/20 22:28:06 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.117 2015/08/06 23:13:39 tom Exp $\r
\r
; TODO add examples\r
; TODO bump ABI to 6\r
!define VERSION_MAJOR "6"\r
!define VERSION_MINOR "0"\r
!define VERSION_YYYY "2015"\r
-!define VERSION_MMDD "0725"\r
+!define VERSION_MMDD "0808"\r
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
\r
!define MY_ABI "5"\r
Summary: shared libraries for terminal handling
Name: mingw32-ncurses6
Version: 6.0
-Release: 20150725
+Release: 20150808
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
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
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
-# $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. #
# #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
echo "#define __TRANSFORM_H 1" >>$@
echo "#include <progs.priv.h>" >>$@
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)\"" >>$@
@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
-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
-# $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"), #
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
@SET_MAKE@
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
,[$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:
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)
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
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
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"
main ()
{
-void *foo = &(boolnames)
+void *foo = &(ospeed)
;
return 0;
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 <<EOF
#define $cf_result 1
EOF
else
- echo "$as_me:15724: checking for data boolnames in library" >&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
#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)
#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
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 <<EOF
#define $cf_result 1
fi
fi
-echo "$as_me:15843: checking for data boolfnames declaration in ${cf_cv_ncurses_header:-curses.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"
main ()
{
-void *foo = &(boolfnames)
+void *foo = &(boolnames)
;
return 0;
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 <<EOF
#define $cf_result 1
EOF
else
- echo "$as_me:15905: checking for data boolfnames in library" >&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
#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)
#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
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 <<EOF
+#define $cf_result 1
+EOF
+
+ fi
+fi
+
+echo "$as_me:16024: checking for data boolfnames declaration in ${cf_cv_ncurses_header:-curses.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 <xcurses.h>
+char * XCursesProgramName = "test";
+#else
+#include <${cf_cv_ncurses_header:-curses.h}>
+#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
+#include <ncursesw/term.h>
+#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
+#include <ncurses/term.h>
+#elif defined(HAVE_TERM_H)
+#include <term.h>
+#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 <<EOF
+#define $cf_result 1
+EOF
+
+else
+ echo "$as_me:16086: checking for data boolfnames in library" >&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 <xcurses.h>
+char * XCursesProgramName = "test";
+#else
+#include <${cf_cv_ncurses_header:-curses.h}>
+#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
+#include <ncursesw/term.h>
+#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
+#include <ncurses/term.h>
+#elif defined(HAVE_TERM_H)
+#include <term.h>
+#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 <xcurses.h>
+char * XCursesProgramName = "test";
+#else
+#include <${cf_cv_ncurses_header:-curses.h}>
+#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
+#include <ncursesw/term.h>
+#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
+#include <ncurses/term.h>
+#elif defined(HAVE_TERM_H)
+#include <term.h>
+#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 <<EOF
if ( test "$GCC" = yes || test "$GXX" = yes )
then
-echo "$as_me:16026: checking if you want to turn on gcc warnings" >&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.
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
EOF
if test "$GCC" = yes
then
- { echo "$as_me:16066: checking for $CC __attribute__ directives..." >&5
+ { echo "$as_me:16247: checking for $CC __attribute__ directives..." >&5
echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
cat > conftest.$ac_ext <<EOF
-#line 16069 "${as_me:-configure}"
+#line 16250 "${as_me:-configure}"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
;;
esac
- if { (eval echo "$as_me:16118: \"$ac_compile\"") >&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
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
}
_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"
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
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
}
_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"
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 <<EOF
-#line 16285 "${as_me:-configure}"
+#line 16466 "${as_me:-configure}"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
# remark #981: operands are evaluated in unspecified order
# warning #279: controlling expression is constant
- { echo "$as_me:16302: checking for $CC warning options..." >&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"
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
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=
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)
([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
([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
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.
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
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 <dmalloc.h>
_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
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
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. */
}
_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
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 <<EOF
fi
-echo "$as_me:16610: checking if you want to use dbmalloc for testing" >&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.
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
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 <dbmalloc.h>
_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
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
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. */
}
_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
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 <<EOF
fi
-echo "$as_me:16822: checking if you want to use valgrind for testing" >&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.
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
;;
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.
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
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*)
(*)
;;
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"
LIBS="$cf_add_libs"
cat >conftest.$ac_ext <<_ACEOF
-#line 17015 "configure"
+#line 17196 "configure"
#include "confdefs.h"
int
}
_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
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.
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
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
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
cf_rpath_oops=
cat >conftest.$ac_ext <<_ACEOF
-#line 17123 "configure"
+#line 17304 "configure"
#include "confdefs.h"
#include <stdio.h>
int
}
_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`
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
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
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
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
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
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
: ${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
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;}
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;}
"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
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
-) 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;;
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;;
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;}
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;}
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;}
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;}
* ) 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
-) 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;;
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;;
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\(.*[^/]\)//*[^/][^/]*/*$' \| \
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)
fi
fi
+CF_CURSES_CHECK_DATA(ospeed)
CF_CURSES_CHECK_DATA(boolnames)
CF_CURSES_CHECK_DATA(boolfnames)
/*
* 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.
*/
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();