30
29
****************************************************************************
31
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
35
35
<meta name="generator" content=
36
"HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
36
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
38
<title>Announcing ncurses 5.9</title>
38
<title>Announcing ncurses 6.0</title>
39
39
<link rev="made" href="mailto:bug-ncurses@gnu.org">
40
40
<meta http-equiv="Content-Type" content=
41
41
"text/html; charset=us-ascii">
42
<style type="text/css">
43
p,li { max-width:700px; }
44
dd { max-width:630px; }
45
<h1>Announcing ncurses 5.9</h1>The ncurses (new curses)
46
library is a free software emulation of curses in System V
47
Release 4.0, and more. It uses terminfo format, supports pads and
49
<h1 class="no-header">Announcing ncurses 6.0</h1>
51
<h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
53
<p>The <em class="small-caps">ncurses</em> (new curses) library
54
is a free software emulation of curses in System V Release 4.0
55
(SVr4), and more. It uses terminfo format, supports pads and
48
56
color and multiple highlights and forms characters and
49
function-key mapping, and has all the other SYSV-curses
50
enhancements over BSD curses.
57
function-key mapping, and has all the other SVr4-curses
58
enhancements over BSD curses. SVr4 curses is better known today
52
61
<p>In mid-June 1995, the maintainer of 4.4BSD curses declared
53
62
that he considered 4.4BSD curses obsolete, and encouraged the
54
keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to
55
switch over to ncurses.</p>
57
<p>The ncurses code was developed under GNU/Linux. It has been in
58
use for some time with OpenBSD as the system curses library, and
59
on FreeBSD and NetBSD as an external package. It should port
60
easily to any ANSI/POSIX-conforming UNIX. It has even been ported
63
keepers of <em class="small-caps">unix</em> releases such as
64
BSD/OS, FreeBSD and NetBSD to switch over to <em class=
65
"small-caps">ncurses</em>.</p>
67
<p>Since 1995, <em class="small-caps">ncurses</em> has been
68
ported to many systems:</p>
71
<li>It is used in almost every system based on the Linux kernel
72
(aside from some embedded applications).</li>
74
<li>It is used as the system curses library on OpenBSD, FreeBSD
77
<li>It is used in environments such as Cygwin and MinGW. The
78
first of these was EMX on OS/2 Warp.</li>
80
<li>It is used (though usually not as the <em>system</em>
81
curses) on all of the vendor <em class="small-caps">unix</em>
82
systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, Tru64.</li>
84
<li>It should work readily on any ANSI/POSIX-conforming
85
<em class="small-caps">unix</em>.</li>
63
88
<p>The distribution includes the library and support utilities,
64
including a terminfo compiler tic(1), a decompiler infocmp(1),
65
clear(1), tput(1), tset(1), and a termcap conversion tool
66
captoinfo(1). Full manual pages are provided for the library and
69
<p>The ncurses distribution is available via anonymous FTP at the
70
GNU distribution site <a href=
71
"ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .<br>
73
It is also available at <a href=
74
"ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
76
<h1>Release Notes</h1>This release is designed to be upward
77
compatible from ncurses 5.0 through 5.8; very few applications
78
will require recompilation, depending on the platform. These are
79
the highlights from the change-log since ncurses 5.8 release.
81
This is a bug-fix release, correcting a small number of urgent problems
82
in the ncurses library from the 5.8 release.
84
It also improves the Ada95 binding:
86
<li>fixes a longstanding portability problem with its use of the
87
<a href="http://invisible-island.net/ncurses/man/form_fieldtype.3x">set_field_type</a>
88
function. Because that function uses variable-length argument lists,
89
its interface with gnat does not work with certain platforms.
90
<li>improves configurability and portability, particularly when built
91
separately from the main ncurses tree. The 5.8 release introduced
92
scripts which can be used to construct separate tarballs for the
93
Ada95 and ncurses examples.
94
<p>Those were a proof of concept. For the 5.9 release, those
95
scripts are augmented with rpm- and dpkg-scripts used in test builds
96
against a variety of gnat- and system ncurses versions as old as
97
gnat 3.15 and ncurses 5.4 (see snapshots and systems tested
98
<a href="http://invisible-island.net/ncurses/ncurses-Ada95.html">here</a>.
99
<li>additional improvements were made for portability of the
100
ncurses examples, adding rpm- and dpkg-scripts for test-builds.
102
<a href="http://invisible-island.net/ncurses/ncurses-examples.html">this page</a>
103
for snapshots and other information.
106
<h1>Features of Ncurses</h1>The ncurses package is fully
107
compatible with SVr4 (System V Release 4) curses:
110
<li>All 257 of the SVr4 calls have been implemented (and are
113
<li>Full support for SVr4 curses features including keyboard
114
mapping, color, forms-drawing with ACS characters, and
115
automatic recognition of keypad and function keys.</li>
117
<li>An emulation of the SVr4 panels library, supporting a stack
118
of windows with backing store, is included.</li>
120
<li>An emulation of the SVr4 menus library, supporting a
121
uniform but flexible interface for menu programming, is
124
<li>An emulation of the SVr4 form library, supporting data
125
collection through on-screen forms, is included.</li>
127
<li>Binary terminfo entries generated by the ncurses tic(1)
128
implementation are bit-for-bit-compatible with the entry format
129
SVr4 curses uses.</li>
131
<li>The utilities have options to allow you to filter terminfo
132
entries for use with less capable
133
<strong>curses</strong>/<strong>terminfo</strong> versions such
134
as the HP/UX and AIX ports.</li>
135
</ul>The ncurses package also has many useful extensions over
139
<li>The API is 8-bit clean and base-level conformant with the
140
X/OPEN curses specification, XSI curses (that is, it implements
141
all BASE level features, and most EXTENDED features). It
142
includes many function calls not supported under SVr4 curses
143
(but portability of all calls is documented so you can use the
144
SVr4 subset only).</li>
146
<li>Unlike SVr3 curses, ncurses can write to the
147
rightmost-bottommost corner of the screen if your terminal has
148
an insert-character capability.</li>
150
<li>Ada95 and C++ bindings.</li>
152
<li>Support for mouse event reporting with X Window xterm and
153
FreeBSD and OS/2 console windows.</li>
155
<li>Extended mouse support via Alessandro Rubini's gpm
158
<li>The function <code>wresize</code> allows you to resize
159
windows, preserving their data.</li>
161
<li>The function <code>use_default_colors</code> allows you to
162
use the terminal's default colors for the default color pair,
163
achieving the effect of transparent colors.</li>
165
<li>The functions <code>keyok</code> and
166
<code>define_key</code> allow you to better control the use of
167
function keys, e.g., disabling the ncurses KEY_MOUSE, or by
168
defining more than one control sequence to map to a given key
171
<li>Support for 256-color terminals, such as modern xterm, when
172
configured using the <code>--enable-ext-colors</code>
175
<li>Support for 16-color terminals, such as <em>aixterm</em>
176
and <em>modern xterm</em>.</li>
178
<li>Better cursor-movement optimization. The package now
179
features a cursor-local-movement computation more efficient
180
than either BSD's or System V's.</li>
182
<li>Super hardware scrolling support. The screen-update code
183
incorporates a novel, simple, and cheap algorithm that enables
184
it to make optimal use of hardware scrolling, line-insertion,
185
and line-deletion for screen-line movements. This algorithm is
186
more powerful than the 4.4BSD curses <code>quickch</code>
189
<li>Real support for terminals with the magic-cookie glitch.
190
The screen-update code will refrain from drawing a highlight if
191
the magic- cookie unattributed spaces required just before the
192
beginning and after the end would step on a non-space
193
character. It will automatically shift highlight boundaries
194
when doing so would make it possible to draw the highlight
195
without changing the visual appearance of the screen.</li>
197
<li>It is possible to generate the library with a list of
198
pre-loaded fallback entries linked to it so that it can serve
199
those terminal types even when no terminfo tree or termcap file
200
is accessible (this may be useful for support of
201
screen-oriented programs that must run in single-user
204
<li>The tic(1)/captoinfo utility provided with ncurses has the
205
ability to translate many termcaps from the XENIX, IBM and
206
AT&T extension sets.</li>
208
<li>A BSD-like tset(1) utility is provided.</li>
210
<li>The ncurses library and utilities will automatically read
211
terminfo entries from $HOME/.terminfo if it exists, and compile
212
to that directory if it exists and the user has no write access
213
to the system directory. This feature makes it easier for users
214
to have personal terminfo entries without giving up access to
215
the system terminfo directory.</li>
217
<li>You may specify a path of directories to search for
218
compiled descriptions with the environment variable
219
TERMINFO_DIRS (this generalizes the feature provided by
220
TERMINFO under stock System V.)</li>
222
<li>In terminfo source files, use capabilities may refer not
223
just to other entries in the same source file (as in System V)
224
but also to compiled entries in either the system terminfo
225
directory or the user's $HOME/.terminfo directory.</li>
227
<li>A script (<strong>capconvert</strong>) is provided to help
228
BSD users transition from termcap to terminfo. It gathers the
229
information in a TERMCAP environment variable and/or a
230
~/.termcap local entries file and converts it to an equivalent
231
local terminfo tree under $HOME/.terminfo.</li>
233
<li>Automatic fallback to the /etc/termcap file can be compiled
234
in when it is not possible to build a terminfo tree. This
235
feature is neither fast nor cheap, you don't want to use it
236
unless you have to, but it's there.</li>
238
<li>The table-of-entries utility <strong>toe</strong> makes it
239
easy for users to see exactly what terminal types are available
242
<li>The library meets the XSI requirement that every macro
243
entry point have a corresponding function which may be linked
244
(and will be prototype-checked) if the macro definition is
245
disabled with <code>#undef</code>.</li>
247
<li>An HTML "Introduction to Programming with NCURSES" document
248
provides a narrative introduction to the curses programming
252
<h1>State of the Package</h1>Numerous bugs present in earlier
253
versions have been fixed; the library is far more reliable than
254
it used to be. Bounds checking in many `dangerous' entry points
255
has been improved. The code is now type-safe according to gcc
256
-Wall. The library has been checked for malloc leaks and arena
257
corruption by the Purify memory-allocation tester.
259
<p>The ncurses code has been tested with a wide variety of
260
applications including (versions starting with those noted):</p>
265
<dd>Curses Development Kit<br>
267
"http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
270
"http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>
274
<dd>directory-editor<br>
276
"http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>
280
<dd>the underlying application used in Slackware's setup, and
281
the basis for similar applications on GNU/Linux.<br>
283
"http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>
287
<dd>the character-screen WWW browser<br>
289
"http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>
291
<dt>Midnight Commander</dt>
295
"http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>
300
<a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>
304
<dd>file-transfer utility<br>
305
<a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>
309
<dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
312
"https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
317
<dd>Lynx-like info browser. <a href=
318
"https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>
322
<dd>newsreader, supporting color, MIME <a href=
323
"http://www.tin.org/">http://www.tin.org/</a></dd>
324
</dl>as well as some that use ncurses for the terminfo support
330
<dd>terminal emulator<br>
332
"http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>
336
<dd>vi-like-emacs<br>
338
"http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
341
<p>The ncurses distribution includes a selection of test programs
342
(including a few games).</p>
344
<h2>Who's Who and What's What</h2>Zeyd Ben-Halim started it from
345
a previous package pcurses, written by Pavel Curtis. Eric S.
93
"http://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>,
94
a termcap conversion tool</li>
97
"http://invisible-island.net/ncurses/man/clear.1.html">clear</a>,
98
utility for clearing the screen</li>
101
"http://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp</a>,
102
the terminfo decompiler</li>
105
"http://invisible-island.net/ncurses/man/tabs.1.html">tabs</a>,
106
set tabs on a terminal</li>
109
"http://invisible-island.net/ncurses/man/tic.1m.html">tic</a>,
110
the terminfo compiler</li>
113
"http://invisible-island.net/ncurses/man/toe.1m.html">toe</a>,
114
list (table of) terminfo entries</li>
117
"http://invisible-island.net/ncurses/man/tput.1.html">tput</a>,
118
utility for retrieving terminal capabilities in shell
122
"http://invisible-island.net/ncurses/man/tset.1.html">tset</a>,
123
to initialize the terminal</li>
126
<p>Full manual pages are provided for the library and tools.</p>
128
<p>The <em class="small-caps">ncurses</em> distribution is
129
available via anonymous FTP at the GNU distribution site</p>
133
"ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .</p>
134
</blockquote>It is also available at
138
"ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
141
<h2><a name="h2-release-notes" id="h2-release-notes">Release
144
<p>These notes are for <em class="small-caps">ncurses</em>
145
6.0, released <strong>August 8, 2015</strong>.</p>
147
<p>This release is designed to be source-compatible with
148
<em class="small-caps">ncurses</em> 5.0 through 5.9; providing a
149
new application binary interface (ABI). Although the source can
150
still be configured to support the <em class=
151
"small-caps">ncurses</em> 5 ABI, the intent of the release is to
152
provide extensions which are generally useful, but
153
binary-incompatible with <em class="small-caps">ncurses</em>
158
<p>Extend the <code>cchar_t</code> structure to allow more
159
than 16 colors to be encoded.</p>
163
<p>Modify the encoding of mouse state to make room for a 5th
164
mouse button. That allows one to use <em class=
165
"small-caps">ncurses</em> with a wheel mouse with xterm or
166
similar X terminal emulators.</p>
170
<p>There are, of course, numerous other improvements,
175
<p>fixes made based on the Clang and Coverity static
180
<p>memory leak fixes using Valgrind</p>
184
<p>The release notes mention some bug-fixes, but are focused on
185
new features and improvements to existing features log since
186
<em class="small-caps">ncurses</em> 5.9 release.</p>
188
<p>While the intent of the release is to provide a new stable
189
ABI, there are other development activities which are summarized
194
<p>The original release plan, e.g., for "5.10" was to improve
195
the MinGW port. Ultimately that was completed (wide-character
196
support, mouse, etc), but was deferred to focus on termcap
197
support and performance issues. Also, pinpointing the
198
problems with <code>Console2</code> took a while.</p>
202
<p>A review of termcap compatibility in 2011 led to several
203
minor fixes in the library and improvements to utilities. To
204
do this properly, a review of the various extent termcap
205
implementations was needed.</p>
208
"http://invisible-island.net/ncurses/tctest.html">termcap
209
library checker (tctest)</a> (not part of <em class=
210
"small-caps">ncurses</em>) was one result. A followup review
211
of performance using <a href=
212
"http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>
213
in 2014 led to additional improvements.</p>
217
<p>Output buffering provided a further, but worthwhile
218
distraction. A bug report in 2012 regarding the use of signal
219
handlers in <em class="small-caps">ncurses</em>) pointed out
221
"http://lists.gnu.org/archive/html/bug-ncurses/2012-07/msg00029.html">
222
a problem</a> with the use of unsafe functions for handling
223
<code>SIGTSTP</code>. Other signals could be addressed with
224
workarounds; repairing <code>SIGTSTP</code> required a
225
different approach. The solution required changing internal
226
behavior of the library: how it handles output buffering.</p>
228
<p>Now <em class="small-caps">ncurses</em> buffers its own
229
output, independently of the standard output. A few
230
applications relied upon the library's direct reuse of the
231
standard output buffering; however that is
232
<em>unspecified</em> behavior and has never been a
233
recommended practice. Identifying these applications as well
234
as refining the change to permit low-level applications to
235
work consistently took time.</p>
239
<p>Since the introduction of the experimental support for 256
240
colors early in <a href=
241
"http://invisible-island.net/ncurses/NEWS.html#t20050101">2005</a>
242
(released in <a href=
243
"http://invisible-island.net/ncurses/announce-5.5.html">ncurses
244
5.5</a>), there has been increased user interest. Almost all
245
packagers continue providing the ncurses ABI 5 which cannot
246
support 256 colors.</p>
250
<p>Symbol versioning, or the lack of it in ncurses, is the
251
main reason why packagers would be reluctant to add a new
254
<p>This release provides the new ABI along with
255
script-generated lists of versioned symbols which can be used
256
for both ABI 5 and 6 (with distinct names to keep the two
257
separate). This took time to development, as reported in
259
"http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
260
versioning in <em class="small-caps">ncurses</em></a>.</p>
264
<h3><a name="h3-library" id="h3-library">Library
265
improvements</a></h3>
267
<h3><a name="h3-lib-setbuf" id="h3-lib-setbuf">Output
270
<p>X/Open curses provides more than one initialization
275
"http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr">
276
initscr</a> (the simplest) accepts no parameters.</li>
279
"http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm">
280
newterm</a> accepts parameters for the stream input and
284
"http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization">
285
setupterm</a> (the low-level function) accepts a parameter for
286
the <em>file descriptor</em> of the output.</li>
289
<p>They are documented in X/Open <em>as if</em>
290
<code>initscr</code> calls <code>newterm</code> using
291
<code>stdout</code> for output stream, and in turn
292
<code>newterm</code> calls <code>setupterm</code> using
293
<code>fileno(stdout)</code> for the file descriptor. As long as
294
an implementation acts <em>as if</em> it does this, it conforms.
295
In practice, implementations do what is implied. This creates a
296
problem: the low-level <code>setupterm</code> function's file
297
descriptor is unbuffered, while <code>newterm</code> implies
298
buffered output. X/Open Curses says that all output is done
299
through the file descriptor, and does not say how the output
300
stream is actually used.</p>
302
<p>Initially, <em class="small-caps">ncurses</em> used the file
303
descriptor (obtained from the output stream passed to
304
<code>newterm</code>) for changing the terminal modes, and relied
305
upon the output parameter of <code>newterm</code> for buffered
306
output. Later (to avoid using unsafe buffered I/O in signal
307
handlers), <em class="small-caps">ncurses</em> was modified to
308
use the file descriptor (unbuffered output) when cleaning up on
309
receipt of a signal. Otherwise (when not handling a signal), it
310
continued to use the buffered output.</p>
312
<p>That approach worked reasonably well and as a side effect,
313
using the same buffered output as an application might use for
314
<code>printf</code> meant that no flushing was needed when
315
switching between normal- and screen-modes.</p>
317
<p>There were a couple of problems:</p>
321
<p>to get good performance, curses (not only <em class=
322
"small-caps">ncurses</em>, but SVr4 curses in general) set an
323
output buffer using <code>setbuf</code> or similar function.
324
There is no standard (or portable) way to turn that output
325
buffer off, and revert to line-buffering. The <code><a href=
326
"http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_NO_SETBUF">
327
NCURSES_NO_SETBUF</a></code> environment variable did make it
332
<p>to handle <code>SIGTSTP</code> (the “stop”
333
signal), <em class="small-caps">ncurses</em> relied upon
334
unsafe functions. That is, due to the complexity of the
335
feature, it relied upon reusing existing functions which
336
should not have been called via the signal handler.</p>
340
<p>Conveniently, solving the second problem (by making <em class=
341
"small-caps">ncurses</em> do its <em>own</em> output buffering)
342
also fixed the first one. But there were special cases to
344
"http://invisible-island.net/ncurses/man/curs_terminfo.3x.html"><em>
345
low-level</em></a> functions such as mvcur, putp, vidattr
346
explicitly use the standard output. Those functions were reused
347
internally, and required modification to distinguish whether they
348
were used by the high-level or low-level interfaces.</p>
350
<p>Finally, there may still be a few programs which should be
351
modified to improve their portability, e.g., adding an</p>
354
<pre class="code-block">
359
<p>when switching from “<a href=
360
"http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">shell</a>”
361
mode to “<a href=
362
"http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">program</a>”
363
(curses) mode. Those are fairly rare because most programmers
364
have learned not to mix <code>printf</code> and <code><a href=
365
"http://invisible-island.net/ncurses/man/curs_printw.3x.html">printw</a></code>.</p>
367
<h3><a name="h3-lib-versioning" id="h3-lib-versioning">Symbol
370
<p>This release introduces symbol-versioning to <em class=
371
"small-caps">ncurses</em> because without it, the change of ABI
372
would be less successful. A lengthy discussion will be presented
374
"http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
375
versioning in <em class="small-caps">ncurses</em></a>. These
376
notes summarize what has changed, and what can be done with the
379
<p>Symbol-versioning allows the developers of a library to mark
380
each public symbol (both data and functions) with an identifier
381
denoting the library name and the version for which it was built.
382
By doing this, users of the library have a way to help ensure
383
that applications do not accidentally load an incompatible
384
library. In addition, private symbols can be hidden entirely.</p>
386
<p>This release provides sample files for the four principal
387
configurations of <em class="small-caps">ncurses</em> libraries:
388
<code>ncurses</code>, <code>ncursesw</code>,
389
<code>ncursest</code> and <code>ncursestw</code>. Each sample is
390
given in two forms:</p>
394
<dt>“<code>.map</code>”</dt>
396
<dd>These list all public symbols, together with version
399
<dt>“<code>.sym</code>”</dt>
401
<dd>These list all public symbols, without version
406
<p>The sample files are <em>generated</em> by scripts which take
407
into account a few special cases such as <a href=
408
"http://invisible-island.net/ncurses/tack.html">tack</a> to omit
409
many of the <em class="small-caps">ncurses</em> private symbols
410
(beginning with “<code>_nc_</code>”). Here are
411
counts of globals versus locals:</p>
414
<table border="1" summary="Total global and local symbols">
430
<td align="right">976</td>
432
<td align="right">796</td>
434
<td align="right">180</td>
436
<td align="right">332</td>
442
<td align="right">1089</td>
444
<td align="right">905</td>
446
<td align="right">184</td>
448
<td align="right">343</td>
454
<td align="right">979</td>
456
<td align="right">804</td>
458
<td align="right">175</td>
460
<td align="right">358</td>
466
<td align="right">1098</td>
468
<td align="right">914</td>
470
<td align="right">184</td>
472
<td align="right">372</td>
477
<p>Although only four sample configurations are presented, each
478
is formed by merging symbols from several combinations of
479
configure-script options, taking into account advice from
480
downstream packagers. Because they are formed by merging, the
481
sample files may list a symbol which is not in a given package.
482
That is expected. The samples have been tested and are working
483
with systems (such as Fedora, FreeBSD and Debian) which fully
484
support this feature. There are other systems which do
485
<em>not</em> support the feature, and a few (such as Solaris)
486
which provide incomplete support.</p>
488
<p>The version-naming convention used allows these sample files
489
to build distinct libraries for ABI 5 and 6. Version names
494
<p>configuration name, e.g.,
495
“<code>NCURSESW</code>” for the wide-character
500
<p>ABI version (if not 5)</p>
504
<p>library name for two special cases which have the same
505
interface across configurations:
506
“<code>TINFO</code>” and
507
“<code>TIC</code>”</p>
511
<p>release version</p>
515
<p>patch date (for the release version)</p>
519
<p>For example, running <code>nm -D</code> on the libraries in
520
the ncurses6 test package shows these symbol-versions:</p>
523
<pre class="code-block">
524
0000000000000000 A NCURSES6_TIC_5.0.19991023
525
0000000000000000 A NCURSES6_TIC_5.1.20000708
526
0000000000000000 A NCURSES6_TIC_5.5.20051010
527
0000000000000000 A NCURSES6_TIC_5.7.20081102
528
0000000000000000 A NCURSES6_TIC_5.9.20150530
529
0000000000000000 A NCURSES6_TINFO_5.0.19991023
530
0000000000000000 A NCURSES6_TINFO_5.1.20000708
531
0000000000000000 A NCURSES6_TINFO_5.2.20001021
532
0000000000000000 A NCURSES6_TINFO_5.3.20021019
533
0000000000000000 A NCURSES6_TINFO_5.4.20040208
534
0000000000000000 A NCURSES6_TINFO_5.5.20051010
535
0000000000000000 A NCURSES6_TINFO_5.6.20061217
536
0000000000000000 A NCURSES6_TINFO_5.7.20081102
537
0000000000000000 A NCURSES6_TINFO_5.8.20110226
538
0000000000000000 A NCURSES6_TINFO_5.9.20150530
539
0000000000000000 A NCURSESW6_5.1.20000708
540
0000000000000000 A NCURSESW6_5.3.20021019
541
0000000000000000 A NCURSESW6_5.4.20040208
542
0000000000000000 A NCURSESW6_5.5.20051010
543
0000000000000000 A NCURSESW6_5.6.20061217
544
0000000000000000 A NCURSESW6_5.7.20081102
545
0000000000000000 A NCURSESW6_5.8.20110226
546
0000000000000000 A NCURSESW6_5.9.20150530
550
<p>As a special case, this release (which makes the final change
551
for ABI 5) is marked with release version 5.9 and patch date
554
<h3><a name="h3-lib-other" id=
555
"h3-lib-other">Miscellaneous</a></h3>
557
<p>The new release has several improvements for performance and
558
building. For instance:</p>
562
<p>several files in ncurses- and progs-directories were
563
modified to allow <code>const</code> data used in internal
564
tables to be put by the linker into the readonly text
569
<p>various improvements were made to building the Ada95
570
binding, both in simplifying the generated files as well as
571
improving the way it uses <code>gnatmake</code></p>
575
<p>There are also new features in the libraries:</p>
579
"http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl">
580
use_tioctl</a> function</li>
584
"http://invisible-island.net/ncurses/man/curs_opaque.3x.html">
585
wgetdelay</a> to retrieve _delay member of WINDOW if it
586
happens to be opaque, e.g., in the pthread configuration.</p>
591
"http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
592
A_ITALIC</a> extension.</p>
596
<p>added form library extension <a href=
597
"http://invisible-island.net/ncurses/man/form_field_opts.3x.html">
598
O_DYNAMIC_JUSTIFY</a> option which can be used to override
599
the different treatment of justification for static versus
605
"http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin">
606
putwin</a> and <a href=
607
"http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin">
608
getwin</a>, making an extended version which is capable of
609
reading screen-dumps between the wide/normal <em class=
610
"small-caps">ncurses</em> configurations. These are text
611
files, except for a <em>magic</em> code at the beginning:</p>
614
<pre class="code-block">
615
0 string \210\210 Screen-dump (ncurses)
621
<p>several changes to mouse support include:</p>
624
<li>added decoder for xterm SGR 1006 mouse mode.</li>
626
<li>added experimental support for
627
“<code>%u</code>” format to terminfo.</li>
629
<li>improved behavior of wheel-mice for xterm protocol:
630
noting that there are only button-presses for buttons
631
“4” and “5”, so there is no need to
632
wait to combine events into double-clicks .</li>
637
<p>There are a few new configure options dealing with library
642
<p>add “<code>--enable-ext-putwin</code>”
643
configure option to turn on the extended putwin/getwin. By
644
default, this is enabled for ABI 6 and disabled with ABI
649
<p>add “<code>--enable-string-hacks</code>”
650
option to control whether strlcat and strlcpy may be used.
651
Because <em class="small-caps">ncurses</em> already does the
652
requisite buffer-limit checks, this feature is mainly of
653
interest to quiet compiler-warnings on a few systems.</p>
657
<p>add configure option
658
“<code>--with-tparm-arg</code>” to allow <a href=
659
"http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output">
660
tparm</a>'s parameters to be something more likely to be the
661
same size as a pointer, e.g., <code>intptr_t</code> (again,
662
the default is set for ABI 6).</p>
666
<h3><a name="h3-programs" id="h3-programs">Program
667
improvements</a></h3>
669
<h4><a name="h4-utilities" id="h4-utilities">Utilities</a></h4>
671
<p>Most of the termcap-related changes based on development of
672
<a href="http://invisible-island.net/ncurses/tctest.html">tctest
673
(termcap library checker)</a> are implemented in the tic and
674
infocmp programs rather than affecting the library. As noted in
676
"http://invisible-island.net/ncurses/tctest.html#my-better-translation">
677
discussion</a> of <code>tctest</code>, <em class=
678
"small-caps">ncurses</em>'s ability to translate between terminfo
679
and termcap formats has been improved at different times, but
680
subject to feedback from "real" termcap users. There are very few
681
of those. Nowadays, virtually all <em>termcap</em> users are
682
using <em class="small-caps">ncurses</em> (or NetBSD, with its
683
own terminfo library) and their programs are actually using
684
terminfo rather than termcap data.</p>
686
<p>Still, there are a few. A comment about the translation of the
687
ASCII <code>NUL</code> character prompted a review:</p>
691
<p>Both terminfo and termcap store string capabilities as
692
<code>NUL</code>-terminated strings.</p>
696
<p>In terminfo, a <code>\0</code> in a terminal description
697
is stored as <code>\200</code>.</p>
701
<p>There are no (known) terminals which would behave
702
differently when sent <code>\0</code> or
703
<code>\200</code>.</p>
707
<p>When translating to terminfo format (or displaying a
708
printable version of an entry using infocmp), <em class=
709
"small-caps">ncurses</em> shows <code>\200</code> as
714
<p>It has done this since 1998 (quoting from the NEWS
718
<pre class="code-block">
720
"http://invisible-island.net/ncurses/NEWS.html#t980103">980103</a>
722
+ modify _nc_tic_expand() to generate \0 rather than \200.
724
+ correct translation of terminfo "^@", to \200, like \0.
730
<p>However, the <code>_nc_tic_expand</code> function (which
731
optionally produces terminfo or termcap format) did not
732
address this special case for termcap. Even the later 4.4BSD
734
"https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&view=markup#l784">
735
cgetstr</a> interprets a <code>\0</code> literally, ending
736
<em>that</em> string (rather than using the terminfo
741
<p>As a result of the review, several improvements were made to
742
<em class="small-caps">ncurses</em> translation to/from termcap
743
format — and improving the checks made in tic for
744
consistency of entries. Most of these are not of general
745
interest, except for two new command-line options for tic and
750
<p>the “<code>-0</code>” option generates
751
termcap/terminfo source on a single line.</p>
755
<p>the “<code>-K</code>” option provides stricter
756
BSD-compatibility for termcap output.</p>
760
<p>Other user-visible improvements and new features include:</p>
764
<p>added “<code>-D</code>” option to tic and
765
infocmp, to show the database locations that it could
770
<p>added “<code>-s</code>” option to toe, to sort
775
<p>extended “<code>-c</code>” and
776
“<code>-n</code>” options of infocmp to allow
777
comparing more than two entries.</p>
781
<p>modified toe's report when “<code>-a</code>”
782
and “<code>-s</code>” options are combined, to
783
add a column showing which entries belong to a given
788
<p>modified the clear program to take into account the
789
“<code>E3</code>” extended capability to clear
790
the terminal's scrollback buffer.</p>
794
<h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
796
<p>Along with the library and utilities, many improvements were
798
"http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.
799
Some were made to allow building (and comparison-testing) against
800
NetBSD curses and PDCurses. Both lack some of the X/Open Curses
801
features, necessitating customization. But this activity was
802
useful because it showed some remaining performance issues (which
803
have been resolved in this release).</p>
805
<p>These changes were made to verify compatibility or compare
806
performance of <em class="small-caps">ncurses</em>:</p>
810
<p>made workarounds for compiling test-programs with NetBSD
811
curses, though it lacks some common functions such as
812
<a href="http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env">
817
<p>added dots_termcap test-program</p>
821
<p>added dots_curses test-program, for comparison with the
822
low-level examples.</p>
826
<p>added test_setupterm test-proram to demonstrate
827
normal/error returns from the setupterm and restartterm
832
<p>added “<code>-d</code>”,
833
“<code>-e</code>” and
834
“<code>-q</code>” options to the demo_terminfo
835
and demo_termcap test-programs.</p>
839
<p>added “<code>-y</code>” option to demo_termcap
840
and test/demo_terminfo test-programs to demonstrate behavior
841
with/without extended capabilities.</p>
845
<p>modified demo_termcap and demo_terminfo test-programs to
846
make their options more directly comparable, and add
847
“<code>-i</code>” option to specify a terminal
848
description filename to parse for names to lookup.</p>
852
<p>rewrote the tests for <a href=
853
"http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-derwin">
854
mvderwin</a> and test for recursive <a href=
855
"http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-mvwin">
856
mvwin</a> in the movewindow test-program.</p>
860
<p>These changes were made to help with the MinGW port:</p>
864
<p>added test-screens to the ncurses test-program to show
865
256-characters at a time, to help with MinGW port.</p>
869
<p>modified the view test-program to load UTF-8 when built
870
with MinGW by using regular win32 API because the MinGW
871
functions mblen and mbtowc do not work.</p>
875
<p>added “<code>-s</code>” option to the view
876
test-program to allow it to start in single-step mode,
877
reducing size of trace files when it is used for debugging
882
<p>These changes were made to verify new extensions in <em class=
883
"small-caps">ncurses</em>:</p>
888
"http://invisible-island.net/ncurses/man/form_driver.3x.html#h3-form_driver_w">
889
form_driver_w</a> entrypoint to wide-character forms library,
890
as well as form_driver_w test-program.</p>
894
<p>modified ncurses test-program's b/B tests to display lines
895
only for the attributes which a given terminal supports, to
896
make room for an italics test.</p>
900
<p>modified ncurses test-program, adding
901
“<code>-E</code>” and
902
“<code>-T</code>” options to demonstrate use_env
903
versus use_tioctl.</p>
907
<p>modified ncurses test-program's c/C tests to cycle through
908
subsets of the total number of colors, to better illustrate
909
8/16/88/256-colors by providing directly comparable
914
<p>modified the ncurses test-program to also show position
915
reports in 'a' test.</p>
919
<p>These changes were made to make the examples more useful:</p>
923
<p>added scripts for building dpkg and rpm test-packages</p>
927
<p>modified the hanoi test-program to show the minimum number
928
of moves possible for the given number of tiles.</p>
932
<p>modified the knight test-program to show the number of
933
choices possible for each position in automove option, e.g.,
934
to allow user to follow Warnsdorff's rule to solve the
939
<h3><a name="h3-database" id="h3-database">Terminal
942
<p>This release provides improvements to tic's
943
“<code>-c</code>” checking option, which was used for
948
<p>make <code>sgr</code> in several entries agree with other
953
<p>correct padding in some entries where earlier versions had
954
miscounted the number of octal digits.</p>
958
<p>There are several new terminal descriptions:</p>
962
"http://invisible-island.net/ncurses/terminfo.src.html#toc-_M_L_T_E_R_M">
963
mlterm</a> is now aliased to mlterm3</li>
966
"http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm">
967
nsterm</a> is now derived from nsterm-256color</li>
970
"http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco">
974
"http://invisible-island.net/ncurses/terminfo.src.html#tic-teken">
975
teken</a> is FreeBSD's "xterm" console.</li>
978
"http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R">
982
"http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y">
986
"http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux">
987
tmux</a> is derived from screen.</li>
989
<li>several screen.XXX entries support the respective
990
variations for 256 colors.</li>
993
"http://invisible-island.net/ncurses/terminfo.src.html#toc-_S_I_M_P_L_E_T_E_R_M">
994
simpleterm</a> is now 0.5</li>
997
"http://invisible-island.net/ncurses/terminfo.src.html#tic-vte">
998
vte</a> is aliased to vte-2012</li>
1001
"http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi">
1005
<p>A few entries use extensions (user-defined terminal
1010
<p><code>E3</code>, used in linux, putty and xterm-basic is
1011
tested in the <a href=
1012
"http://aerie.jexium-island.net/ncurses/man/clear.1.html">clear</a>
1013
program to erase a terminal's scrollback.</p>
1017
<p><code>TS</code> is used in the <a href=
1018
"http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_sl">
1019
xterm+sl</a> building block to help deprecate the misuse of
1020
<code>tsl</code> for xterm's title-string.</p>
1024
<p><code>XT</code> is used in some terminfo entries to
1025
improve usefulness for other applications than screen, which
1026
would like to pretend that xterm's title is a
1031
<p><code>xm</code> is used in examples <a href=
1032
"http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1005">
1033
xterm-1005</a> and <a href=
1034
"http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1006">
1035
xterm-1006</a> to illustrate a way to make mouse handling
1040
<p>A few terminals support italics and/or dim capabilities. In
1041
particular, screen does not. Documented that, and accommodated
1042
the terminals where this feature works with the
1043
<code>A_ITALIC</code> extension.</p>
1046
<li>konsole, mlterm3 (italics)</li>
1048
<li>nsterm (dim)</li>
1050
<li>screen (dim)</li>
1052
<li>vte (dim, italics)</li>
1054
<li>xterm (dim, italics)</li>
1057
<h3><a name="h3-documentation" id=
1058
"h3-documentation">Documentation</a></h3>
1060
<p>As usual, this release</p>
1064
<p>improves documentation by describing new features,</p>
1068
<p>attempts to improve the description of features which
1069
users have found confusing</p>
1073
<p>fills in overlooked descriptions of features which were
1074
described in the <a href=
1075
"http://invisible-island.net/ncurses/NEWS.html">NEWS</a> file
1076
but treated sketchily in manual pages.</p>
1080
<p>In addition, the mechanism for producing HTML versions of the
1081
documentation has been improved:</p>
1085
<p>use an improved version of <a href=
1086
"http://invisible-island.net/scripts/man2html.html">man2html</a>
1087
to generate html manpages.</p>
1091
<p>regenerated <a href=
1092
"http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html">
1093
NCURSES-Programming-HOWTO.html</a> to fix some of the broken
1094
html emitted by docbook.</p>
1098
<h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
1103
<p>Ada95 binding:</p>
1107
<p>modify makefile rules to ensure that the PIC option is
1108
not used when building a static library</p>
1112
<p>make Ada95 build-fix for big-endian architectures such
1113
as sparc. This undoes one of the fixes from <a href=
1114
"http://invisible-island.net/ncurses/NEWS.html#t20110319">
1115
20110319</a>, which added an
1116
“<code>Unused</code>” member to
1117
representation clauses, replacing that with pragmas to
1118
suppress warnings about unused bits.</p>
1124
<p>Color and attributes:</p>
1128
<p>parenthesize parameter of <code>COLOR_PAIR</code> and
1129
<code>PAIR_NUMBER</code> in curses.h in case it happens
1130
to be a comma-expression.</p>
1135
"http://invisible-island.net/ncurses/NEWS.html#t20021221">
1136
20021221</a> workaround for broken acs, handling a case
1137
where that ACS_<em>xxx</em> character is not in the
1138
<code>acsc</code> string but there is a known
1139
wide-character which can be used.</p>
1144
"http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions">
1145
init_pair</a> to accept -1's for color value after
1147
"http://invisible-island.net/ncurses/man/default_colors.3x.html">
1148
assume_default_colors</a> has been called.</p>
1152
<p>add a check in <a href=
1153
"http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions">
1154
start_color</a> to limit color-pairs to 256 when extended
1155
colors are not supported.</p>
1161
<p>Resizing the screen:</p>
1165
<p>propagate error-returns from wresize, i.e., the
1166
internal increase_size and decrease_size functions
1168
"http://invisible-island.net/ncurses/man/resizeterm.3x.html">
1169
resize_term</a>.</p>
1173
<p>add check for zero/negative dimensions for
1174
<code>resizeterm</code> and <code>resize_term</code>.</p>
1178
<p>modify <code>resizeterm</code> to always push a
1179
<code>KEY_RESIZE</code> onto the fifo, even if screensize
1180
is unchanged. Modify library to push a
1181
<code>KEY_RESIZE</code> if there was a SIGWINCH, even if
1182
it does not call <code>resizeterm</code>). These changes
1183
eliminate the case where a SIGWINCH is received, but ERR
1184
is returned from <code>wgetch</code> or
1185
<code>wgetnstr</code> because the screen dimensions did
1192
<p>Low-level interfaces</p>
1196
<p>fix an old bug in the termcap emulation;
1197
“<code>%i</code>” was ignored in
1198
<code>tparm</code> because the parameters to be
1199
incremented were already on the internal stack.</p>
1203
<p>change “<code>%l</code>” behavior in tparm
1204
to push the string length onto the stack rather than
1205
saving the formatted length into the output buffer.</p>
1209
<p>modify name-comparison for tgetstr, etc., to
1210
accommodate legacy applications as well as to improve
1211
compatbility with BSD 4.2 termcap implementations (see
1213
"http://invisible-island.net/ncurses/NEWS.html#t980725">980725</a>).</p>
1218
<li>High-level interfaces
1222
<p>modify internal recursion in <code>wgetch</code> which
1223
handles cooked mode to check if the call to
1224
<code>wgetnstr</code> returned an error. This can happen
1225
when both <code>nocbreak</code> and <code>nodelay</code>
1226
are set, for instance (see note for <a href=
1227
"http://invisible-island.net/ncurses/NEWS.html#t960418">960418</a>).</p>
1231
<p>add a check in internal function
1232
<code>waddch_nosync</code> to ensure that tab characters
1233
are treated as control characters; some broken locales
1234
claim they are printable.</p>
1238
<p>modify menu library to ensure that a menu's top-row is
1239
adjusted as needed to ensure that the current item is on
1244
<p>fix special case where double-width character
1245
overwrites a single- width character in the first
1252
<h3><a name="h3-config-config" id=
1253
"h3-config-config">Configuration changes</a></h3>
1255
<h4><a name="h4-config-major" id="h4-config-major">Major
1258
<p>The <em class="small-caps">ncurses</em> 6.0 configure script
1259
makes changes to the <em>default</em> value of several configure
1260
options, depending on the <code>--with-abi-version</code> option
1261
(i.e., whether its value is “5” or
1262
“6”):</p>
1265
<dt><code>--enable-const</code></dt>
1268
<p>Feature introduced in <a href=
1269
"http://invisible-island.net/ncurses/NEWS.html#t970405">970405</a>
1270
supports the use of <code>const</code> where X/Open Curses
1271
should have, but did not. NetBSD curses does something
1272
similar with <code>const</code>.</p>
1275
<dt><code>--enable-ext-colors</code></dt>
1278
<p>Extends the <code>cchar_t</code> structure to allow more
1279
than 16 colors to be encoded. This applies only to the
1280
wide-character (<code>--enable-widec</code>)
1284
<dt><code>--enable-ext-mouse</code></dt>
1287
<p>Modifies the encoding of mouse state to make room for a
1288
5th mouse button. That allows one to use ncurses with a wheel
1289
mouse with xterm or similar X terminal emulators.</p>
1292
<dt><code>--enable-ext-putwin</code></dt>
1295
<p>Modifies the file-format written by <code>putwin</code> to
1296
use printable text rather than binary files, allowing
1297
<code>getwin</code> to read screen dumps written by
1298
differently-configured ncurses libraries. The extended
1299
<code>getwin</code> can still read binary screen dumps from
1300
the <em>same</em> configuration of ncurses. This does not
1301
change the ABI (the binary interface seen by calling
1305
<dt><code>--enable-interop</code></dt>
1308
<p>Modifies the <code>FIELDTYPE</code> structure used for the
1309
form library to make it more generic.</p>
1312
<dt><code>--enable-lp64</code></dt>
1315
<p>Allows an application to define <code>_LP64</code> to
1316
declare <code>chtype</code> and <code>mmask_t</code> as
1317
simply “<code>unsigned</code>” rather than the
1318
configured types using the <code>--with-chtype</code> and
1319
<code>--with-mmask_t</code> options.</p>
1322
<dt><code>--enable-sp-funcs</code></dt>
1325
<p>Compile-in support for extended functions which accept a
1326
SCREEN pointer, reducing the need for juggling the global SP
1328
"http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-set_term">
1329
set_term</a> and <a href=
1330
"http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-delscreen">
1334
<dt><code>--with-chtype=uint32_t</code></dt>
1337
<p>Makes <code>chtype</code> explicitly a 32-bit unsigned
1341
<dt><code>--with-mmask_t=uint32_t</code></dt>
1344
<p>Makes <code>mmask_t</code> explicitly a 32-bit unsigned
1348
<dt><code>--with-tparm-arg=intptr_t</code></dt>
1351
<p>X/Open Curses declares <a href=
1352
"http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output">
1353
tparm</a> using <code>long</code> for each of the parameters
1354
aside from the formatting string, presuming that
1355
<code>long</code> and <code>char*</code> are the same size.
1356
This configure option uses <code>intptr_t</code> which
1357
provides a better guarantee of the sizes.</p>
1361
<p>The configure script no longer checks for antique compilers;
1362
<code>c89</code> is assumed as a minimum. There are a few
1363
features from later revisions which are used when available. The
1364
configure script makes checks to turn on useful warnings from
1365
clang, gcc and icc. You should be able to build <em class=
1366
"small-caps">ncurses</em> 6.0 with any of the current (or not so
1367
current) C compilers available in 2015.</p>
1369
<p>The configure script, by the way, makes changes which do not
1370
work with systems whose <code>/bin/sh</code> is non-POSIX. This
1371
mainly affects Solaris (the other vendor <em class=
1372
"small-caps">unix</em> systems have followed the POSIX guidelines
1373
for the past twenty years). If you must build on Solaris, its
1375
"http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html">xpg4</a>
1376
binaries suffice, e.g.,</p>
1378
<blockquote class="code-block">
1381
<p style="font-family: monospace; font-size: 10pt;">
1382
<font color="#800000">#!/bin/sh</font><br>
1383
<font color="#008080">WHAT</font>=<strong><em><font color=
1384
"#800000">`</font></em></strong>hostname|sed -e <font color="#800080">'s/\..*//'</font><strong><em><font color="#800000">`</font></em></strong><br>
1386
<font color="#008080">OUT</font>=configure.out<br>
1387
<strong><font color=
1388
"#000080">cat</font></strong> >><font color=
1389
"#008080">$OUT</font> <font color=
1390
"#800080"><<EOF/</font><font color="#800080"><br>
1391
** </font><strong><em><font color=
1392
"#800000">`</font></em></strong>date<strong><em><font color=
1393
"#800000">`</font></em></strong><font color="#800080"><br>
1394
** node: </font><font color=
1395
"#008080">$WHAT</font><font color="#800080"><br>
1396
** user: </font><strong><em><font color=
1397
"#800000">`</font></em></strong>id<strong><em><font color=
1398
"#800000">`</font></em></strong><font color="#800080"><br>
1399
** conf: $*<br>
1402
<font color="#008080">SHELL</font>=/bin/sh<br>
1403
<strong><font color=
1404
"#000080">if</font></strong> <strong><font color=
1405
"#000080">test</font></strong> -f /usr/xpg4/bin/sh<br>
1407
<strong><font color="#000080">then</font></strong><br>
1408
<font color=
1409
"#008080">CONFIG_SHELL</font>=/usr/xpg4/bin/sh<br>
1410
<strong><font color="#000080">export</font></strong> CONFIG_SHELL<br>
1412
<font color=
1413
"#008080">SHELL</font>=<font color=
1414
"#008080">$CONFIG_SHELL</font><br>
1415
<strong><font color="#000080">fi</font></strong><br>
1417
rm -f config.status config.cache<br>
1418
<font color="#008080">TOP</font>=<font color=
1419
"#008080">$HOME</font>/<font color="#008080">$WHAT</font><br>
1421
"#008080">$SHELL</font> ./configure --verbose \<br>
1423
--disable-echo \<br>
1425
--disable-overwrite \<br>
1427
--enable-warnings \<br>
1429
--with-warnings \<br>
1431
--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>
1433
<!--atr2html}}--></p>
1436
<p>Other major changes to the configure script include:</p>
1440
<p>ABI 6 is now the default, intending that the existing ABI
1441
5 should build as before using the
1442
“<code>--with-abi-version=5</code>” option.</p>
1446
<p>added <code>--with-extra-suffix</code> option to help with
1447
installing nonconflicting ncurses6 packages, e.g., avoiding
1448
header- and library-conflicts.</p>
1450
<p><strong>NOTE:</strong> as a side-effect, this renames</p>
1453
<p><code>adacurses-config</code> to
1454
<code>adacurses5-config</code> and<br>
1455
<code>adacursesw-config</code> to
1456
<code>adacursesw5-config</code></p>
1461
<p>the configure script looks for gnatgcc if the Ada95
1462
binding is built, in preference to the default gcc/cc. The
1463
script also ensures that the Ada95 binding is built with the
1464
level of optimization as the C libraries.</p>
1468
<p>the configure script captures define's related to
1469
-D_XOPEN_SOURCE from the configure check and adds those to
1470
the *-config and *.pc files, to simplify use for the
1471
wide-character libraries.</p>
1475
<h4><a name="h4-config-options" id=
1476
"h4-config-options">Configuration options</a></h4>
1478
<p>There are several new (or extended) configure options:</p>
1481
<dt><code>--disable-db-install</code></dt>
1484
<p>Do not install the terminal database. This is used to omit
1485
features for packages, as done with
1486
<code>--without-progs</code>. The option simplifies building
1487
cross-compile support packages.</p>
1490
<dt><code>--disable-gnat-projects</code></dt>
1493
<p>This option is used for regression testing</p>
1496
<dt><code>--disable-lib-suffixes</code></dt>
1499
<p>Suppress the “w”, “t” or
1500
“tw” suffixes which normally would be added to
1501
the library names for the <code>--enable-widec</code> and
1502
<code>--with-pthread</code> options.</p>
1505
<dt><code>--with-cxx-shared</code></dt>
1508
<p>When <code>--with-shared</code> is set, build libncurses++
1509
as a shared library. This implicitly relies upon building
1510
with gcc/g++, since other compiler suites may have
1511
differences in the way shared libraries are built. libtool by
1512
the way has similar limitations.</p>
1515
<dt><code>--with-hashed-db</code></dt>
1518
<p>Extended this configure option to simplify building with
1519
different versions of Berkeley database using FreeBSD
1523
<dt><code>--with-pc-suffix</code></dt>
1526
<p>If ".pc" files are installed, optionally add a suffix to
1527
the files and corresponding package names to separate unusual
1528
configurations. If no option value is given (or if it is
1529
"none"), no suffix is added. This option is used in the test
1530
package for ncurses6.</p>
1533
<dt><code>--with-xterm-kbs</code></dt>
1536
<p>Configure xterm's terminfo entries to use either BS
1537
(<code>^H</code>, i.e., ASCII backspace) or DEL
1538
(<code>^?</code>, or 127).</p>
1542
<h3><a name="h3-portability" id=
1543
"h3-portability">Portability</a></h3>
1545
<h4><a name="h4-port-mingw" id="h4-port-mingw">MinGW</a></h4>
1547
<p>Most of the portability-related work since <a href=
1548
"http://invisible-island.net/ncurses/announce-5.9.html"><em class="small-caps">
1549
ncurses</em> 5.9</a> extended and improved the MinGW port
1550
introduced in <a href=
1551
"http://invisible-island.net/ncurses/announce-5.8.html"><em class="small-caps">
1552
ncurses</em> 5.8</a>.</p>
1554
<p>The MinGW port can be readily cross-compiled:</p>
1558
<p>modified configure script to allow creating dll's for
1559
MinGW when cross-compiling.</p>
1563
<p>enforced Windows-style path-separator if
1564
cross-compiling,</p>
1568
<p>added scripts for test-builds of cross-compiled packages
1569
for ncurses6 to MinGW.</p>
1573
<p>added pc-files to the MinGW cross-compiling
1578
<p>added script for building test-packages of binaries
1579
cross-compiled to MinGW using NSIS.</p>
1583
<p>added <code>nc_mingw.h</code> to installed headers for
1584
MinGW port; this is needed for cross-compiling <a href=
1585
"http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.</p>
1589
<p>added test-packages for cross-compiling ncurses-examples
1590
using the MinGW test-packages.</p>
1594
<p>The MinGW-specific Windows driver accounts for several
1599
<p>wide-character display is made usable by replacing MinGW's
1600
non-working <code>wcrtomb</code> and <code>wctomb</code>
1605
<p>implemented some display features: <a href=
1606
"http://invisible-island.net/ncurses/man/curs_beep.3x.html">beep</a>,
1608
"http://invisible-island.net/ncurses/man/curs_beep.3x.html">flash</a>,
1610
"http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set">
1615
<p>the driver handles repainting on endwin/refresh
1620
<p>modified treatment of <code>TERM</code> variable for MinGW
1621
port to allow explicit use of the Windows console driver by
1622
checking if <code>$TERM</code> is set to
1623
“<code>#win32console</code>” or an abbreviation
1628
<p>the Windows driver also matches the special
1629
<code>TERM</code> value “unknown”</p>
1633
<p>the driver now returns characters for special keys, (like
1634
<code>ansi.sys</code> does), when keypad mode is off, rather
1635
than returning nothing at all.</p>
1639
<p>the driver checks a new environment variable <a href=
1640
"http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_CONSOLE2">
1641
NCURSES_CONSOLE2</a> to optionally work around a deficiency
1642
in <code>Console2</code> (and its descendent
1643
<code>ConsoleZ</code>) which hang when an application creates
1644
a console buffer.</p>
1648
<p>Finally, there are other improvements:</p>
1652
<p>MinGW is one of the configurations where <em class=
1653
"small-caps">ncurses</em> installs by default into /usr</p>
1656
<li>configuration for cross-compiling uses AC_CHECK_TOOLS in
1657
preference to AC_PATH_PROGS when searching for ncurses*-config,
1658
e.g., in Ada95/configure and test/configure.</li>
1661
<p>extend Windows support to work with MSYS2;</p>
1665
<p>this works with a scenario where there is an
1666
ANSI-escape handler such as <code>ansicon</code> running
1667
in the console window.</p>
1670
<li>wrap <code>isatty</code> calls with a macro, provide a
1671
corresponding set of support routines to address
1672
differences between MinGW and MSYS2.</li>
1677
<p>ensure <code>WINVER</code> is defined in makefiles rather
1678
than using headers.</p>
1682
<p>add check for the <code>gnatprep</code>
1683
“<code>-T</code>” option.</p>
1687
<p>work around a bug introduced by <a href=
1688
"http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual">
1689
gcc 4.8.1</a> in MinGW which breaks "trace" feature.</p>
1693
<p>add a driver-name method to each of the drivers.</p>
1697
<h4><a name="h4-port-systems" id="h4-port-systems">Other
1700
<p>These changes affect certain platforms (ports):</p>
1704
<p>the configure script knows how to build shared libraries
1705
with DragonFlyBSD and Interix.</p>
1709
<p>support for AIX shared libraries is improved, tested with
1710
AIX 5.3, 6.1 and 7.1 with both gcc 4.2.4 and cc:</p>
1714
<p>the shared-library suffix for AIX 5 and 6 is now
1719
<p>the <code>-brtl</code> option is used with AIX 5-7; it
1720
is needed to link with the shared libraries.</p>
1726
<p>the configure <code>--enable-pc-files</code> option takes
1727
into account the <a href=
1728
"http://linux.die.net/man/1/pkg-config"><code>PKG_CONFIG_PATH</code></a>
1733
<p>the configure option <code>--with-pkg-config-libdir</code>
1734
provides control over the actual directory into which
1735
pc-files are installed.</p>
1739
<p>the build scripts add explicit -ltinfo, etc., to the
1740
generated ".pc" file when <code>ld</code> option
1741
“<code>--as-needed</code>” is used, or when
1742
ncurses and tinfo are installed without using rpath.</p>
1746
<p>the configure script disallows conflicting options
1747
“<code>--with-termlib</code>” and
1748
“<code>--enable-term-driver</code>”.</p>
1752
<p>the check for missing c++ compiler to work when no error
1753
is reported, and no variables set is improved (see note for
1755
"http://invisible-island.net/ncurses/NEWS.html#t20021206">20021206</a>).</p>
1759
<p>the misc/gen_edit.sh script selects a "linux" entry which
1760
works with the current kernel rather than assuming it is
1761
always "linux3.0"</p>
1765
<p>the test/configure script makes it simpler to override
1766
names of curses-related libraries, to help with linking with
1767
pdcurses in MinGW environment.</p>
1771
<p>the configure-script/ifdef's allow the BSD OLD_TTY feature
1772
to be suppressed if the type of <code>ospeed</code> is
1773
configured using the option <code>--with-ospeed</code> to not
1774
be a <code>short</code>. By default, it is a
1775
<code>short</code> for termcap-compatibility.</p>
1779
<p>the MKlib_gen.sh script works around a recent change in
1780
gcc 5 (released <a href=
1781
"https://gcc.gnu.org/gcc-5/">mid-2015</a>) which essentially
1782
emits multiple <code>#line</code> statements for the same
1783
position in a file.</p>
1787
<p>the configure script works with Minix3.2 (see <a href=
1788
"http://invisible-island.net/autoconf/portability-test.html">note</a>
1797
<p>the configure script supports OS/2 kLIBC.</p>
1801
<p>the <code>--with-lib-prefix</code> option allows
1802
configuring for old/new flavors of OS/2 EMX.</p>
1808
<p>improved configure-script checks for
1809
<code>_XOPEN_SOURCE</code>:</p>
1813
<p>the definition works starting with Solaris 10.</p>
1817
<p>the definition is suppressed for IRIX64, since its
1818
header files have a conflict versus
1819
<code>_SGI_SOURCE</code>.</p>
1826
<h2><a name="h2-features" id="h2-features">Features of <em class=
1827
"small-caps">ncurses</em></a></h2>
1829
<p>The <em class="small-caps">ncurses</em> package is fully
1830
upward-compatible with SVr4 (System V Release 4) curses:</p>
1834
<p>All of the SVr4 calls have been implemented (and are
1839
<p><em class="small-caps">ncurses</em> supports all of the
1840
for SVr4 curses features including keyboard mapping, color,
1841
forms-drawing with ACS characters, and automatic recognition
1842
of keypad and function keys.</p>
1846
<p><em class="small-caps">ncurses</em> provides these SVr4
1847
add-on libraries (not part of X/Open Curses):</p>
1851
<p>the panels library, supporting a stack of windows with
1856
<p>the menus library, supporting a uniform but flexible
1857
interface for menu programming.</p>
1861
<p>the form library, supporting data collection through
1862
on-screen forms.</p>
1868
<p><em class="small-caps">ncurses</em>'s terminal database is
1869
fully compatible with that used by SVr4 curses.</p>
1872
<li><em class="small-caps">ncurses</em> supports
1873
user-defined capabilities which it can see, but which are
1874
hidden from SVr4 curses applications using the
1875
<em>same</em> terminal database.</li>
1878
<p>It can be optionally configured to match the format
1879
used in related systems such as AIX and Tru64.</p>
1883
<p>Alternatively, <em class="small-caps">ncurses</em> can
1884
be configured to use hashed databases rather than the
1885
directory of files used by SVr4 curses.</p>
1891
<p>The <em class="small-caps">ncurses</em> utilities have
1892
options to allow you to filter terminfo entries for use with
1893
less capable <em>curses</em>/<em>terminfo</em> versions such
1894
as the HP/UX and AIX ports.</p>
1898
<p>The <em class="small-caps">ncurses</em> package also has many
1899
useful extensions over SVr4:</p>
1903
<p>The API is 8-bit clean and base-level conformant with the
1904
X/OPEN curses specification, XSI curses (that is, it
1905
implements all BASE level features, and most EXTENDED
1906
features). It includes many function calls not supported
1907
under SVr4 curses (but portability of all calls is documented
1908
so you can use the SVr4 subset only).</p>
1912
<p>Unlike SVr3 curses, <em class="small-caps">ncurses</em>
1913
can write to the rightmost-bottommost corner of the screen if
1914
your terminal has an insert-character capability.</p>
1918
<p>Ada95 and C++ bindings.</p>
1922
<p>Support for mouse event reporting with X Window xterm and
1923
FreeBSD and OS/2 console windows.</p>
1927
<p>Extended mouse support via Alessandro Rubini's gpm
1932
<p>The function <code>wresize</code> allows you to resize
1933
windows, preserving their data.</p>
1937
<p>The function <code>use_default_colors</code> allows you to
1938
use the terminal's default colors for the default color pair,
1939
achieving the effect of transparent colors.</p>
1943
<p>The functions <code>keyok</code> and
1944
<code>define_key</code> allow you to better control the use
1945
of function keys, e.g., disabling the <em class=
1946
"small-caps">ncurses</em> KEY_MOUSE, or by defining more than
1947
one control sequence to map to a given key code.</p>
1951
<p>Support for 256-color terminals, such as modern xterm.</p>
1955
<p>Support for 16-color terminals, such as <em>aixterm</em>
1956
and <em>modern xterm</em>.</p>
1960
<p>Better cursor-movement optimization. The package now
1961
features a cursor-local-movement computation more efficient
1962
than either BSD's or System V's.</p>
1966
<p>Super hardware scrolling support. The screen-update code
1967
incorporates a novel, simple, and cheap algorithm that
1968
enables it to make optimal use of hardware scrolling,
1969
line-insertion, and line-deletion for screen-line movements.
1970
This algorithm is more powerful than the 4.4BSD curses
1971
<code>quickch</code> routine.</p>
1975
<p>Real support for terminals with the magic-cookie glitch.
1976
The screen-update code will refrain from drawing a highlight
1977
if the magic- cookie unattributed spaces required just before
1978
the beginning and after the end would step on a non-space
1979
character. It will automatically shift highlight boundaries
1980
when doing so would make it possible to draw the highlight
1981
without changing the visual appearance of the screen.</p>
1985
<p>It is possible to generate the library with a list of
1986
pre-loaded fallback entries linked to it so that it can serve
1987
those terminal types even when no terminfo tree or termcap
1988
file is accessible (this may be useful for support of
1989
screen-oriented programs that must run in single-user
1995
"http://invisible-island.net/ncurses/man/tic.1m.html">tic</a>/<a href="http://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
1996
utility provided with <em class="small-caps">ncurses</em> has
1997
the ability to translate many termcaps from the XENIX, IBM
1998
and AT&T extension sets.</p>
2002
<p>A BSD-like <a href=
2003
"http://invisible-island.net/ncurses/man/tset.1.html">tset</a>
2004
utility is provided.</p>
2008
<p>The <em class="small-caps">ncurses</em> library and
2009
utilities will automatically read terminfo entries from
2010
$HOME/.terminfo if it exists, and compile to that directory
2011
if it exists and the user has no write access to the system
2012
directory. This feature makes it easier for users to have
2013
personal terminfo entries without giving up access to the
2014
system terminfo directory.</p>
2018
<p>You may specify a path of directories to search for
2019
compiled descriptions with the environment variable
2020
TERMINFO_DIRS (this generalizes the feature provided by
2021
TERMINFO under stock System V.)</p>
2025
<p>In terminfo source files, use capabilities may refer not
2026
just to other entries in the same source file (as in System
2027
V) but also to compiled entries in either the system terminfo
2028
directory or the user's $HOME/.terminfo directory.</p>
2032
<p>The table-of-entries utility <a href=
2033
"http://invisible-island.net/ncurses/man/toe.1m.html">toe</a>
2034
makes it easy for users to see exactly what terminal types
2035
are available on the system.</p>
2039
<p>The library meets the XSI requirement that every macro
2040
entry point have a corresponding function which may be linked
2041
(and will be prototype-checked) if the macro definition is
2042
disabled with <code>#undef</code>.</p>
2046
<p>Extensive documentation is provided (see the <em><a href=
2047
"http://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
2048
Additional Reading</a></em> section of the <em><a href=
2049
"http://invisible-island.net/ncurses/ncurses.faq.html"><em class="small-caps">
2050
ncurses</em> FAQ</a></em> for online documentation).</p>
2054
<h2><a name="h2-who-uses" id="h2-who-uses">Applications using
2055
<em class="small-caps">ncurses</em></a></h2>
2057
<p>The <em class="small-caps">ncurses</em> distribution includes
2058
a selection of test programs (including a few games). These are
2059
available separately as <a href=
2060
"http://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
2062
<p>The ncurses library has been tested with a wide variety of
2063
applications including:</p>
2070
<p>Curses Development Kit</p>
2073
"http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
2080
<p>directory-editor</p>
2083
"http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></p>
2089
<p>the underlying application used in Slackware's setup,
2090
and the basis for similar install/configure applications on
2094
"http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></p>
2100
<p>the text WWW browser</p>
2103
"http://lynx.isc.org/">http://lynx.isc.org/</a></p>
2106
<dt>Midnight Commander</dt>
2112
"http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></p>
2121
"http://www.mutt.org/">http://www.mutt.org/</a></p>
2127
<p>file-transfer utility</p>
2130
"http://www.ncftp.com/">http://www.ncftp.com/</a></p>
2136
<p>New vi uses ncurses.</p>
2139
"https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
2146
<p>newsreader, supporting color, MIME</p>
2149
"http://www.tin.org/">http://www.tin.org/</a></p>
2154
<p>as well as some that use <em class="small-caps">ncurses</em>
2155
for the terminfo support alone:</p>
2162
<p>terminal emulator for serial modem connections</p>
2165
"http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></p>
2171
<p>a replacement for <code>ssh</code>.</p>
2174
"https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
2180
<p>terminfo action checker</p>
2183
"http://invisible-island.net/ncurses/tack.html">http://invisible-island.net/ncurses/tack.html</a></p>
2189
<p>terminal multiplexor</p>
2192
"http://tmux.github.io/">http://tmux.github.io/</a></p>
2198
<p>vi-like-emacs may be built to use the terminfo, termcap
2199
or curses interfaces.</p>
2202
"http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></p>
2207
<p>and finally, those which use only the termcap interface:</p>
2217
"http://www.gnu.org/software/emacs/">http://www.gnu.org/software/emacs/</a></p>
2223
<p>terminal multiplexor</p>
2226
"http://www.gnu.org/software/screen/">http://www.gnu.org/software/screen/</a></p>
2235
"http://www.vim.org/">http://www.vim.org/</a></p>
2240
<h2><a name="h2-development" id="h2-development">Development
2243
<p>Zeyd Ben-Halim started <em class="small-caps">ncurses</em>
2244
from a previous package pcurses, written by Pavel Curtis. Eric S.
346
2245
Raymond continued development. Jürgen Pfeifer wrote most of
347
the form and menu libraries. Ongoing work is being done by
2246
the form and menu libraries. Ongoing development work is done by
348
2247
<a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
349
Thomas Dickey acts as the maintainer for the Free Software
350
Foundation, which holds the copyright on ncurses. Contact the
351
current maintainers at <a href=
352
"mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.
354
<p>To join the ncurses mailing list, please write email to
355
<code>bug-ncurses-request@gnu.org</code> containing the line:</p>
357
subscribe <name>@<host.domain>
2248
Thomas Dickey also acts as the maintainer for the Free Software
2249
Foundation, which holds the <a href=
2250
"http://invisible-island.net/ncurses/ncurses-license.html">copyright
2253
<p>Contact the current maintainers at</p>
2256
<a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
2259
<p>To join the ncurses mailing list, please write email to</p>
2263
"mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
2264
</blockquote>containing the line:
2267
<p><code>subscribe</code>
2268
<em><name>@<host.domain></em></p>
360
2271
<p>This list is open to anyone interested in helping with the
361
2272
development and testing of this package.</p>
363
<p>Beta versions of ncurses and patches to the current release
364
are made available at <a href=
365
"ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
367
<h2>Future Plans</h2>
2274
<p>Beta versions of <em class="small-caps">ncurses</em> and
2275
patches to the current release are made available at</p>
2279
"ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
2282
<p>There is an archive of the mailing list here:</p>
2286
"http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
2288
"https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
2291
<h2><a name="h2-this-stuff" id="h2-this-stuff">Related
2294
<p>The release notes make scattered references to these pages,
2295
which may be interesting by themselves:</p>
370
<li>Extended-level XPG4 conformance, with internationalization
373
<li>Ports to more systems, including DOS and Windows.</li>
374
</ul>We need people to help with these projects. If you are
375
interested in working on them, please join the ncurses list.
377
<h2>Other Related Resources</h2>The distribution provides a newer
378
version of the terminfo-format terminal description file once
379
maintained by <a href="http://www.catb.org/~esr/terminfo/">Eric
2299
"http://invisible-island.net/scripts/man2html.html">man2html</a></li>
2302
"http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html">
2303
<em class="small-caps">ncurses</em> licensing</a></li>
2306
"http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
2307
versioning in <em class="small-caps">ncurses</em></a></li>
2310
"http://invisible-island.net/ncurses/ncurses-mingw.html">The
2311
MinGW port of <em class="small-caps">ncurses</em></a></li>
2314
"http://invisible-island.net/ncurses/tack.html">tack –
2315
terminfo action checker</a></li>
2318
"http://invisible-island.net/autoconf/portability-tar.html">tar
2319
versus portability</a></li>
2322
"http://invisible-island.net/ncurses/tctest.html">tctest
2323
– termcap library checker</a></li>
2326
"http://invisible-island.net/ncurses/ncurses.html#download_database">
2327
Terminal Database</a></li>
2330
<h2><a name="h2-other-stuff" id="h2-other-stuff">Other
2333
<p>The distribution provides a newer version of the
2334
terminfo-format terminal description file once maintained by
2335
<a href="http://www.catb.org/~esr/terminfo/">Eric
380
2336
Raymond</a> . Unlike the older version, the termcap and
381
2337
terminfo data are provided in the same file, and provides several
382
user-definable extensions beyond the X/Open specification.
2338
user-definable extensions beyond the X/Open specification.</p>
384
2340
<p>You can find lots of information on terminal-related topics
385
2341
not covered in the terminfo file at <a href=
386
2342
"http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
387
2343
Richard Shuford's archive</a> .</p>
2347
<li><a href="#h2-overview">Overview</a></li>
2350
<a href="#h2-release-notes">Release Notes</a>
2354
<a href="#h3-library">Library improvements</a>
2357
<li><a href="#h3-lib-setbuf">Output
2360
<li><a href="#h3-lib-versioning">Symbol
2363
<li><a href="#h3-lib-other">Miscellaneous</a></li>
2368
<a href="#h3-programs">Program improvements</a>
2371
<li><a href="#h4-utilities">Utilities</a></li>
2373
<li><a href="#h4-examples">Examples</a></li>
2377
<li><a href="#h3-database">Terminal database</a></li>
2379
<li><a href="#h3-documentation">Documentation</a></li>
2381
<li><a href="#h3-bug-fixes">Interesting
2385
<a href="#h3-config-config">Configuration changes</a>
2388
<li><a href="#h4-config-major">Major changes</a></li>
2390
<li><a href="#h4-config-options">Configuration
2396
<a href="#h3-portability">Portability</a>
2399
<li><a href="#h4-port-mingw">MinGW</a></li>
2401
<li><a href="#h4-port-systems">Other ports</a></li>
2407
<li><a href="#h2-features">Features of <em class=
2408
"small-caps">ncurses</em></a></li>
2410
<li><a href="#h2-who-uses">Applications using <em class=
2411
"small-caps">ncurses</em></a></li>
2413
<li><a href="#h2-development">Development activities</a></li>
2415
<li><a href="#h2-this-stuff">Related resources</a></li>
2417
<li><a href="#h2-other-stuff">Other resources</a></li>