blob: 694848a1e939642f9eda9a2143b928f7e5102bbc [file] [log] [blame]
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301<!--
Steve Kondikae271bc2015-11-15 02:50:53 +01002 @Id: announce.html.in,v 1.90 2015/08/08 18:39:58 tom Exp @
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05303 ****************************************************************************
Steve Kondikae271bc2015-11-15 02:50:53 +01004 * Copyright (c) 1998-2013,2015 Free Software Foundation, Inc. *
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05305 * *
6 * Permission is hereby granted, free of charge, to any person obtaining a *
7 * copy of this software and associated documentation files (the *
8 * "Software"), to deal in the Software without restriction, including *
9 * without limitation the rights to use, copy, modify, merge, publish, *
10 * distribute, distribute with modifications, sublicense, and/or sell *
11 * copies of the Software, and to permit persons to whom the Software is *
12 * furnished to do so, subject to the following conditions: *
13 * *
14 * The above copyright notice and this permission notice shall be included *
15 * in all copies or substantial portions of the Software. *
16 * *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
20 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
22 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
23 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
24 * *
25 * Except as contained in this notice, the name(s) of the above copyright *
26 * holders shall not be used in advertising or otherwise to promote the *
27 * sale, use or other dealings in this Software without prior written *
28 * authorization. *
29 ****************************************************************************
30-->
Steve Kondikae271bc2015-11-15 02:50:53 +010031<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
32
33<html>
34<head>
35 <meta name="generator" content=
36 "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
37
38 <title>Announcing ncurses 6.0</title>
39 <link rev="made" href="mailto:bug-ncurses@gnu.org">
40 <meta http-equiv="Content-Type" content=
41 "text/html; charset=us-ascii">
42 <style type="text/css">
43p,li { max-width:700px; }
44 dd { max-width:630px; }
45 </style>
46</head>
47
48<body>
49 <h1 class="no-header">Announcing ncurses 6.0</h1>
50
51 <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
52
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
56 color and multiple highlights and forms characters and
57 function-key mapping, and has all the other SVr4-curses
58 enhancements over BSD curses. SVr4 curses is better known today
59 as X/Open Curses.</p>
60
61 <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
62 that he considered 4.4BSD curses obsolete, and encouraged the
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>
66
67 <p>Since 1995, <em class="small-caps">ncurses</em> has been
68 ported to many systems:</p>
69
70 <ul>
71 <li>It is used in almost every system based on the Linux kernel
72 (aside from some embedded applications).</li>
73
74 <li>It is used as the system curses library on OpenBSD, FreeBSD
75 and OSX.</li>
76
77 <li>It is used in environments such as Cygwin and MinGW. The
78 first of these was EMX on OS/2 Warp.</li>
79
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>
83
84 <li>It should work readily on any ANSI/POSIX-conforming
85 <em class="small-caps">unix</em>.</li>
86 </ul>
87
88 <p>The distribution includes the library and support utilities,
89 including</p>
90
91 <ul>
92 <li><a href=
93 "http://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>,
94 a termcap conversion tool</li>
95
96 <li><a href=
97 "http://invisible-island.net/ncurses/man/clear.1.html">clear</a>,
98 utility for clearing the screen</li>
99
100 <li><a href=
101 "http://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp</a>,
102 the terminfo decompiler</li>
103
104 <li><a href=
105 "http://invisible-island.net/ncurses/man/tabs.1.html">tabs</a>,
106 set tabs on a terminal</li>
107
108 <li><a href=
109 "http://invisible-island.net/ncurses/man/tic.1m.html">tic</a>,
110 the terminfo compiler</li>
111
112 <li><a href=
113 "http://invisible-island.net/ncurses/man/toe.1m.html">toe</a>,
114 list (table of) terminfo entries</li>
115
116 <li><a href=
117 "http://invisible-island.net/ncurses/man/tput.1.html">tput</a>,
118 utility for retrieving terminal capabilities in shell
119 scripts</li>
120
121 <li><a href=
122 "http://invisible-island.net/ncurses/man/tset.1.html">tset</a>,
123 to initialize the terminal</li>
124 </ul>
125
126 <p>Full manual pages are provided for the library and tools.</p>
127
128 <p>The <em class="small-caps">ncurses</em> distribution is
129 available via anonymous FTP at the GNU distribution site</p>
130
131 <blockquote>
132 <p><a href=
133 "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
134 </blockquote>It is also available at
135
136 <blockquote>
137 <p><a href=
138 "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
139 </blockquote>
140
141 <h2><a name="h2-release-notes" id="h2-release-notes">Release
142 Notes</a></h2>
143
144 <p>These notes are for <em class="small-caps">ncurses</em>
145 6.0, released <strong>August 8, 2015</strong>.</p>
146
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>
154 5:</p>
155
156 <ul>
157 <li>
158 <p>Extend the <code>cchar_t</code> structure to allow more
159 than 16 colors to be encoded.</p>
160 </li>
161
162 <li>
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>
167 </li>
168 </ul>
169
170 <p>There are, of course, numerous other improvements,
171 including</p>
172
173 <ul>
174 <li>
175 <p>fixes made based on the Clang and Coverity static
176 analyzers.</p>
177 </li>
178
179 <li>
180 <p>memory leak fixes using Valgrind</p>
181 </li>
182 </ul>
183
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>
187
188 <p>While the intent of the release is to provide a new stable
189 ABI, there are other development activities which are summarized
190 below.</p>
191
192 <ul>
193 <li>
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>
199 </li>
200
201 <li>
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>
206
207 <p>The <a href=
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>
214 </li>
215
216 <li>
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
220 <a href=
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>
227
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>
236 </li>
237
238 <li>
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>
247 </li>
248
249 <li>
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
252 ncurses ABI.</p>
253
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
258 <a href=
259 "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
260 versioning in <em class="small-caps">ncurses</em></a>.</p>
261 </li>
262 </ul>
263
264 <h3><a name="h3-library" id="h3-library">Library
265 improvements</a></h3>
266
267 <h3><a name="h3-lib-setbuf" id="h3-lib-setbuf">Output
268 buffering</a></h3>
269
270 <p>X/Open curses provides more than one initialization
271 function:</p>
272
273 <ul>
274 <li><a href=
275 "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr">
276 initscr</a> (the simplest) accepts no parameters.</li>
277
278 <li><a href=
279 "http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm">
280 newterm</a> accepts parameters for the stream input and
281 output</li>
282
283 <li><a href=
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>
287 </ul>
288
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>
301
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>
311
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>
316
317 <p>There were a couple of problems:</p>
318
319 <ul>
320 <li>
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
328 optional.</p>
329 </li>
330
331 <li>
332 <p>to handle <code>SIGTSTP</code> (the &ldquo;stop&rdquo;
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>
337 </li>
338 </ul>
339
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
343 resolve: <a href=
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>
349
350 <p>Finally, there may still be a few programs which should be
351 modified to improve their portability, e.g., adding an</p>
352
353 <blockquote>
354 <pre class="code-block">
355fflush(stdout);
356</pre>
357 </blockquote>
358
359 <p>when switching from &ldquo;<a href=
360 "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">shell</a>&rdquo;
361 mode to &ldquo;<a href=
362 "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">program</a>&rdquo;
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>
366
367 <h3><a name="h3-lib-versioning" id="h3-lib-versioning">Symbol
368 versioning</a></h3>
369
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
373 in <a href=
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
377 new release.</p>
378
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>
385
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>
391
392 <blockquote>
393 <dl>
394 <dt>&ldquo;<code>.map</code>&rdquo;</dt>
395
396 <dd>These list all public symbols, together with version
397 names.</dd>
398
399 <dt>&ldquo;<code>.sym</code>&rdquo;</dt>
400
401 <dd>These list all public symbols, without version
402 names.</dd>
403 </dl>
404 </blockquote>
405
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 &ldquo;<code>_nc_</code>&rdquo;). Here are
411 counts of globals versus locals:</p>
412
413 <blockquote>
414 <table border="1" summary="Total global and local symbols">
415 <tr>
416 <th>Config</th>
417
418 <th>Symbols</th>
419
420 <th>Globals</th>
421
422 <th>Locals</th>
423
424 <th>"_nc_"</th>
425 </tr>
426
427 <tr>
428 <td>ncurses</td>
429
430 <td align="right">976</td>
431
432 <td align="right">796</td>
433
434 <td align="right">180</td>
435
436 <td align="right">332</td>
437 </tr>
438
439 <tr>
440 <td>ncursesw</td>
441
442 <td align="right">1089</td>
443
444 <td align="right">905</td>
445
446 <td align="right">184</td>
447
448 <td align="right">343</td>
449 </tr>
450
451 <tr>
452 <td>ncursest</td>
453
454 <td align="right">979</td>
455
456 <td align="right">804</td>
457
458 <td align="right">175</td>
459
460 <td align="right">358</td>
461 </tr>
462
463 <tr>
464 <td>ncursestw</td>
465
466 <td align="right">1098</td>
467
468 <td align="right">914</td>
469
470 <td align="right">184</td>
471
472 <td align="right">372</td>
473 </tr>
474 </table>
475 </blockquote>
476
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>
487
488 <p>The version-naming convention used allows these sample files
489 to build distinct libraries for ABI 5 and 6. Version names
490 consist of</p>
491
492 <ul>
493 <li>
494 <p>configuration name, e.g.,
495 &ldquo;<code>NCURSESW</code>&rdquo; for the wide-character
496 libraries</p>
497 </li>
498
499 <li>
500 <p>ABI version (if not 5)</p>
501 </li>
502
503 <li>
504 <p>library name for two special cases which have the same
505 interface across configurations:
506 &ldquo;<code>TINFO</code>&rdquo; and
507 &ldquo;<code>TIC</code>&rdquo;</p>
508 </li>
509
510 <li>
511 <p>release version</p>
512 </li>
513
514 <li>
515 <p>patch date (for the release version)</p>
516 </li>
517 </ul>
518
519 <p>For example, running <code>nm -D</code> on the libraries in
520 the ncurses6 test package shows these symbol-versions:</p>
521
522 <blockquote>
523 <pre class="code-block">
5240000000000000000 A NCURSES6_TIC_5.0.19991023
5250000000000000000 A NCURSES6_TIC_5.1.20000708
5260000000000000000 A NCURSES6_TIC_5.5.20051010
5270000000000000000 A NCURSES6_TIC_5.7.20081102
5280000000000000000 A NCURSES6_TIC_5.9.20150530
5290000000000000000 A NCURSES6_TINFO_5.0.19991023
5300000000000000000 A NCURSES6_TINFO_5.1.20000708
5310000000000000000 A NCURSES6_TINFO_5.2.20001021
5320000000000000000 A NCURSES6_TINFO_5.3.20021019
5330000000000000000 A NCURSES6_TINFO_5.4.20040208
5340000000000000000 A NCURSES6_TINFO_5.5.20051010
5350000000000000000 A NCURSES6_TINFO_5.6.20061217
5360000000000000000 A NCURSES6_TINFO_5.7.20081102
5370000000000000000 A NCURSES6_TINFO_5.8.20110226
5380000000000000000 A NCURSES6_TINFO_5.9.20150530
5390000000000000000 A NCURSESW6_5.1.20000708
5400000000000000000 A NCURSESW6_5.3.20021019
5410000000000000000 A NCURSESW6_5.4.20040208
5420000000000000000 A NCURSESW6_5.5.20051010
5430000000000000000 A NCURSESW6_5.6.20061217
5440000000000000000 A NCURSESW6_5.7.20081102
5450000000000000000 A NCURSESW6_5.8.20110226
5460000000000000000 A NCURSESW6_5.9.20150530
547</pre>
548 </blockquote>
549
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
552 20150530.</p>
553
554 <h3><a name="h3-lib-other" id=
555 "h3-lib-other">Miscellaneous</a></h3>
556
557 <p>The new release has several improvements for performance and
558 building. For instance:</p>
559
560 <ul>
561 <li>
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
565 segment.</p>
566 </li>
567
568 <li>
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>
572 </li>
573 </ul>
574
575 <p>There are also new features in the libraries:</p>
576
577 <ul>
578 <li>added <a href=
579 "http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl">
580 use_tioctl</a> function</li>
581
582 <li>
583 <p>added <a href=
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>
587 </li>
588
589 <li>
590 <p>added <a href=
591 "http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
592 A_ITALIC</a> extension.</p>
593 </li>
594
595 <li>
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
600 dynamic fields .</p>
601 </li>
602
603 <li>
604 <p>rewrote <a href=
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>
612
613 <blockquote>
614 <pre class="code-block">
6150 string \210\210 Screen-dump (ncurses)
616</pre>
617 </blockquote>
618 </li>
619
620 <li>
621 <p>several changes to mouse support include:</p>
622
623 <ul>
624 <li>added decoder for xterm SGR 1006 mouse mode.</li>
625
626 <li>added experimental support for
627 &ldquo;<code>%u</code>&rdquo; format to terminfo.</li>
628
629 <li>improved behavior of wheel-mice for xterm protocol:
630 noting that there are only button-presses for buttons
631 &ldquo;4&rdquo; and &ldquo;5&rdquo;, so there is no need to
632 wait to combine events into double-clicks .</li>
633 </ul>
634 </li>
635 </ul>
636
637 <p>There are a few new configure options dealing with library
638 customization:</p>
639
640 <ul>
641 <li>
642 <p>add &ldquo;<code>--enable-ext-putwin</code>&rdquo;
643 configure option to turn on the extended putwin/getwin. By
644 default, this is enabled for ABI 6 and disabled with ABI
645 5.</p>
646 </li>
647
648 <li>
649 <p>add &ldquo;<code>--enable-string-hacks</code>&rdquo;
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>
654 </li>
655
656 <li>
657 <p>add configure option
658 &ldquo;<code>--with-tparm-arg</code>&rdquo; 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>
663 </li>
664 </ul>
665
666 <h3><a name="h3-programs" id="h3-programs">Program
667 improvements</a></h3>
668
669 <h4><a name="h4-utilities" id="h4-utilities">Utilities</a></h4>
670
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
675 the <a href=
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>
685
686 <p>Still, there are a few. A comment about the translation of the
687 ASCII <code>NUL</code> character prompted a review:</p>
688
689 <ul>
690 <li>
691 <p>Both terminfo and termcap store string capabilities as
692 <code>NUL</code>-terminated strings.</p>
693 </li>
694
695 <li>
696 <p>In terminfo, a <code>\0</code> in a terminal description
697 is stored as <code>\200</code>.</p>
698 </li>
699
700 <li>
701 <p>There are no (known) terminals which would behave
702 differently when sent <code>\0</code> or
703 <code>\200</code>.</p>
704 </li>
705
706 <li>
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
710 <code>\0</code>.</p>
711 </li>
712
713 <li>
714 <p>It has done this since 1998 (quoting from the NEWS
715 file):</p>
716
717 <blockquote>
718 <pre class="code-block">
719<a href=
720"http://invisible-island.net/ncurses/NEWS.html#t980103">980103</a>
721...
722 + modify _nc_tic_expand() to generate \0 rather than \200.
723...
724 + correct translation of terminfo "^@", to \200, like \0.
725</pre>
726 </blockquote>
727 </li>
728
729 <li>
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
733 <a href=
734 "https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&amp;view=markup#l784">
735 cgetstr</a> interprets a <code>\0</code> literally, ending
736 <em>that</em> string (rather than using the terminfo
737 improvement).</p>
738 </li>
739 </ul>
740
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 &mdash; 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
746 infocmp:</p>
747
748 <ul>
749 <li>
750 <p>the &ldquo;<code>-0</code>&rdquo; option generates
751 termcap/terminfo source on a single line.</p>
752 </li>
753
754 <li>
755 <p>the &ldquo;<code>-K</code>&rdquo; option provides stricter
756 BSD-compatibility for termcap output.</p>
757 </li>
758 </ul>
759
760 <p>Other user-visible improvements and new features include:</p>
761
762 <ul>
763 <li>
764 <p>added &ldquo;<code>-D</code>&rdquo; option to tic and
765 infocmp, to show the database locations that it could
766 use.</p>
767 </li>
768
769 <li>
770 <p>added &ldquo;<code>-s</code>&rdquo; option to toe, to sort
771 its output.</p>
772 </li>
773
774 <li>
775 <p>extended &ldquo;<code>-c</code>&rdquo; and
776 &ldquo;<code>-n</code>&rdquo; options of infocmp to allow
777 comparing more than two entries.</p>
778 </li>
779
780 <li>
781 <p>modified toe's report when &ldquo;<code>-a</code>&rdquo;
782 and &ldquo;<code>-s</code>&rdquo; options are combined, to
783 add a column showing which entries belong to a given
784 database.</p>
785 </li>
786
787 <li>
788 <p>modified the clear program to take into account the
789 &ldquo;<code>E3</code>&rdquo; extended capability to clear
790 the terminal's scrollback buffer.</p>
791 </li>
792 </ul>
793
794 <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
795
796 <p>Along with the library and utilities, many improvements were
797 made to the <a href=
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>
804
805 <p>These changes were made to verify compatibility or compare
806 performance of <em class="small-caps">ncurses</em>:</p>
807
808 <ul>
809 <li>
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">
813 use_env</a>.</p>
814 </li>
815
816 <li>
817 <p>added dots_termcap test-program</p>
818 </li>
819
820 <li>
821 <p>added dots_curses test-program, for comparison with the
822 low-level examples.</p>
823 </li>
824
825 <li>
826 <p>added test_setupterm test-proram to demonstrate
827 normal/error returns from the setupterm and restartterm
828 functions.</p>
829 </li>
830
831 <li>
832 <p>added &ldquo;<code>-d</code>&rdquo;,
833 &ldquo;<code>-e</code>&rdquo; and
834 &ldquo;<code>-q</code>&rdquo; options to the demo_terminfo
835 and demo_termcap test-programs.</p>
836 </li>
837
838 <li>
839 <p>added &ldquo;<code>-y</code>&rdquo; option to demo_termcap
840 and test/demo_terminfo test-programs to demonstrate behavior
841 with/without extended capabilities.</p>
842 </li>
843
844 <li>
845 <p>modified demo_termcap and demo_terminfo test-programs to
846 make their options more directly comparable, and add
847 &ldquo;<code>-i</code>&rdquo; option to specify a terminal
848 description filename to parse for names to lookup.</p>
849 </li>
850
851 <li>
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>
857 </li>
858 </ul>
859
860 <p>These changes were made to help with the MinGW port:</p>
861
862 <ul>
863 <li>
864 <p>added test-screens to the ncurses test-program to show
865 256-characters at a time, to help with MinGW port.</p>
866 </li>
867
868 <li>
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>
872 </li>
873
874 <li>
875 <p>added &ldquo;<code>-s</code>&rdquo; 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
878 MinGW changes.</p>
879 </li>
880 </ul>
881
882 <p>These changes were made to verify new extensions in <em class=
883 "small-caps">ncurses</em>:</p>
884
885 <ul>
886 <li>
887 <p>added <a href=
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>
891 </li>
892
893 <li>
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>
897 </li>
898
899 <li>
900 <p>modified ncurses test-program, adding
901 &ldquo;<code>-E</code>&rdquo; and
902 &ldquo;<code>-T</code>&rdquo; options to demonstrate use_env
903 versus use_tioctl.</p>
904 </li>
905
906 <li>
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
910 screens.</p>
911 </li>
912
913 <li>
914 <p>modified the ncurses test-program to also show position
915 reports in 'a' test.</p>
916 </li>
917 </ul>
918
919 <p>These changes were made to make the examples more useful:</p>
920
921 <ul>
922 <li>
923 <p>added scripts for building dpkg and rpm test-packages</p>
924 </li>
925
926 <li>
927 <p>modified the hanoi test-program to show the minimum number
928 of moves possible for the given number of tiles.</p>
929 </li>
930
931 <li>
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
935 puzzle.</p>
936 </li>
937 </ul>
938
939 <h3><a name="h3-database" id="h3-database">Terminal
940 database</a></h3>
941
942 <p>This release provides improvements to tic's
943 &ldquo;<code>-c</code>&rdquo; checking option, which was used for
944 example to</p>
945
946 <ul>
947 <li>
948 <p>make <code>sgr</code> in several entries agree with other
949 caps.</p>
950 </li>
951
952 <li>
953 <p>correct padding in some entries where earlier versions had
954 miscounted the number of octal digits.</p>
955 </li>
956 </ul>
957
958 <p>There are several new terminal descriptions:</p>
959
960 <ul>
961 <li><a href=
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>
964
965 <li><a href=
966 "http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm">
967 nsterm</a> is now derived from nsterm-256color</li>
968
969 <li><a href=
970 "http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco">
971 putty-sco</a></li>
972
973 <li><a href=
974 "http://invisible-island.net/ncurses/terminfo.src.html#tic-teken">
975 teken</a> is FreeBSD's "xterm" console.</li>
976
977 <li><a href=
978 "http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R">
979 terminator</a></li>
980
981 <li><a href=
982 "http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y">
983 terminology</a></li>
984
985 <li><a href=
986 "http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux">
987 tmux</a> is derived from screen.</li>
988
989 <li>several screen.XXX entries support the respective
990 variations for 256 colors.</li>
991
992 <li><a href=
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>
995
996 <li><a href=
997 "http://invisible-island.net/ncurses/terminfo.src.html#tic-vte">
998 vte</a> is aliased to vte-2012</li>
999
1000 <li><a href=
1001 "http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi">
1002 vt520ansi</a></li>
1003 </ul>
1004
1005 <p>A few entries use extensions (user-defined terminal
1006 capabilities):</p>
1007
1008 <ul>
1009 <li>
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>
1014 </li>
1015
1016 <li>
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>
1021 </li>
1022
1023 <li>
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
1027 status-line.</p>
1028 </li>
1029
1030 <li>
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
1036 more general</p>
1037 </li>
1038 </ul>
1039
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>
1044
1045 <ul>
1046 <li>konsole, mlterm3 (italics)</li>
1047
1048 <li>nsterm (dim)</li>
1049
1050 <li>screen (dim)</li>
1051
1052 <li>vte (dim, italics)</li>
1053
1054 <li>xterm (dim, italics)</li>
1055 </ul>
1056
1057 <h3><a name="h3-documentation" id=
1058 "h3-documentation">Documentation</a></h3>
1059
1060 <p>As usual, this release</p>
1061
1062 <ul>
1063 <li>
1064 <p>improves documentation by describing new features,</p>
1065 </li>
1066
1067 <li>
1068 <p>attempts to improve the description of features which
1069 users have found confusing</p>
1070 </li>
1071
1072 <li>
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>
1077 </li>
1078 </ul>
1079
1080 <p>In addition, the mechanism for producing HTML versions of the
1081 documentation has been improved:</p>
1082
1083 <ul>
1084 <li>
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>
1088 </li>
1089
1090 <li>
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>
1095 </li>
1096 </ul>
1097
1098 <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
1099 bug-fixes</a></h3>
1100
1101 <ul>
1102 <li>
1103 <p>Ada95 binding:</p>
1104
1105 <ul>
1106 <li>
1107 <p>modify makefile rules to ensure that the PIC option is
1108 not used when building a static library</p>
1109 </li>
1110
1111 <li>
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 &ldquo;<code>Unused</code>&rdquo; member to
1117 representation clauses, replacing that with pragmas to
1118 suppress warnings about unused bits.</p>
1119 </li>
1120 </ul>
1121 </li>
1122
1123 <li>
1124 <p>Color and attributes:</p>
1125
1126 <ul>
1127 <li>
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>
1131 </li>
1132
1133 <li>
1134 <p>improve <a href=
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>
1140 </li>
1141
1142 <li>
1143 <p>modify <a href=
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
1146 <a href=
1147 "http://invisible-island.net/ncurses/man/default_colors.3x.html">
1148 assume_default_colors</a> has been called.</p>
1149 </li>
1150
1151 <li>
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>
1156 </li>
1157 </ul>
1158 </li>
1159
1160 <li>
1161 <p>Resizing the screen:</p>
1162
1163 <ul>
1164 <li>
1165 <p>propagate error-returns from wresize, i.e., the
1166 internal increase_size and decrease_size functions
1167 through <a href=
1168 "http://invisible-island.net/ncurses/man/resizeterm.3x.html">
1169 resize_term</a>.</p>
1170 </li>
1171
1172 <li>
1173 <p>add check for zero/negative dimensions for
1174 <code>resizeterm</code> and <code>resize_term</code>.</p>
1175 </li>
1176
1177 <li>
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
1186 not change.</p>
1187 </li>
1188 </ul>
1189 </li>
1190
1191 <li>
1192 <p>Low-level interfaces</p>
1193
1194 <ul>
1195 <li>
1196 <p>fix an old bug in the termcap emulation;
1197 &ldquo;<code>%i</code>&rdquo; was ignored in
1198 <code>tparm</code> because the parameters to be
1199 incremented were already on the internal stack.</p>
1200 </li>
1201
1202 <li>
1203 <p>change &ldquo;<code>%l</code>&rdquo; behavior in tparm
1204 to push the string length onto the stack rather than
1205 saving the formatted length into the output buffer.</p>
1206 </li>
1207
1208 <li>
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
1212 note for <a href=
1213 "http://invisible-island.net/ncurses/NEWS.html#t980725">980725</a>).</p>
1214 </li>
1215 </ul>
1216 </li>
1217
1218 <li>High-level interfaces
1219
1220 <ul>
1221 <li>
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>
1228 </li>
1229
1230 <li>
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>
1235 </li>
1236
1237 <li>
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
1240 the screen</p>
1241 </li>
1242
1243 <li>
1244 <p>fix special case where double-width character
1245 overwrites a single- width character in the first
1246 column.</p>
1247 </li>
1248 </ul>
1249 </li>
1250 </ul>
1251
1252 <h3><a name="h3-config-config" id=
1253 "h3-config-config">Configuration changes</a></h3>
1254
1255 <h4><a name="h4-config-major" id="h4-config-major">Major
1256 changes</a></h4>
1257
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 &ldquo;5&rdquo; or
1262 &ldquo;6&rdquo;):</p>
1263
1264 <dl>
1265 <dt><code>--enable-const</code></dt>
1266
1267 <dd>
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>
1273 </dd>
1274
1275 <dt><code>--enable-ext-colors</code></dt>
1276
1277 <dd>
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>)
1281 configuration.</p>
1282 </dd>
1283
1284 <dt><code>--enable-ext-mouse</code></dt>
1285
1286 <dd>
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>
1290 </dd>
1291
1292 <dt><code>--enable-ext-putwin</code></dt>
1293
1294 <dd>
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
1302 applications).</p>
1303 </dd>
1304
1305 <dt><code>--enable-interop</code></dt>
1306
1307 <dd>
1308 <p>Modifies the <code>FIELDTYPE</code> structure used for the
1309 form library to make it more generic.</p>
1310 </dd>
1311
1312 <dt><code>--enable-lp64</code></dt>
1313
1314 <dd>
1315 <p>Allows an application to define <code>_LP64</code> to
1316 declare <code>chtype</code> and <code>mmask_t</code> as
1317 simply &ldquo;<code>unsigned</code>&rdquo; rather than the
1318 configured types using the <code>--with-chtype</code> and
1319 <code>--with-mmask_t</code> options.</p>
1320 </dd>
1321
1322 <dt><code>--enable-sp-funcs</code></dt>
1323
1324 <dd>
1325 <p>Compile-in support for extended functions which accept a
1326 SCREEN pointer, reducing the need for juggling the global SP
1327 value with <a href=
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">
1331 delscreen</a>.</p>
1332 </dd>
1333
1334 <dt><code>--with-chtype=uint32_t</code></dt>
1335
1336 <dd>
1337 <p>Makes <code>chtype</code> explicitly a 32-bit unsigned
1338 value.</p>
1339 </dd>
1340
1341 <dt><code>--with-mmask_t=uint32_t</code></dt>
1342
1343 <dd>
1344 <p>Makes <code>mmask_t</code> explicitly a 32-bit unsigned
1345 value.</p>
1346 </dd>
1347
1348 <dt><code>--with-tparm-arg=intptr_t</code></dt>
1349
1350 <dd>
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>
1358 </dd>
1359 </dl>
1360
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>
1368
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
1374 <a href=
1375 "http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html">xpg4</a>
1376 binaries suffice, e.g.,</p>
1377
1378 <blockquote class="code-block">
1379 <!--{{atr2html-->
1380
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&nbsp;-e&nbsp;<font color="#800080">'s/\..*//'</font><strong><em><font color="#800000">`</font></em></strong><br>
1385
1386 <font color="#008080">OUT</font>=configure.out<br>
1387 <strong><font color=
1388 "#000080">cat</font></strong>&nbsp;&gt;&gt;<font color=
1389 "#008080">$OUT</font>&nbsp;<font color=
1390 "#800080">&lt;&lt;EOF/</font><font color="#800080"><br>
1391 **&nbsp;</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 **&nbsp;node:&nbsp;</font><font color=
1395 "#008080">$WHAT</font><font color="#800080"><br>
1396 **&nbsp;user:&nbsp;</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 **&nbsp;conf:&nbsp;$*<br>
1400 EOF/</font><br>
1401 &nbsp;<br>
1402 <font color="#008080">SHELL</font>=/bin/sh<br>
1403 <strong><font color=
1404 "#000080">if</font></strong>&nbsp;<strong><font color=
1405 "#000080">test</font></strong>&nbsp;-f&nbsp;/usr/xpg4/bin/sh<br>
1406
1407 <strong><font color="#000080">then</font></strong><br>
1408 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=
1409 "#008080">CONFIG_SHELL</font>=/usr/xpg4/bin/sh<br>
1410 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#000080">export</font></strong>&nbsp;CONFIG_SHELL<br>
1411
1412 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=
1413 "#008080">SHELL</font>=<font color=
1414 "#008080">$CONFIG_SHELL</font><br>
1415 <strong><font color="#000080">fi</font></strong><br>
1416 &nbsp;<br>
1417 rm&nbsp;-f&nbsp;config.status&nbsp;config.cache<br>
1418 <font color="#008080">TOP</font>=<font color=
1419 "#008080">$HOME</font>/<font color="#008080">$WHAT</font><br>
1420 <font color=
1421 "#008080">$SHELL</font>&nbsp;./configure&nbsp;--verbose&nbsp;\<br>
1422
1423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--disable-echo&nbsp;\<br>
1424
1425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--disable-overwrite&nbsp;\<br>
1426
1427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-warnings&nbsp;\<br>
1428
1429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--with-warnings&nbsp;\<br>
1430
1431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--prefix=<font color="#008080">$TOP</font>&nbsp;<font color="#008080">$*</font>&nbsp;<strong><font color="#008080">2</font></strong>&gt;&amp;<strong><font color="#008080">1</font></strong>&nbsp;|&nbsp;tee&nbsp;-a&nbsp;<font color="#008080">$OUT</font><br>
1432
1433 <!--atr2html}}--></p>
1434 </blockquote>
1435
1436 <p>Other major changes to the configure script include:</p>
1437
1438 <ul>
1439 <li>
1440 <p>ABI 6 is now the default, intending that the existing ABI
1441 5 should build as before using the
1442 &ldquo;<code>--with-abi-version=5</code>&rdquo; option.</p>
1443 </li>
1444
1445 <li>
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>
1449
1450 <p><strong>NOTE:</strong> as a side-effect, this renames</p>
1451
1452 <blockquote>
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>
1457 </blockquote>
1458 </li>
1459
1460 <li>
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>
1465 </li>
1466
1467 <li>
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>
1472 </li>
1473 </ul>
1474
1475 <h4><a name="h4-config-options" id=
1476 "h4-config-options">Configuration options</a></h4>
1477
1478 <p>There are several new (or extended) configure options:</p>
1479
1480 <dl>
1481 <dt><code>--disable-db-install</code></dt>
1482
1483 <dd>
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>
1488 </dd>
1489
1490 <dt><code>--disable-gnat-projects</code></dt>
1491
1492 <dd>
1493 <p>This option is used for regression testing</p>
1494 </dd>
1495
1496 <dt><code>--disable-lib-suffixes</code></dt>
1497
1498 <dd>
1499 <p>Suppress the &ldquo;w&rdquo;, &ldquo;t&rdquo; or
1500 &ldquo;tw&rdquo; 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>
1503 </dd>
1504
1505 <dt><code>--with-cxx-shared</code></dt>
1506
1507 <dd>
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>
1513 </dd>
1514
1515 <dt><code>--with-hashed-db</code></dt>
1516
1517 <dd>
1518 <p>Extended this configure option to simplify building with
1519 different versions of Berkeley database using FreeBSD
1520 ports.</p>
1521 </dd>
1522
1523 <dt><code>--with-pc-suffix</code></dt>
1524
1525 <dd>
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>
1531 </dd>
1532
1533 <dt><code>--with-xterm-kbs</code></dt>
1534
1535 <dd>
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>
1539 </dd>
1540 </dl>
1541
1542 <h3><a name="h3-portability" id=
1543 "h3-portability">Portability</a></h3>
1544
1545 <h4><a name="h4-port-mingw" id="h4-port-mingw">MinGW</a></h4>
1546
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>
1553
1554 <p>The MinGW port can be readily cross-compiled:</p>
1555
1556 <ul>
1557 <li>
1558 <p>modified configure script to allow creating dll's for
1559 MinGW when cross-compiling.</p>
1560 </li>
1561
1562 <li>
1563 <p>enforced Windows-style path-separator if
1564 cross-compiling,</p>
1565 </li>
1566
1567 <li>
1568 <p>added scripts for test-builds of cross-compiled packages
1569 for ncurses6 to MinGW.</p>
1570 </li>
1571
1572 <li>
1573 <p>added pc-files to the MinGW cross-compiling
1574 test-packages.</p>
1575 </li>
1576
1577 <li>
1578 <p>added script for building test-packages of binaries
1579 cross-compiled to MinGW using NSIS.</p>
1580 </li>
1581
1582 <li>
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>
1586 </li>
1587
1588 <li>
1589 <p>added test-packages for cross-compiling ncurses-examples
1590 using the MinGW test-packages.</p>
1591 </li>
1592 </ul>
1593
1594 <p>The MinGW-specific Windows driver accounts for several
1595 changes:</p>
1596
1597 <ul>
1598 <li>
1599 <p>wide-character display is made usable by replacing MinGW's
1600 non-working <code>wcrtomb</code> and <code>wctomb</code>
1601 functions.</p>
1602 </li>
1603
1604 <li>
1605 <p>implemented some display features: <a href=
1606 "http://invisible-island.net/ncurses/man/curs_beep.3x.html">beep</a>,
1607 <a href=
1608 "http://invisible-island.net/ncurses/man/curs_beep.3x.html">flash</a>,
1609 <a href=
1610 "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set">
1611 curs_set</a>.</p>
1612 </li>
1613
1614 <li>
1615 <p>the driver handles repainting on endwin/refresh
1616 combination.</p>
1617 </li>
1618
1619 <li>
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 &ldquo;<code>#win32console</code>&rdquo; or an abbreviation
1624 of that.</p>
1625 </li>
1626
1627 <li>
1628 <p>the Windows driver also matches the special
1629 <code>TERM</code> value &ldquo;unknown&rdquo;</p>
1630 </li>
1631
1632 <li>
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>
1636 </li>
1637
1638 <li>
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>
1645 </li>
1646 </ul>
1647
1648 <p>Finally, there are other improvements:</p>
1649
1650 <ul>
1651 <li>
1652 <p>MinGW is one of the configurations where <em class=
1653 "small-caps">ncurses</em> installs by default into /usr</p>
1654 </li>
1655
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>
1659
1660 <li>
1661 <p>extend Windows support to work with MSYS2;</p>
1662
1663 <ul>
1664 <li>
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>
1668 </li>
1669
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>
1673 </ul>
1674 </li>
1675
1676 <li>
1677 <p>ensure <code>WINVER</code> is defined in makefiles rather
1678 than using headers.</p>
1679 </li>
1680
1681 <li>
1682 <p>add check for the <code>gnatprep</code>
1683 &ldquo;<code>-T</code>&rdquo; option.</p>
1684 </li>
1685
1686 <li>
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>
1690 </li>
1691
1692 <li>
1693 <p>add a driver-name method to each of the drivers.</p>
1694 </li>
1695 </ul>
1696
1697 <h4><a name="h4-port-systems" id="h4-port-systems">Other
1698 ports</a></h4>
1699
1700 <p>These changes affect certain platforms (ports):</p>
1701
1702 <ul>
1703 <li>
1704 <p>the configure script knows how to build shared libraries
1705 with DragonFlyBSD and Interix.</p>
1706 </li>
1707
1708 <li>
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>
1711
1712 <ul>
1713 <li>
1714 <p>the shared-library suffix for AIX 5 and 6 is now
1715 ".so"</p>
1716 </li>
1717
1718 <li>
1719 <p>the <code>-brtl</code> option is used with AIX 5-7; it
1720 is needed to link with the shared libraries.</p>
1721 </li>
1722 </ul>
1723 </li>
1724
1725 <li>
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>
1729 variable.</p>
1730 </li>
1731
1732 <li>
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>
1736 </li>
1737
1738 <li>
1739 <p>the build scripts add explicit -ltinfo, etc., to the
1740 generated ".pc" file when <code>ld</code> option
1741 &ldquo;<code>--as-needed</code>&rdquo; is used, or when
1742 ncurses and tinfo are installed without using rpath.</p>
1743 </li>
1744
1745 <li>
1746 <p>the configure script disallows conflicting options
1747 &ldquo;<code>--with-termlib</code>&rdquo; and
1748 &ldquo;<code>--enable-term-driver</code>&rdquo;.</p>
1749 </li>
1750
1751 <li>
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
1754 <a href=
1755 "http://invisible-island.net/ncurses/NEWS.html#t20021206">20021206</a>).</p>
1756 </li>
1757
1758 <li>
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>
1762 </li>
1763
1764 <li>
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>
1768 </li>
1769
1770 <li>
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>
1776 </li>
1777
1778 <li>
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>
1784 </li>
1785
1786 <li>
1787 <p>the configure script works with Minix3.2 (see <a href=
1788 "http://invisible-island.net/autoconf/portability-test.html">note</a>
1789 on portability)</p>
1790 </li>
1791
1792 <li>
1793 <p>OS/2 redux:</p>
1794
1795 <ul>
1796 <li>
1797 <p>the configure script supports OS/2 kLIBC.</p>
1798 </li>
1799
1800 <li>
1801 <p>the <code>--with-lib-prefix</code> option allows
1802 configuring for old/new flavors of OS/2 EMX.</p>
1803 </li>
1804 </ul>
1805 </li>
1806
1807 <li>
1808 <p>improved configure-script checks for
1809 <code>_XOPEN_SOURCE</code>:</p>
1810
1811 <ul>
1812 <li>
1813 <p>the definition works starting with Solaris 10.</p>
1814 </li>
1815
1816 <li>
1817 <p>the definition is suppressed for IRIX64, since its
1818 header files have a conflict versus
1819 <code>_SGI_SOURCE</code>.</p>
1820 </li>
1821 </ul>
1822 </li>
1823 </ul>
1824 <hr>
1825
1826 <h2><a name="h2-features" id="h2-features">Features of <em class=
1827 "small-caps">ncurses</em></a></h2>
1828
1829 <p>The <em class="small-caps">ncurses</em> package is fully
1830 upward-compatible with SVr4 (System V Release 4) curses:</p>
1831
1832 <ul>
1833 <li>
1834 <p>All of the SVr4 calls have been implemented (and are
1835 documented).</p>
1836 </li>
1837
1838 <li>
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>
1843 </li>
1844
1845 <li>
1846 <p><em class="small-caps">ncurses</em> provides these SVr4
1847 add-on libraries (not part of X/Open Curses):</p>
1848
1849 <ul>
1850 <li>
1851 <p>the panels library, supporting a stack of windows with
1852 backing store.</p>
1853 </li>
1854
1855 <li>
1856 <p>the menus library, supporting a uniform but flexible
1857 interface for menu programming.</p>
1858 </li>
1859
1860 <li>
1861 <p>the form library, supporting data collection through
1862 on-screen forms.</p>
1863 </li>
1864 </ul>
1865 </li>
1866
1867 <li>
1868 <p><em class="small-caps">ncurses</em>'s terminal database is
1869 fully compatible with that used by SVr4 curses.</p>
1870
1871 <ul>
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>
1876
1877 <li>
1878 <p>It can be optionally configured to match the format
1879 used in related systems such as AIX and Tru64.</p>
1880 </li>
1881
1882 <li>
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>
1886 </li>
1887 </ul>
1888 </li>
1889
1890 <li>
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>
1895 </li>
1896 </ul>
1897
1898 <p>The <em class="small-caps">ncurses</em> package also has many
1899 useful extensions over SVr4:</p>
1900
1901 <ul>
1902 <li>
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>
1909 </li>
1910
1911 <li>
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>
1915 </li>
1916
1917 <li>
1918 <p>Ada95 and C++ bindings.</p>
1919 </li>
1920
1921 <li>
1922 <p>Support for mouse event reporting with X Window xterm and
1923 FreeBSD and OS/2 console windows.</p>
1924 </li>
1925
1926 <li>
1927 <p>Extended mouse support via Alessandro Rubini's gpm
1928 package.</p>
1929 </li>
1930
1931 <li>
1932 <p>The function <code>wresize</code> allows you to resize
1933 windows, preserving their data.</p>
1934 </li>
1935
1936 <li>
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>
1940 </li>
1941
1942 <li>
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>
1948 </li>
1949
1950 <li>
1951 <p>Support for 256-color terminals, such as modern xterm.</p>
1952 </li>
1953
1954 <li>
1955 <p>Support for 16-color terminals, such as <em>aixterm</em>
1956 and <em>modern xterm</em>.</p>
1957 </li>
1958
1959 <li>
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>
1963 </li>
1964
1965 <li>
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>
1972 </li>
1973
1974 <li>
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>
1982 </li>
1983
1984 <li>
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
1990 mode).</p>
1991 </li>
1992
1993 <li>
1994 <p>The <a href=
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&amp;T extension sets.</p>
1999 </li>
2000
2001 <li>
2002 <p>A BSD-like <a href=
2003 "http://invisible-island.net/ncurses/man/tset.1.html">tset</a>
2004 utility is provided.</p>
2005 </li>
2006
2007 <li>
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>
2015 </li>
2016
2017 <li>
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>
2022 </li>
2023
2024 <li>
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>
2029 </li>
2030
2031 <li>
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>
2036 </li>
2037
2038 <li>
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>
2043 </li>
2044
2045 <li>
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>
2051 </li>
2052 </ul>
2053
2054 <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
2055 <em class="small-caps">ncurses</em></a></h2>
2056
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>
2061
2062 <p>The ncurses library has been tested with a wide variety of
2063 applications including:</p>
2064
2065 <blockquote>
2066 <dl>
2067 <dt>cdk</dt>
2068
2069 <dd>
2070 <p>Curses Development Kit</p>
2071
2072 <p><a href=
2073 "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
2074 </p>
2075 </dd>
2076
2077 <dt>ded</dt>
2078
2079 <dd>
2080 <p>directory-editor</p>
2081
2082 <p><a href=
2083 "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></p>
2084 </dd>
2085
2086 <dt>dialog</dt>
2087
2088 <dd>
2089 <p>the underlying application used in Slackware's setup,
2090 and the basis for similar install/configure applications on
2091 many systems.</p>
2092
2093 <p><a href=
2094 "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></p>
2095 </dd>
2096
2097 <dt>lynx</dt>
2098
2099 <dd>
2100 <p>the text WWW browser</p>
2101
2102 <p><a href=
2103 "http://lynx.isc.org/">http://lynx.isc.org/</a></p>
2104 </dd>
2105
2106 <dt>Midnight Commander</dt>
2107
2108 <dd>
2109 <p>file manager</p>
2110
2111 <p><a href=
2112 "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></p>
2113 </dd>
2114
2115 <dt>mutt</dt>
2116
2117 <dd>
2118 <p>mail utility</p>
2119
2120 <p><a href=
2121 "http://www.mutt.org/">http://www.mutt.org/</a></p>
2122 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302123
Steve Kondikae271bc2015-11-15 02:50:53 +01002124 <dt>ncftp</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302125
Steve Kondikae271bc2015-11-15 02:50:53 +01002126 <dd>
2127 <p>file-transfer utility</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302128
Steve Kondikae271bc2015-11-15 02:50:53 +01002129 <p><a href=
2130 "http://www.ncftp.com/">http://www.ncftp.com/</a></p>
2131 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302132
Steve Kondikae271bc2015-11-15 02:50:53 +01002133 <dt>nvi</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302134
Steve Kondikae271bc2015-11-15 02:50:53 +01002135 <dd>
2136 <p>New vi uses ncurses.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302137
Steve Kondikae271bc2015-11-15 02:50:53 +01002138 <p><a href=
2139 "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
2140 </p>
2141 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302142
Steve Kondikae271bc2015-11-15 02:50:53 +01002143 <dt>tin</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302144
Steve Kondikae271bc2015-11-15 02:50:53 +01002145 <dd>
2146 <p>newsreader, supporting color, MIME</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302147
Steve Kondikae271bc2015-11-15 02:50:53 +01002148 <p><a href=
2149 "http://www.tin.org/">http://www.tin.org/</a></p>
2150 </dd>
2151 </dl>
2152 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302153
Steve Kondikae271bc2015-11-15 02:50:53 +01002154 <p>as well as some that use <em class="small-caps">ncurses</em>
2155 for the terminfo support alone:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302156
Steve Kondikae271bc2015-11-15 02:50:53 +01002157 <blockquote>
2158 <dl>
2159 <dt>minicom</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302160
Steve Kondikae271bc2015-11-15 02:50:53 +01002161 <dd>
2162 <p>terminal emulator for serial modem connections</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302163
Steve Kondikae271bc2015-11-15 02:50:53 +01002164 <p><a href=
2165 "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></p>
2166 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302167
Steve Kondikae271bc2015-11-15 02:50:53 +01002168 <dt>mosh</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302169
Steve Kondikae271bc2015-11-15 02:50:53 +01002170 <dd>
2171 <p>a replacement for <code>ssh</code>.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302172
Steve Kondikae271bc2015-11-15 02:50:53 +01002173 <p><a href=
2174 "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
2175 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302176
Steve Kondikae271bc2015-11-15 02:50:53 +01002177 <dt>tack</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302178
Steve Kondikae271bc2015-11-15 02:50:53 +01002179 <dd>
2180 <p>terminfo action checker</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302181
Steve Kondikae271bc2015-11-15 02:50:53 +01002182 <p><a href=
2183 "http://invisible-island.net/ncurses/tack.html">http://invisible-island.net/ncurses/tack.html</a></p>
2184 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302185
Steve Kondikae271bc2015-11-15 02:50:53 +01002186 <dt>tmux</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302187
Steve Kondikae271bc2015-11-15 02:50:53 +01002188 <dd>
2189 <p>terminal multiplexor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302190
Steve Kondikae271bc2015-11-15 02:50:53 +01002191 <p><a href=
2192 "http://tmux.github.io/">http://tmux.github.io/</a></p>
2193 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302194
Steve Kondikae271bc2015-11-15 02:50:53 +01002195 <dt>vile</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302196
Steve Kondikae271bc2015-11-15 02:50:53 +01002197 <dd>
2198 <p>vi-like-emacs may be built to use the terminfo, termcap
2199 or curses interfaces.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302200
Steve Kondikae271bc2015-11-15 02:50:53 +01002201 <p><a href=
2202 "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></p>
2203 </dd>
2204 </dl>
2205 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302206
Steve Kondikae271bc2015-11-15 02:50:53 +01002207 <p>and finally, those which use only the termcap interface:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302208
Steve Kondikae271bc2015-11-15 02:50:53 +01002209 <blockquote>
2210 <dl>
2211 <dt>emacs</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302212
Steve Kondikae271bc2015-11-15 02:50:53 +01002213 <dd>
2214 <p>text editor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302215
Steve Kondikae271bc2015-11-15 02:50:53 +01002216 <p><a href=
2217 "http://www.gnu.org/software/emacs/">http://www.gnu.org/software/emacs/</a></p>
2218 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302219
Steve Kondikae271bc2015-11-15 02:50:53 +01002220 <dt>screen</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302221
Steve Kondikae271bc2015-11-15 02:50:53 +01002222 <dd>
2223 <p>terminal multiplexor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302224
Steve Kondikae271bc2015-11-15 02:50:53 +01002225 <p><a href=
2226 "http://www.gnu.org/software/screen/">http://www.gnu.org/software/screen/</a></p>
2227 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302228
Steve Kondikae271bc2015-11-15 02:50:53 +01002229 <dt>vim</dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302230
Steve Kondikae271bc2015-11-15 02:50:53 +01002231 <dd>
2232 <p>text editor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302233
Steve Kondikae271bc2015-11-15 02:50:53 +01002234 <p><a href=
2235 "http://www.vim.org/">http://www.vim.org/</a></p>
2236 </dd>
2237 </dl>
2238 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302239
Steve Kondikae271bc2015-11-15 02:50:53 +01002240 <h2><a name="h2-development" id="h2-development">Development
2241 activities</a></h2>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302242
Steve Kondikae271bc2015-11-15 02:50:53 +01002243 <p>Zeyd Ben-Halim started <em class="small-caps">ncurses</em>
2244 from a previous package pcurses, written by Pavel Curtis. Eric S.
2245 Raymond continued development. J&uuml;rgen Pfeifer wrote most of
2246 the form and menu libraries. Ongoing development work is done by
2247 <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
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
2251 on ncurses</a>.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302252
Steve Kondikae271bc2015-11-15 02:50:53 +01002253 <p>Contact the current maintainers at</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302254
Steve Kondikae271bc2015-11-15 02:50:53 +01002255 <blockquote>
2256 <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
2257 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302258
Steve Kondikae271bc2015-11-15 02:50:53 +01002259 <p>To join the ncurses mailing list, please write email to</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302260
Steve Kondikae271bc2015-11-15 02:50:53 +01002261 <blockquote>
2262 <a href=
2263 "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
2264 </blockquote>containing the line:
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302265
Steve Kondikae271bc2015-11-15 02:50:53 +01002266 <blockquote>
2267 <p><code>subscribe</code>
2268 <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
2269 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302270
Steve Kondikae271bc2015-11-15 02:50:53 +01002271 <p>This list is open to anyone interested in helping with the
2272 development and testing of this package.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302273
Steve Kondikae271bc2015-11-15 02:50:53 +01002274 <p>Beta versions of <em class="small-caps">ncurses</em> and
2275 patches to the current release are made available at</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302276
Steve Kondikae271bc2015-11-15 02:50:53 +01002277 <blockquote>
2278 <p><a href=
2279 "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
2280 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302281
Steve Kondikae271bc2015-11-15 02:50:53 +01002282 <p>There is an archive of the mailing list here:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302283
Steve Kondikae271bc2015-11-15 02:50:53 +01002284 <blockquote>
2285 <p><a href=
2286 "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
2287 (also <a href=
2288 "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
2289 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302290
Steve Kondikae271bc2015-11-15 02:50:53 +01002291 <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
2292 resources</a></h2>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302293
Steve Kondikae271bc2015-11-15 02:50:53 +01002294 <p>The release notes make scattered references to these pages,
2295 which may be interesting by themselves:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302296
Steve Kondikae271bc2015-11-15 02:50:53 +01002297 <ul>
2298 <li><a href=
2299 "http://invisible-island.net/scripts/man2html.html">man2html</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302300
Steve Kondikae271bc2015-11-15 02:50:53 +01002301 <li><a href=
2302 "http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html">
2303 <em class="small-caps">ncurses</em> licensing</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302304
Steve Kondikae271bc2015-11-15 02:50:53 +01002305 <li><a href=
2306 "http://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
2307 versioning in <em class="small-caps">ncurses</em></a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302308
Steve Kondikae271bc2015-11-15 02:50:53 +01002309 <li><a href=
2310 "http://invisible-island.net/ncurses/ncurses-mingw.html">The
2311 MinGW port of <em class="small-caps">ncurses</em></a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302312
Steve Kondikae271bc2015-11-15 02:50:53 +01002313 <li><a href=
2314 "http://invisible-island.net/ncurses/tack.html">tack &ndash;
2315 terminfo action checker</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302316
Steve Kondikae271bc2015-11-15 02:50:53 +01002317 <li><a href=
2318 "http://invisible-island.net/autoconf/portability-tar.html">tar
2319 versus portability</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302320
Steve Kondikae271bc2015-11-15 02:50:53 +01002321 <li><a href=
2322 "http://invisible-island.net/ncurses/tctest.html">tctest
2323 &ndash; termcap library checker</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302324
Steve Kondikae271bc2015-11-15 02:50:53 +01002325 <li><a href=
2326 "http://invisible-island.net/ncurses/ncurses.html#download_database">
2327 Terminal Database</a></li>
2328 </ul>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302329
Steve Kondikae271bc2015-11-15 02:50:53 +01002330 <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
2331 resources</a></h2>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302332
Steve Kondikae271bc2015-11-15 02:50:53 +01002333 <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
2336 Raymond</a>&nbsp;. Unlike the older version, the termcap and
2337 terminfo data are provided in the same file, and provides several
2338 user-definable extensions beyond the X/Open specification.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302339
Steve Kondikae271bc2015-11-15 02:50:53 +01002340 <p>You can find lots of information on terminal-related topics
2341 not covered in the terminfo file at <a href=
2342 "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
2343 Richard Shuford's archive</a>&nbsp;.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302344
Steve Kondikae271bc2015-11-15 02:50:53 +01002345 <div class="nav">
2346 <ul>
2347 <li><a href="#h2-overview">Overview</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302348
Steve Kondikae271bc2015-11-15 02:50:53 +01002349 <li>
2350 <a href="#h2-release-notes">Release Notes</a>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302351
Steve Kondikae271bc2015-11-15 02:50:53 +01002352 <ul>
2353 <li>
2354 <a href="#h3-library">Library improvements</a>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302355
Steve Kondikae271bc2015-11-15 02:50:53 +01002356 <ul>
2357 <li><a href="#h3-lib-setbuf">Output
2358 buffering</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302359
Steve Kondikae271bc2015-11-15 02:50:53 +01002360 <li><a href="#h3-lib-versioning">Symbol
2361 versioning</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302362
Steve Kondikae271bc2015-11-15 02:50:53 +01002363 <li><a href="#h3-lib-other">Miscellaneous</a></li>
2364 </ul>
2365 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302366
Steve Kondikae271bc2015-11-15 02:50:53 +01002367 <li>
2368 <a href="#h3-programs">Program improvements</a>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302369
Steve Kondikae271bc2015-11-15 02:50:53 +01002370 <ul>
2371 <li><a href="#h4-utilities">Utilities</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302372
Steve Kondikae271bc2015-11-15 02:50:53 +01002373 <li><a href="#h4-examples">Examples</a></li>
2374 </ul>
2375 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302376
Steve Kondikae271bc2015-11-15 02:50:53 +01002377 <li><a href="#h3-database">Terminal database</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302378
Steve Kondikae271bc2015-11-15 02:50:53 +01002379 <li><a href="#h3-documentation">Documentation</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302380
Steve Kondikae271bc2015-11-15 02:50:53 +01002381 <li><a href="#h3-bug-fixes">Interesting
2382 bug-fixes</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302383
Steve Kondikae271bc2015-11-15 02:50:53 +01002384 <li>
2385 <a href="#h3-config-config">Configuration changes</a>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302386
Steve Kondikae271bc2015-11-15 02:50:53 +01002387 <ul>
2388 <li><a href="#h4-config-major">Major changes</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302389
Steve Kondikae271bc2015-11-15 02:50:53 +01002390 <li><a href="#h4-config-options">Configuration
2391 options</a></li>
2392 </ul>
2393 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302394
Steve Kondikae271bc2015-11-15 02:50:53 +01002395 <li>
2396 <a href="#h3-portability">Portability</a>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302397
Steve Kondikae271bc2015-11-15 02:50:53 +01002398 <ul>
2399 <li><a href="#h4-port-mingw">MinGW</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302400
Steve Kondikae271bc2015-11-15 02:50:53 +01002401 <li><a href="#h4-port-systems">Other ports</a></li>
2402 </ul>
2403 </li>
2404 </ul>
2405 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302406
Steve Kondikae271bc2015-11-15 02:50:53 +01002407 <li><a href="#h2-features">Features of <em class=
2408 "small-caps">ncurses</em></a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302409
Steve Kondikae271bc2015-11-15 02:50:53 +01002410 <li><a href="#h2-who-uses">Applications using <em class=
2411 "small-caps">ncurses</em></a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302412
Steve Kondikae271bc2015-11-15 02:50:53 +01002413 <li><a href="#h2-development">Development activities</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302414
Steve Kondikae271bc2015-11-15 02:50:53 +01002415 <li><a href="#h2-this-stuff">Related resources</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302416
Steve Kondikae271bc2015-11-15 02:50:53 +01002417 <li><a href="#h2-other-stuff">Other resources</a></li>
2418 </ul>
2419 </div>
2420</body>
2421</html>