+ <p>A few entries use extensions (user-defined terminal
+ capabilities):</p>
+
+ <ul>
+ <li>add <em>rmxx</em>/<em>smxx</em> ECMA-48 strikeout extension
+ to <code>tmux</code> and <code>xterm-basic</code></li>
+
+ <li>used <em>RGB</em> capability in new <em>*-direct</em>
+ entries to denote direct-color feature.</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=
+ "https://invisible-island.net/ncurses/NEWS.html">NEWS</a>
+ file but treated sketchily in manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In particular,</p>
+
+ <ul>
+ <li>
+ <p>Since the underlying features for <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">tset</span></a>, <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">tput</span></a>, and <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">clear</span></a> have been better
+ integrated, the documentation now includes information on how
+ those tools evolved.</p>
+
+ <p>In addition to explaining the improved integration of the
+ tools, the manual pages made it easier to see how the tools
+ are similar and how they are different.</p>
+ </li>
+
+ <li>
+ <p>The <code>addch</code> manual page has additional
+ information on <a href=
+ "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY">
+ portability</a> and differences from other
+ implementations.</p>
+ </li>
+
+ <li>
+ <p>The discussion of color-pairs in the <em>attributes</em>
+ manual page is improved in its <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
+ history section</a>.</p>
+ </li>
+
+ <li>
+ <p>The documentation of the <code>chtype</code>,
+ <code>cchar_t</code> types and the attribute values which can
+ be stored in those types, in particular the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
+ history</a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
+ portability</a> sections of the <em>attributes</em> manual
+ page, has been improved.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of <a href=
+ "https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY">
+ portability</a> in the <em>mouse</em> manual.</p>
+ </li>
+
+ <li>
+ <p>The <em>pad</em> manual page has a section on the <a href=
+ "https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY">
+ origin and portability</a> of pads.</p>
+ </li>
+
+ <li>
+ <p>Differences between SVr4 and X/Open Curses soft-keys are
+ discussed in a new section on <a href=
+ "https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY">
+ portability</a>.</p>
+ </li>
+
+ <li>
+ <p>There are updated/improved notes on portability in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY">
+ resizeterm</a> and <a href=
+ "https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY">
+ wresize</a> manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In addition to providing background information to explain
+ these features and show how they evolved, there are corrections,
+ clarifications, etc.:</p>
+
+ <ul>
+ <li>
+ <p>add note in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols">
+ <em>addch</em></a> manual about line-drawing when it depends
+ upon UTF-8.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of line-drawing characters in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html">
+ <em>add_wch</em></a> manual.</p>
+ </li>
+
+ <li>
+ <p>explain in <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION">
+ <span class="part-name">clear</span></a>'s manual page that
+ it writes to the standard output.</p>
+ </li>
+
+ <li>
+ <p>improve description of <a href=
+ "https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin">
+ <em>endwin</em></a>.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of field validation in the <a href=
+ "https://invisible-island.net/ncurses/man/form_driver.3x.html">
+ <em>form driver</em></a> manual page.</p>
+ </li>
+
+ <li>
+ <p>clarify the use of <code>wint_t</code> vs
+ <code>wchar_t</code> in <a href=
+ "https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE">
+ <em>get_wstr</em></a> manual page.</p>
+ </li>
+
+ <li>
+ <p>clarify in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes">
+ <em>getch</em></a> manual that the keypad mode affects an
+ application's ability to read <code>KEY_MOUSE</code> codes,
+ but does not affect <code>KEY_RESIZE</code>.</p>
+
+ <p>trim some obsolete/incorrect wording about
+ <code>EINTR</code> from the <em>getch</em> manual page</p>
+
+ <p>improve manual pages for <a href=
+ "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode">
+ <em>getch</em></a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION">
+ <em>get_wch</em></a> to point out that they might return
+ user-defined values which have no predefined names in
+ <code><curses.h></code></p>
+ </li>
+
+ <li>
+ <p>improve description of the <code>-R</code> option in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
+ infocmp</span></a> manual page</p>
+ </li>
+
+ <li>
+ <p>clarify in the <a href=
+ "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES">
+ <em>resizeterm</em></a> manual page how
+ <code>KEY_RESIZE</code> is pushed onto the input stream.</p>
+ </li>
+
+ <li>
+ <p>document return value of <a href=
+ "https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE">
+ <code>use_extended_names</code></a></p>
+ </li>
+
+ <li>
+ <p>document differences in <a href=
+ "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY">
+ <code>ESCDELAY</code></a> versus AIX's implementation in the
+ <em>variables</em> manual page.</p>
+ </li>
+
+ <li>
+ <p>The <code>_nc_free_tinfo</code> function is now documented
+ in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html">
+ <em>memory-leaks</em></a> manual page, because it could be
+ used in <span class="main-name">tack</span> for memory-leak
+ checking.</p>
+ </li>
+
+ <li>
+ <p>add a note to the <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a> manual page about -W versus -f options.</p>
+ </li>
+
+ <li>
+ <p>improve <em>terminfo manual</em> description of <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax">
+ terminfo syntax</a>.</p>
+
+ <p>improve terminfo manual page discussion of <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics">
+ control- and graphics- characters</a>.</p>
+
+ <p>improve <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling">
+ color-handling</a> section in terminfo manual page</p>
+ </li>
+
+ <li>
+ <p>clarify description in <a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY">
+ <span class="part-name">tput</span></a> manual page regarding
+ support for termcap names</p>
+
+ <p>update <a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases">
+ <span class="part-name">tput</span></a> manual page to
+ reflect changes to manipulate terminal modes by sharing
+ functions with <span class="part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>clarify in manual pages that the optional verbose option
+ level of <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS">
+ <span class="part-name">tic</span></a> and <a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options">
+ <span class="part-name">infocmp</span></a> is available only
+ when <span class="main-name">ncurses</span> is configured for
+ tracing.</p>
+ </li>
+
+ <li>
+ <p>improve manual page description of <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><em>tset/reset</em></a>
+ versus window-size.</p>
+ </li>
+
+ <li>
+ <p>improve description of <a href=
+ "https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES">
+ <em>tgoto</em></a> parameters</p>
+ </li>
+ </ul>
+
+ <p>There are new manual pages:</p>
+
+ <ul>
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/user_caps.5.html"><em>
+ user_caps</em></a> documents the terminfo extensions used by
+ <span class="main-name">ncurses</span>.</li>
+
+ <li>
+ <p><a href=
+ "https://invisible-island.net/ncurses/man/scr_dump.5.html"><em>
+ scr_dump</em></a> documents the screen-dump format.</p>
+ </li>
+ </ul>
+
+ <p>Some of the improvements are more subtle, relating to the way
+ the information is presented:</p>
+
+ <ul>
+ <li>
+ <p>Made minor fixes to manpage <em>NAME/SYNOPSIS</em>
+ sections to consistently use rule that either all functions
+ which are prototyped in <em>SYNOPSIS</em> are listed in the
+ <em>NAME</em> section, or the manual-page name is the sole
+ item listed in the <em>NAME</em> section. The latter is used
+ to reduce clutter, e.g., for the top-level library manual
+ pages as well as for certain feature-pages such as <a href=
+ "https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html">
+ <em>SP-funcs</em></a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_threads.3x.html">
+ <em>threading</em></a>.</p>
+ </li>
+
+ <li>
+ <p>improve manual pages for utilities with respect to POSIX
+ versus X/Open Curses.</p>
+ </li>
+
+ <li>
+ <p>improve organization of the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html"><em>
+ attributes</em></a> and <a href=
+ "/ncurses/man/curs_color.3x.html"><em>color</em></a> manual
+ pages.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
+ bug-fixes</a></h3>
+
+ <ul>
+ <li>
+ <p>modify <span class="part-name">toe</span> to not exit if
+ unable to read a terminal description, e.g., if there is a
+ permission problem.</p>
+ </li>
+
+ <li>
+ <p>correct 20100515 change for weak signals versus
+ sigprocmask</p>
+ </li>
+
+ <li>work around Ada tool-breakage in Debian 9 and later by
+ invoking <code>gprconfig</code> to specify the C compiler to be
+ used by <code>gnatmake</code>, and conditionally suppressing
+ <code>Library_Options</code> line for static libraries.</li>
+
+ <li>
+ <p>There were, as well, several bug-fixes to handle illegal
+ input for <span class="part-name">tic</span>. Because those
+ did not correspond to useful terminal descriptions, most
+ users are unaffected.</p>
+ </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>This release provides a new binary format for terminal
+ descriptions that use extended numeric capabilities. Applications
+ built with the wide-character <em>ncursesw</em> library can use
+ these extended numbers.</p>
+
+ <ul>
+ <li>
+ <p>This includes utilities such as <span class=
+ "part-name">tic</span> and <span class=
+ "part-name">infocmp</span>, because (as noted in <a href=
+ "#h4-new-library"><em>New features</em></a>), the feature
+ relies upon an extension to the low-level <em>tinfo</em>
+ library.</p>
+ </li>
+
+ <li>
+ <p>A few software packagers use a configuration option of
+ <span class="main-name">ncurses</span> which allows the
+ low-level <em>tinfo</em> library to be shared between the
+ high-level <em>ncurses</em> and <em>ncursesw</em> libraries.
+ This new feature was designed to work in that configuration
+ as well.</p>
+ </li>
+ </ul>
+
+ <p>Other applications (i.e., using the 8-bit <em>ncurses</em>
+ library) which read the extended terminal descriptions see those
+ numeric capabilities set to the maximum value for a signed 16-bit
+ number.</p>
+
+ <p>Older versions of <span class="main-name">ncurses</span>'
+ <span class="part-name">tic</span> accept out-of-range numeric
+ capabilities, storing those as the maximum value for a signed
+ 16-bit number. Other implementations of curses (mentioned in the
+ discussion of <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
+ <span class="part-name">picsmap</span></a>) give zero for these
+ out-of-range capabilities.</p>
+
+ <h4><a name="h4-config-options" id=
+ "h4-config-options">Configuration options</a></h4>
+
+ <p>These changes provide support for <span class=
+ "main-name">tack</span> 1.08, released in <a href=
+ "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
+ July 2017</a>:</p>
+
+ <ul>
+ <li>
+ <p>add <code>--without-tack</code> configure option to refine
+ <code>--with-progs</code> configure option. Normally
+ <span class="main-name">tack</span> is built outside the
+ <span class="main-name">ncurses</span> tree, but a few
+ packagers combine it during the build. If
+ <code>term_entry.h</code> is installed, there is no advantage
+ to in-tree builds.</p>
+ </li>
+
+ <li>
+ <p>adjust configure-script to define
+ <code>HAVE_CURSES_DATA_BOOLNAMES</code> symbol needed for
+ <span class="main-name">tack</span> 1.08 when built in-tree.
+ Rather than relying upon internal "_nc_" functions,
+ <span class="main-name">tack</span> now uses the boolean,
+ number and string capability name-arrays provided by
+ <span class="main-name">ncurses</span> and SVr4 Unix curses.
+ It still uses <code>term_entry.h</code> for the definitions
+ of the extended capability arrays.</p>
+ </li>
+
+ <li>
+ <p>add dependency upon ncurses_cfg.h to <span class=
+ "part-name">tic</span>'s header-files; any program using
+ <span class="part-name">tic</span>-library will have to
+ supply this file. Legacy <span class="main-name">tack</span>
+ versions supply this file; ongoing <span class=
+ "main-name">tack</span> development has dropped the
+ dependency upon <span class="part-name">tic</span>-library
+ and new releases will not be affected.</p>
+ </li>
+ </ul>
+
+ <p>Other changes to the configure-script and generated files
+ include</p>
+
+ <ul>
+ <li>
+ <p>add configure options to disable checks for form, menu and
+ panel libraries so that ncurses-examples can be built with
+ non-SVr4 curses implementations.</p>
+ </li>
+
+ <li>
+ <p>add configure option <code>--enable-opaque-curses</code>
+ for <em>ncurses</em> library and similar options for the
+ other libraries.</p>
+ </li>
+
+ <li>
+ <p>add configure option <code>--disable-wattr-macros</code>
+ for use in cases where one wants to use the same headers for
+ ncurses5/ncurses6 development, by suppressing the
+ <em>wattr*</em> macros which differ due to the introduction
+ of extended colors</p>
+ </li>
+
+ <li>
+ <p>modify configure macro for shared-library rules to use
+ <code>-Wl,-rpath</code> rather than <code>-rpath</code> to
+ work around a bug in <span class="part-name">scons</span></p>
+ </li>
+
+ <li>
+ <p>improve ncurses-examples' configure script to define as
+ needed <code>NCURSES_WIDECHAR</code> for platforms where
+ <code>_XOPEN_SOURCE_EXTENDED</code> does not work. Also
+ modified the test program to ensure that if building with
+ <span class="main-name">ncurses</span>, that the
+ <code>cchar_t</code> type is checked, since that is normally
+ (since <a href=
+ "https://invisible-island.net/ncurses/NEWS.html#t20111030">20111030</a>)
+ ifdef'd depending on this test.</p>
+ </li>
+
+ <li>
+ <p>modify configure script to handle the case where
+ <span class="part-name">tic</span>-library is renamed, but
+ the <code>--with-debug</code> option is used by itself
+ without normal or shared libraries</p>
+ </li>
+
+ <li>
+ <p>modify editing script which generates resulting.map to
+ work with the clang configuration on recent FreeBSD, which
+ gives an error on an empty "local" section.</p>
+ </li>
+
+ <li>
+ <p>improve configure check for setting the
+ <code>WILDCARD_SYMS</code> variable; on ppc64 the variable is
+ in the <strong><em>Data</em></strong> section rather than
+ <strong><em>Text</em></strong>.</p>
+ </li>
+
+ <li>
+ <p>correct result of configure option
+ <code>--without-fallbacks</code>, which caused FALLBACK_LIST
+ to be set to "no"</p>
+ </li>
+
+ <li>
+ <p>modify <code>--with-pkg-config-libdir</code> option to
+ make it possible to install “.pc” files even if
+ <span class="part-name">pkg-config</span> is not found. Limit
+ this change, to suppress the actual install if it is not
+ overridden to a valid directory at install time.</p>
+ </li>
+
+ <li>
+ <p>disallow “no” as a possible value for
+ <code>--with-shlib-version</code> option, overlooked in
+ cleanup-changes for <a href=
+ "https://invisible-island.net/ncurses/NEWS.html#t20000708">20000708</a>.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-portability" id=
+ "h3-portability">Portability</a></h3>
+
+ <p>Many of the portability changes are implemented via the
+ configure script:</p>
+
+ <ul>
+ <li>
+ <p>improve configure script's <code>CF_CC_ENV_FLAGS</code>
+ macro to allow for compiler wrappers such as <span class=
+ "part-name">ccache</span>. This change moves only the
+ preprocessor, optimization and warning flags to
+ <code>CPPFLAGS</code> and <code>CFLAGS</code>, leaving the
+ residue in <code>CC</code>. That happens to work for
+ <span class="part-name">gcc</span>'s various
+ “model” options, but may require tuning for other
+ compilers.</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples' configure script to use
+ <span class="part-name">pkg-config</span> for the extra
+ form/menu/panel libraries, to be more consistent with the
+ handling of the curses/ncurses library.</p>
+ </li>
+
+ <li>
+ <p>add configuration checks to build with <a href=
+ "https://invisible-island.net/ncurses/ncurses-netbsd.html">NetBSD
+ curses</a>, which for example lacks <a href=
+ "https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env">
+ <code>use_env</code></a>.</p>
+ </li>
+
+ <li>
+ <p>change ncurses-examples to use <code>attr_t</code> vs
+ <code>chtype</code> to follow X/Open documentation more
+ closely since Solaris xpg4-curses uses different values for
+ <code>WA_<em>xxx</em></code> vs <code>A_<em>xxx</em></code>
+ that rely on attr_t being an unsigned short. Tru64 aka OSF1,
+ HPUX, AIX did as <span class="main-name">ncurses</span> does,
+ equating the two sets.</p>
+ </li>
+
+ <li>
+ <p>modify several test programs to reflect that <span class=
+ "main-name">ncurses</span> honors existing signal handlers in
+ initscr, while other implementations do not.</p>
+ </li>
+
+ <li>
+ <p>add configure check for <code>openpty</code> to
+ ncurses-examples' configure script, for <span class=
+ "part-name">ditto</span>.</p>
+ </li>
+
+ <li>
+ <p>improve check for working <code>poll</code> function by
+ using <code>posix_openpt</code> as a fallback in case there
+ is no valid terminal on the standard input</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples' configure script to check for
+ <span class="part-name">pthread</span> dependency of
+ <em>ncursest</em> or <em>ncursestw</em> library when building
+ the <span class="main-name">ncurses</span> examples, e.g., in
+ case weak symbols are used.</p>
+ </li>
+
+ <li>
+ <p>add checks in ncurses-examples' configure script for some
+ functions neither in 4.3BSD curses, nor based on X/Open
+ Curses:</p>
+
+ <ul>
+ <li>
+ <p>modify a loop limit in firework.c to work around
+ absense of limit checks in some libraries.</p>
+ </li>
+
+ <li>
+ <p>fill the last row of a window with
+ “<code>?</code>” in firstlast if waddch does
+ not return <code>ERR</code> on the lower-right
+ corner.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>build-fixes for the Portland Group (PGI) compilers</p>
+
+ <ul>
+ <li>
+ <p>accept whitespace in <span class=
+ "part-name">sed</span> expression for generating
+ expanded.c</p>
+ </li>
+
+ <li>
+ <p>modify configure check that g++ compiler warnings are
+ not used.</p>
+ </li>
+
+ <li>
+ <p>add configure check for -fPIC option needed for shared
+ libraries.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>modify configure script for clang as used on FreeBSD, to
+ work around clang's differences in exit codes vs gcc.</p>
+ </li>
+
+ <li>
+ <p>fixes for configure/build using clang on OSX</p>
+
+ <ul>
+ <li>
+ <p>do not redefine “inline” in
+ <code>ncurses_cfg.h</code>; this was originally to solve
+ a problem with gcc/g++, but is aggravated by clang's
+ misuse of symbols to pretend it is gcc.</p>
+ </li>
+
+ <li>
+ <p>add braces to configure script to prevent unwanted
+ addition of “<code>-lstdc++</code>” option to
+ the <code>CXXLIBS</code> symbol.</p>
+ </li>
+
+ <li>
+ <p>improve/update test-program used for checking
+ existence of stdc++ library.</p>
+ </li>
+
+ <li>
+ <p>if <code>$CXXLIBS</code> is set, the linkage test uses
+ that in addition to <code>$LIBS</code>.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>fixes for OS/2:</p>
+
+ <ul>
+ <li>
+ <p>use button instead of <code>kbuf[0]</code> in
+ EMX-specific part of <code>lib_mouse.c</code></p>
+ </li>
+
+ <li>
+ <p>support building with <span class=
+ "part-name">libtool</span> on OS/2</p>
+ </li>
+
+ <li>
+ <p>use stdc++ library with OS/2 kLIBC</p>
+ </li>
+
+ <li>
+ <p>clear configure script's <code>cf_XOPEN_SOURCE</code>
+ for OS/2, to work with its header files</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>add “newer” baudrate symbols to the <a href=
+ "https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate">
+ <code>baudrate</code></a> function in the ncurses library as
+ well as to a corresponding table in <span class=
+ "part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples <span class=
+ "part-name">savescreen</span> to work with AIX and HPUX.</p>
+ </li>
+
+ <li>
+ <p>define <code>WIN32_LEAN_AND_MEAN</code> for MinGW port,
+ making builds faster.</p>
+ </li>
+
+ <li>
+ <p>add a configure check for <em>wcwidth</em> versus the
+ <span class="main-name">ncurses</span> line-drawing
+ characters, to use in special-casing systems such as Solaris.
+ Solaris, however, requires a special case that maps Unicode
+ line-drawing characters into the acsc string for non-Unicode
+ locales. Solaris also has a misconfigured wcwidth which marks
+ all of the line drawing characters as double-width.</p>
+ </li>
+
+ <li>
+ <p>string-hacks (non-standard):</p>
+
+ <ul>
+ <li>
+ <p>fix configure script to record when
+ <code>strlcat</code> is found on OpenBSD.</p>
+ </li>
+
+ <li>
+ <p>add <code>--enable-string-hacks</code> option to
+ ncurses-examples' configure script.</p>
+ </li>
+
+ <li>
+ <p>completed string-hacks for <em>sprintf</em>, etc.,
+ including the ncurses-examples programs.</p>
+ </li>
+
+ <li>
+ <p>make <code>--enable-string-hacks</code> option work
+ with Debian by checking for the "bsd" library and its
+ associated "<bsd/string.h>" header.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>workaround for Debian's antique/unmaintained version of
+ mawk:</p>
+
+ <ul>
+ <li>
+ <p>see Debian #65617, which was fixed in <span class=
+ "main-name">mawk</span>'s upstream releases in <a href=
+ "https://invisible-island.net/mawk/CHANGES.html#t20090727">
+ 2009</a>.</p>
+ </li>
+
+ <li>
+ <p>related fixes when building link_test.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
+
+ <h2><a name="h2-features" id="h2-features">Features of
+ <span class="main-name">ncurses</span></a></h2>
+
+ <p>The <span class="main-name">ncurses</span> 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><span class="main-name">ncurses</span> 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><span class="main-name">ncurses</span> 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><span class="main-name">ncurses</span>'s terminal database
+ is fully compatible with that used by SVr4 curses.</p>
+
+ <ul>
+ <li>
+ <p><span class="main-name">ncurses</span> supports
+ user-defined capabilities which it can see, but which are
+ hidden from SVr4 curses applications using the
+ <em>same</em> terminal database.</p>
+ </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, <span class="main-name">ncurses</span>
+ can be configured to use hashed databases rather than the
+ directory of files used by SVr4 curses.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>The <span class="main-name">ncurses</span> 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 <span class="main-name">ncurses</span> 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, <span class="main-name">ncurses</span>
+ 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 <span class=
+ "main-name">ncurses</span> 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=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a>/<a href=
+ "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
+ utility provided with <span class="main-name">ncurses</span>
+ 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=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
+ tset</span></a> utility is provided.</p>
+ </li>
+
+ <li>
+ <p>The <span class="main-name">ncurses</span> 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=
+ "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
+ toe</span></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=
+ "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
+ Additional Reading</a></em> section of the <em><a href=
+ "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name">
+ ncurses</span> FAQ</a></em> for online documentation).</p>
+ </li>
+ </ul>
+
+ <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
+ <span class="main-name">ncurses</span></a></h2>
+
+ <p>The <span class="main-name">ncurses</span> distribution
+ includes a selection of test programs (including a few games).
+ These are available separately as <a href=
+ "https://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><span class="part-name">aptitude</span></dt>
+
+ <dd>
+ <p>FrontEnd to Apt, the debian package manager</p>
+
+ <p><a href=
+ "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
+ </dd>
+
+ <dt><span class="part-name">cdk</span></dt>
+
+ <dd>
+ <p>Curses Development Kit</p>
+
+ <p><a href=
+ "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br>
+ </p>
+ </dd>
+
+ <dt><span class="part-name">ded</span></dt>
+
+ <dd>
+ <p>directory-editor</p>
+
+ <p><a href=
+ "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p>
+ </dd>
+
+ <dt><span class="part-name">dialog</span></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=
+ "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p>
+ </dd>
+
+ <dt><span class="part-name">lynx</span></dt>
+
+ <dd>
+ <p>the text WWW browser</p>
+
+ <p><a href=
+ "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
+ </dd>
+
+ <dt><span class="part-name">mutt</span></dt>
+
+ <dd>
+ <p>mail utility</p>
+
+ <p><a href=
+ "http://www.mutt.org/">http://www.mutt.org/</a></p>
+ </dd>
+
+ <dt><span class="part-name">ncftp</span></dt>
+
+ <dd>
+ <p>file-transfer utility</p>