blob: 2aa03cfab1312d391346f562014769722e522703 [file] [log] [blame]
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301<!--
micky3879b9f5e72025-07-08 18:04:53 -04002 $Id: announce.html,v 1.70 2024/04/27 18:38:45 tom Exp $
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05303 ****************************************************************************
micky3879b9f5e72025-07-08 18:04:53 -04004 * Copyright 2018-2023,2024 Thomas E. Dickey *
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-->
micky3879b9f5e72025-07-08 18:04:53 -040031<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
Steve Kondikae271bc2015-11-15 02:50:53 +010032<html>
33<head>
34 <meta name="generator" content=
micky3879b9f5e72025-07-08 18:04:53 -040035 "HTML Tidy for HTML5 for Linux version 5.6.0">
36 <title>Announcing ncurses 6.5</title>
37 <link rel="author" href="mailto:bug-ncurses@gnu.org">
Steve Kondikae271bc2015-11-15 02:50:53 +010038 <meta http-equiv="Content-Type" content=
39 "text/html; charset=us-ascii">
40 <style type="text/css">
micky3879b9f5e72025-07-08 18:04:53 -040041 p,li { max-width:700px; }
Steve Kondikae271bc2015-11-15 02:50:53 +010042 dd { max-width:630px; }
micky3879b9f5e72025-07-08 18:04:53 -040043 *.main-name {
44 font-style: italic;
45 font-variant: small-caps;
46 }
47 *.part-name {
48 font-family: "Andale Mono", "Monotype.com", monospace;
49 font-size: 12pt;
50 font-weight: bold;
51 }
52 *.demo-name {
53 font-family: "Andale Mono", "Monotype.com", monospace;
54 font-size: 10pt;
55 }
Steve Kondikae271bc2015-11-15 02:50:53 +010056 </style>
57</head>
Steve Kondikae271bc2015-11-15 02:50:53 +010058<body>
micky3879b9f5e72025-07-08 18:04:53 -040059 <h1 class="no-header">Announcing ncurses 6.5</h1>
Steve Kondikae271bc2015-11-15 02:50:53 +010060
61 <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
62
micky3879b9f5e72025-07-08 18:04:53 -040063 <p>The <span class="main-name">ncurses</span> (new curses)
64 library is a free software emulation of curses in System V
65 Release 4.0 (SVr4), and more. It uses terminfo format, supports
66 pads and color and multiple highlights and forms characters and
Steve Kondikae271bc2015-11-15 02:50:53 +010067 function-key mapping, and has all the other SVr4-curses
micky3879b9f5e72025-07-08 18:04:53 -040068 enhancements over BSD curses. SVr4 curses became the basis of
69 X/Open Curses.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +010070
71 <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
72 that he considered 4.4BSD curses obsolete, and encouraged the
micky3879b9f5e72025-07-08 18:04:53 -040073 keepers of <span class="main-name">unix</span> releases such as
74 BSD/OS, FreeBSD and NetBSD to switch over to <span class=
75 "main-name">ncurses</span>.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +010076
micky3879b9f5e72025-07-08 18:04:53 -040077 <p>Since 1995, <span class="main-name">ncurses</span> has been
Steve Kondikae271bc2015-11-15 02:50:53 +010078 ported to many systems:</p>
79
80 <ul>
81 <li>It is used in almost every system based on the Linux kernel
82 (aside from some embedded applications).</li>
83
84 <li>It is used as the system curses library on OpenBSD, FreeBSD
micky3879b9f5e72025-07-08 18:04:53 -040085 and MacOS.</li>
Steve Kondikae271bc2015-11-15 02:50:53 +010086
87 <li>It is used in environments such as Cygwin and MinGW. The
88 first of these was EMX on OS/2 Warp.</li>
89
90 <li>It is used (though usually not as the <em>system</em>
micky3879b9f5e72025-07-08 18:04:53 -040091 curses) on all of the vendor <span class=
92 "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO,
93 Solaris, Tru64.</li>
Steve Kondikae271bc2015-11-15 02:50:53 +010094
95 <li>It should work readily on any ANSI/POSIX-conforming
micky3879b9f5e72025-07-08 18:04:53 -040096 <span class="main-name">unix</span>.</li>
Steve Kondikae271bc2015-11-15 02:50:53 +010097 </ul>
98
99 <p>The distribution includes the library and support utilities,
100 including</p>
101
102 <ul>
micky3879b9f5e72025-07-08 18:04:53 -0400103 <li><a href="https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class=
104 "part-name">captoinfo</span></a>, a termcap conversion
105 tool</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100106
micky3879b9f5e72025-07-08 18:04:53 -0400107 <li><a href="https://invisible-island.net/ncurses/man/clear.1.html"><span class=
108 "part-name">clear</span></a>, utility for clearing the
109 screen</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100110
micky3879b9f5e72025-07-08 18:04:53 -0400111 <li><a href="https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class=
112 "part-name">infocmp</span></a>, the terminfo decompiler</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100113
micky3879b9f5e72025-07-08 18:04:53 -0400114 <li><a href="https://invisible-island.net/ncurses/man/tabs.1.html"><span class=
115 "part-name">tabs</span></a>, set tabs on a terminal</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100116
micky3879b9f5e72025-07-08 18:04:53 -0400117 <li><a href="https://invisible-island.net/ncurses/man/tic.1m.html"><span class=
118 "part-name">tic</span></a>, the terminfo compiler</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100119
micky3879b9f5e72025-07-08 18:04:53 -0400120 <li><a href="https://invisible-island.net/ncurses/man/toe.1m.html"><span class=
121 "part-name">toe</span></a>, list (table of) terminfo
122 entries</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100123
micky3879b9f5e72025-07-08 18:04:53 -0400124 <li><a href="https://invisible-island.net/ncurses/man/tput.1.html"><span class=
125 "part-name">tput</span></a>, utility for retrieving terminal
126 capabilities in shell scripts</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100127
micky3879b9f5e72025-07-08 18:04:53 -0400128 <li><a href="https://invisible-island.net/ncurses/man/tset.1.html"><span class=
129 "part-name">tset</span></a>, to initialize the terminal</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100130 </ul>
131
132 <p>Full manual pages are provided for the library and tools.</p>
133
micky3879b9f5e72025-07-08 18:04:53 -0400134 <p>The <span class="main-name">ncurses</span> distribution is
135 available at <span class="main-name">ncurses</span>' <a href=
136 "https://invisible-island.net/ncurses/">homepage</a>:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100137
138 <blockquote>
139 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -0400140 "https://invisible-island.net/archives/ncurses/">https://invisible-island.net/archives/ncurses/</a>
141 or<br>
142 <a href=
143 "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
144 </blockquote>
145
146 <p>It is also available at the GNU distribution site</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100147
148 <blockquote>
149 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -0400150 "https://ftp.gnu.org/gnu/ncurses/">https://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100151 </blockquote>
152
153 <h2><a name="h2-release-notes" id="h2-release-notes">Release
154 Notes</a></h2>
155
micky3879b9f5e72025-07-08 18:04:53 -0400156 <p>These notes are for <span class="main-name">ncurses</span>
157 6.5, released <strong>April 27, 2024</strong>.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100158
159 <p>This release is designed to be source-compatible with
micky3879b9f5e72025-07-08 18:04:53 -0400160 <span class="main-name">ncurses</span> 5.0 through 6.4; providing
161 extensions to the application binary interface (ABI). Although
162 the source can still be configured to support the <span class=
163 "main-name">ncurses</span> 5 ABI, the reason for the release is
164 to reflect improvements to the <span class=
165 "main-name">ncurses</span> 6 ABI and the supporting utility
166 programs.</p>
167
168 <p>There are, of course, numerous other improvements, listed in
169 this announcement.</p>
170
171 <p>The most <a href="#h3-bug-fixes">important
172 bug-fixes/improvements</a> dealt with robustness issues. The
173 release notes also mention some other bug-fixes, but are focused
174 on new features and improvements to existing features since
175 <span class="main-name">ncurses</span> 6.4 release.</p>
176
177 <h3><a name="h3-library" id="h3-library">Library improvements</a></h3>
178
179 <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4>
180
181 <p>These are new features:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100182
183 <ul>
184 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400185 <p>The low-level terminfo and termcap interfaces are used
186 both by the higher-level curses library, as well as by many
187 applications.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100188
micky3879b9f5e72025-07-08 18:04:53 -0400189 <p>The functions which convert parameterized terminal
190 capability strings for output to the terminal
191 (<code>tiparm</code> and <code>tparm</code>) analyze the
192 capability string to determine which parameters are strings
193 (i.e., addresses), versus numbers (not addresses).</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100194
micky3879b9f5e72025-07-08 18:04:53 -0400195 <p>The library's analysis of a capability string may differ
196 from the calling application's design if environment
197 variables are used to point to an invalid terminal database.
198 This is a longstanding problem with <em>all</em>
199 implementations of terminfo, dating from the early 1980s.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100200
micky3879b9f5e72025-07-08 18:04:53 -0400201 <p>Two new functions address this problem: by providing a
202 function which allows the calling application to tell ncurses
203 how many string-parameters to expect:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100204
205 <ul>
micky3879b9f5e72025-07-08 18:04:53 -0400206 <li><code>tiscan_s</code> helps applications check
207 formatting capabilities that would be passed to
208 <code>tiparm_s</code>.</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100209
micky3879b9f5e72025-07-08 18:04:53 -0400210 <li><code>tiparm_s</code> provides applications a way to
211 tell ncurses what the expected parameters are for a
212 capability.</li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100213 </ul>
214 </li>
micky3879b9f5e72025-07-08 18:04:53 -0400215
216 <li>
217 <p>The ncurses library supports a compile-time feature
218 (enabled with the configure <code>--enable-check-size</code>
219 option) which simplifies initialization with terminals which
220 do not negotiate window (screen) size. This is done in
221 <code>setupterm</code>, by providing for using ANSI
222 cursor-position report (in user6/user7 terminfo capabilities)
223 to obtain the screen size if neither environment variables or
224 ioctl is used.</p>
225
226 <p>The ncurses test-program with options
227 &ldquo;<code>-E&nbsp;-T</code>&rdquo; demonstrates this
228 feature.</p>
229 </li>
230
231 <li>add functions to query tty-flags in
232 <code>SCREEN</code></li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100233 </ul>
234
micky3879b9f5e72025-07-08 18:04:53 -0400235 <p>This release drops compatibility with obsolete versions of
236 <a href="https://invisible-island.net/ncurses/tack/">tack</a>, e.g., pre-1.08</p>
237
238 <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
239 improvements</a></h4>
240
241 <p>These are improvements to existing features:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100242
243 <ul>
244 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400245 <p>In addition to the new, safer function
246 <code>tiparm_s</code>, ncurses adds checks to make the older
247 <code>tiparm</code>, <code>tparm</code> and
248 <code>tgoto</code> functions safer:</p>
249
250 <ul>
251 <li>
252 <p>the terminfo functions <code>tiparm</code> and
253 <code>tparm</code> ensure that the capability string
254 comes from the terminal description which ncurses loads,
255 rather than from random data which the application
256 happens to have.</p>
257 </li>
258
259 <li>
260 <p>the <code>tgoto</code> function disallows capabilities
261 which its analysis shows will attempt to use string
262 parameters.</p>
263 </li>
264
265 <li>
266 <p>ncurses uses internal functions which correspond to
267 <code>tiparm</code>, and <code>tgoto</code> which ensure
268 that the capability strings which are passed to these
269 functions come from the loaded terminal description.</p>
270 </li>
271 </ul>
Steve Kondikae271bc2015-11-15 02:50:53 +0100272 </li>
273
274 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400275 <p>improve check in <code>lib_tparm.c</code>, ensuring that a
276 char* fits into a <code>TPARM_ARG</code></p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100277 </li>
278
279 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400280 <p>modify <code>_nc_syserr_abort</code> to use
281 <code>_nc_env_access</code>, rather than only checking root
282 uid</p>
283 </li>
284
285 <li>
286 <p>improve thread lock in <code>lib_trace.c</code></p>
287 </li>
288
289 <li>
290 <p>modify <code>flushinp</code> to use file descriptors in
291 <code>SCREEN</code>, rather than from <code>TERMINAL</code>,
292 and check if they are for a terminal, like SVr4</p>
293 </li>
294
295 <li>
296 <p>modify <code>mcprint</code> to use file descriptor in
297 <code>SCREEN</code>, for consistency</p>
298 </li>
299
300 <li>
301 <p>modify internal function <code>_nc_read_file_entry</code>
302 to show relevant filename in warnings</p>
303 </li>
304
305 <li>
306 <p>improve checks in internal function
307 <code>convert_string</code> for corrupt terminfo entry</p>
308 </li>
309
310 <li>
311 <p>review/improve handling of out-of-memory conditions</p>
312 </li>
313
314 <li>
315 <p>limit delays to 30 seconds, i.e., padding delays in
316 terminfo, as well as <code>napms</code> and
317 <code>delay_output</code> functions</p>
318 </li>
319
320 <li>
321 <p>fix reallocation loop for <code>vsnprintf</code> in
322 <code>_nc_sprintf_string</code> by copying the va_list
323 variable</p>
324 </li>
325
326 <li>
327 <p>modify <code>delscreen</code> to limit the windows which
328 it creates to just those associated with the screen</p>
329 </li>
330
331 <li>
332 <p>modify <code>endwin</code> to return an error if it is
333 called again without an intervening screen update</p>
334 </li>
335
336 <li>
337 <p>modify <code>wenclose</code> to handle pads</p>
338 </li>
339
340 <li>
341 <p>eliminate use of <code>PATH_MAX</code> in
342 <code>lib_trace.c</code></p>
343 </li>
344
345 <li>
346 <p>provide for any <code>CCHARW_MAX</code> greater than 1</p>
347 </li>
348 </ul>
349
350 <p>These are corrections to existing features:</p>
351
352 <ul>
353 <li>
354 <p>correct loop termination condition in
355 <code>waddnstr</code> and <code>waddnwstr</code></p>
356 </li>
357
358 <li>
359 <p>improve parsing in internal function
360 <code>_nc_msec_cost</code>, allowing a single decimal
361 point</p>
362 </li>
363
364 <li>
365 <p>amend parameter check for entire string versus specific
366 length in <code>winsnstr</code> and <code>wins_nwstr</code>
367 to match Solaris; make similar correction to
368 <code>wins_nwstr</code></p>
369 </li>
370
371 <li>
372 <p>correct internal function <code>wadd_wch_literal</code>
373 when adding a non-spacing character to a double-width
374 character</p>
375 </li>
376
377 <li>
378 <p>correct definition of <code>Charable</code> macro for
379 non-wide ncurses library .</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100380 </li>
381 </ul>
382
383 <h3><a name="h3-programs" id="h3-programs">Program
384 improvements</a></h3>
385
micky3879b9f5e72025-07-08 18:04:53 -0400386 <p id="h4-utilities">Several improvements were made to the
387 utility programs. Some were done to make the <code>infocmp</code>
388 option &ldquo;<tt>-u</tt>&rdquo; option help refactor the
389 terminal database.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100390
micky3879b9f5e72025-07-08 18:04:53 -0400391 <dl>
392 <dt><span class="part-name"><a href=
393 "https://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp</a></span>
394 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100395
micky3879b9f5e72025-07-08 18:04:53 -0400396 <dd>
397 <ul>
398 <li>
399 <p>add limit checks for processing extended capabilities
400 with the &ldquo;<code>-u</code>&rdquo; option</p>
401 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100402
micky3879b9f5e72025-07-08 18:04:53 -0400403 <li>
404 <p>correct initial alignment of extended capabilities, so
405 that the &ldquo;<code>-u</code>&rdquo; option can be used
406 for more than two terminal types</p>
407 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100408
micky3879b9f5e72025-07-08 18:04:53 -0400409 <li>
410 <p>modify &ldquo;<code>-u</code>&rdquo; option to not
411 report cancels for strings which were already cancelled
412 in a use'd chunk.</p>
413 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100414
micky3879b9f5e72025-07-08 18:04:53 -0400415 <li>
416 <p>correct an assignment &ldquo;<code>-u</code>&rdquo;
417 for detecting if a boolean is unset in a base entry and
418 set in a use'd chunk, i.e., if it was cancelled.</p>
419 </li>
420 </ul>
421 </dd>
Steve Kondikae271bc2015-11-15 02:50:53 +0100422
micky3879b9f5e72025-07-08 18:04:53 -0400423 <dt><span class="part-name"><a href=
424 "https://invisible-island.net/ncurses/man/tic.1m.html">tic</a></span>
425 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100426
micky3879b9f5e72025-07-08 18:04:53 -0400427 <dd>
428 <ul>
429 <li>
430 <p>correct limit-check when dumping tc/use clause via
431 &ldquo;<code>-I</code>&rdquo;</p>
432 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100433
micky3879b9f5e72025-07-08 18:04:53 -0400434 <li>
435 <p>check return value of <code>_nc_save_str</code>, in
436 special case where extended capabilities are processed
437 but the terminal description was not initialized</p>
438 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100439
micky3879b9f5e72025-07-08 18:04:53 -0400440 <li>
441 <p>modify check for multiply defined aliases to report
442 problems within the current runtime rather than for
443 conflicts with pre-existing terminal descriptions.</p>
444 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100445
micky3879b9f5e72025-07-08 18:04:53 -0400446 <li>
447 <p>disallow using <code>$TERMINFO</code> or
448 <code>$HOME/.terminfo</code> when
449 &ldquo;<code>-o</code>&rdquo; option is used</p>
450 </li>
451 </ul>
452 </dd>
Steve Kondikae271bc2015-11-15 02:50:53 +0100453
micky3879b9f5e72025-07-08 18:04:53 -0400454 <dt><span class="part-name"><a href=
455 "https://invisible-island.net/ncurses/man/tput.1.html">tput</a></span> and <span class=
456 "part-name"><a href=
457 "https://invisible-island.net/ncurses/man/tset.1.html">tset</a></span></dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100458
micky3879b9f5e72025-07-08 18:04:53 -0400459 <dd>
460 <ul>
461 <li>
462 <p>add &ldquo;<code>-v</code>&rdquo; option to tput, to
463 show warnings</p>
464 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100465
micky3879b9f5e72025-07-08 18:04:53 -0400466 <li>
467 <p>modify <em>reset</em> command to avoid altering clocal
468 if the terminal uses a modem</p>
469 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100470
micky3879b9f5e72025-07-08 18:04:53 -0400471 <li>
472 <p>modify <em>reset</em> feature to avoid 1-second sleep
473 if running in a pseudo-terminal</p>
474 </li>
475 </ul>
476 </dd>
477 </dl>
Steve Kondikae271bc2015-11-15 02:50:53 +0100478
479 <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
480
micky3879b9f5e72025-07-08 18:04:53 -0400481 <p>Along with the library and utilities, improvements were made
482 to the <a href=
483 "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100484
485 <ul>
486 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400487 <p>modify <code>test_tparm</code> to account for extended
488 capabilities</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100489 </li>
490
491 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400492 <p>corrected mouse mask in <code>test/testcurs.c</code></p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100493 </li>
494
495 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400496 <p>modify <code>test/clip_printw.c</code> to optionally test
497 non-wrapped updates</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100498 </li>
499
500 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400501 <p>modify <code>test/test_mouse.c</code> to use curses api
502 for raw/noraw</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100503 </li>
504
505 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400506 <p>modify <code>test/clip_printw.c</code> to optionally test
507 non-wrapped updates</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100508 </li>
509 </ul>
510
micky3879b9f5e72025-07-08 18:04:53 -0400511 <p>There is one new demo/test programs:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100512
micky3879b9f5e72025-07-08 18:04:53 -0400513 <dl>
514 <dt><span class="part-name"><em>test/test_endwin.c</em></span>
515 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100516
micky3879b9f5e72025-07-08 18:04:53 -0400517 <dd>
518 <p>This program shows the return-status from
519 <code>endwin</code> with different combinations of
520 <code>endwin</code> (repeated), <code>initscr</code>,
521 <code>newterm</code>.</p>
522 </dd>
523 </dl>
Steve Kondikae271bc2015-11-15 02:50:53 +0100524
micky3879b9f5e72025-07-08 18:04:53 -0400525 <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
Steve Kondikae271bc2015-11-15 02:50:53 +0100526
527 <p>There are several new terminal descriptions:</p>
528
529 <ul>
Steve Kondikae271bc2015-11-15 02:50:53 +0100530 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400531 <p><a href=
532 "https://invisible-island.net/ncurses/terminfo.src.html#tic-ansi_apparrows"><tt>ansi+apparrows</tt></a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100533 </li>
534
535 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400536 <p><a href=
537 "https://invisible-island.net/ncurses/terminfo.src.html#tic-contour"><tt>contour</tt></a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100538 </li>
539
540 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400541 <p><a href=
542 "https://invisible-island.net/ncurses/terminfo.src.html#tic-linux_kbs"><tt>linux+kbs</tt></a>
543 for terminals which imitate xterm's behavior with Linux</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100544 </li>
545
546 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400547 <p><a href=
548 "https://invisible-island.net/ncurses/terminfo.src.html#tic-rio"><tt>rio</tt></a>,
549 <a href=
550 "https://invisible-island.net/ncurses/terminfo.src.html#tic-rio-direct"><tt>rio-direct</tt></a></p>
551 </li>
552
553 <li>
554 <p><a href=
555 "https://invisible-island.net/ncurses/terminfo.src.html#tic-mostlike"><tt>mostlike</tt></a></p>
556 </li>
557
558 <li>
559 <p><a href=
560 "https://invisible-island.net/ncurses/terminfo.src.html#tic-ms-vt100-16color"><tt>ms-vt100-16color</tt></a>,
561 <a href=
562 "https://invisible-island.net/ncurses/terminfo.src.html#tic-winconsole"><tt>winconsole</tt></a></p>
563 </li>
564
565 <li>
566 <p><a href=
567 "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt100_noapp"><tt>vt100+noapp</tt></a>,
568 <a href=
569 "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt100_noapp_pc"><tt>vt100+noapp+pc</tt></a>,
570 <a href=
571 "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_app_pc"><tt>xterm+app+pc</tt></a>,
572 <a href=
573 "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_decedit"><tt>xterm+decedit</tt></a>
574 from <a href="https://invisible-island.net/xterm/xterm.log.html#xterm_389">xterm
575 #389</a></p>
576 </li>
577
578 <li>
579 <p><a href=
580 "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty_cursor"><tt>putty+cursor</tt></a>
581 to reflect amending of modified cursor-keys in 2021</p>
582 </li>
583
584 <li>
585 <p><a href=
586 "https://invisible-island.net/ncurses/terminfo.src.html#tic-wezterm"><tt>wezterm</tt></a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100587 </li>
588 </ul>
589
micky3879b9f5e72025-07-08 18:04:53 -0400590 <p>There are many changes to existing terminal descriptions. Some
591 were updates to several descriptions, using the
592 <code>infocmp</code> &ldquo;<code>-u</code>&rdquo; option in a
593 script to determine which <em>building-block</em> entries could
594 be used to replace multiple capability settings (and trim
595 redundant information).</p>
596
597 <p>Other changes include:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100598
599 <ul>
micky3879b9f5e72025-07-08 18:04:53 -0400600 <li>
601 <p><a href=
602 "https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M__Extensions_">document</a>
603 XF, kxIN and kxOUT</p>
604 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100605
micky3879b9f5e72025-07-08 18:04:53 -0400606 <li>
607 <p>add note on <a href=
608 "https://invisible-island.net/ncurses/terminfo.src.html#tic-sun"><tt>sun</tt></a>
609 regarding wscons/cmdtool/shelltool</p>
610 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100611
micky3879b9f5e72025-07-08 18:04:53 -0400612 <li>
613 <p>remove DECCOLM+DECSCLM from <a href=
614 "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot"><tt>foot</tt></a></p>
615 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100616
micky3879b9f5e72025-07-08 18:04:53 -0400617 <li>
618 <p>add xterm+focus to <a href=
619 "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot_base"><tt>foot+base</tt></a></p>
620 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100621
micky3879b9f5e72025-07-08 18:04:53 -0400622 <li>
623 <p>add ecma+strikeout to <a href=
624 "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty"><tt>putty</tt></a></p>
625 </li>
626
627 <li>
628 <p>use CSI 3J in <a href=
629 "https://invisible-island.net/ncurses/terminfo.src.html#tic-vte-2017"><tt>vte-2017</tt></a></p>
630 </li>
631
632 <li>
633 <p>use oldxterm+sm+1006 in <a href=
634 "https://invisible-island.net/ncurses/terminfo.src.html#tic-vte-2014"><tt>vte-2014</tt></a></p>
635 </li>
636
637 <li>
638 <p>modify <a href=
639 "https://invisible-island.net/ncurses/terminfo.src.html#tic-xgterm"><tt>xgterm</tt></a>
640 to work around line-drawing bug</p>
641 </li>
642
643 <li>
644 <p>add xterm focus mode 1004 to <a href=
645 "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
646 as fe/fd capabilities, like vim.</p>
647 </li>
648
649 <li>
650 <p>add xterm+focus to <a href=
651 "https://invisible-island.net/ncurses/terminfo.src.html#tic-alacritty_common"><tt>alacritty+common</tt></a></p>
652 </li>
653
654 <li>
655 <p>add XR/xr, to work with vim, and use RV/rv to denote DA2
656 and its response</p>
657 </li>
658
659 <li>
660 <p>add XF flag to <a href=
661 "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
662 so that termcap applications can be aware of terminals which
663 may support focus in/out</p>
664 </li>
665
666 <li>
667 <p>use xterm+focus in <a href=
668 "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a>
669 and <a href=
670 "https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
671 </li>
672
673 <li>
674 <p>remove xterm+sm+1006 from <a href=
675 "https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
676 </li>
677
678 <li>
679 <p>NetBSD-related fixes for <a href=
680 "https://invisible-island.net/ncurses/terminfo.src.html#tic-x68k"><tt>x68k</tt></a> and
681 <a href=
682 "https://invisible-island.net/ncurses/terminfo.src.html#tic-wsvt25"><tt>wsvt25</tt></a></p>
683 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +0100684 </ul>
685
686 <h3><a name="h3-documentation" id=
687 "h3-documentation">Documentation</a></h3>
688
689 <p>As usual, this release</p>
690
691 <ul>
692 <li>
693 <p>improves documentation by describing new features,</p>
694 </li>
695
696 <li>
697 <p>attempts to improve the description of features which
698 users have found confusing</p>
699 </li>
700
701 <li>
702 <p>fills in overlooked descriptions of features which were
micky3879b9f5e72025-07-08 18:04:53 -0400703 described in the <a href="https://invisible-island.net/ncurses/NEWS.html">NEWS</a> file
Steve Kondikae271bc2015-11-15 02:50:53 +0100704 but treated sketchily in manual pages.</p>
705 </li>
706 </ul>
707
micky3879b9f5e72025-07-08 18:04:53 -0400708 <p>In addition to providing background information to explain
709 these features and show how they evolved, there are corrections,
710 clarifications, etc.:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100711
712 <ul>
713 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400714 <p>Corrections:</p>
715
716 <ul>
717 <li>
718 <p>add assignment in <code>CF_MAN_PAGES</code> to fill in
719 value for <code>TERMINFO_DIRS</code> in ncurses, terminfo
720 and tic manpages.</p>
721 </li>
722
723 <li>
724 <p>clarify interaction of <code>-R</code> option versus
725 <code>-C</code>, <code>-I</code> and <code>-r</code> in
726 <code>infocmp</code> manpage.</p>
727 </li>
728
729 <li>
730 <p>correct manpage description of panel_hidden.</p>
731 </li>
732
733 <li>
734 <p>improve manpage description for addch versus unctrl
735 format used for non-printable characters.</p>
736 </li>
737
738 <li>
739 <p>improve manpages discussing file descriptors in
740 low-level functions.</p>
741 </li>
742
743 <li>
744 <p>improve description of search rules for terminal
745 descriptions in terminfo manpage.</p>
746 </li>
747
748 <li>
749 <p>modify dist.mk to avoid passing developer's comments
750 in manpages into the generated html documentation.</p>
751 </li>
752
753 <li>
754 <p>modify test-package "ncurses6-doc" to use
755 manpage-aliases, which in turn required a change to the
756 configure script to factor in the extra-suffix option
757 when deriving alias names.</p>
758 </li>
759 </ul>
Steve Kondikae271bc2015-11-15 02:50:53 +0100760 </li>
761
762 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400763 <p>New/improved history and portability sections:</p>
764
765 <ul>
766 <li>
767 <p>add information about "ttycap", termcap's forerunner,
768 to tset.1</p>
769 </li>
770
771 <li>
772 <p>document limitations of tparm, and error-returns in
773 curs_terminfo.3x</p>
774 </li>
775
776 <li>
777 <p>document limitations of tgoto, and error-returns in
778 curs_termcap.3x</p>
779 </li>
780 </ul>
781 </li>
782
783 <li>
784 <p>Other improvements:</p>
785
786 <ul>
787 <li>
788 <p>This release has many changes to improve the
789 formatting and style of the manpages.</p>
790 </li>
791
792 <li>
793 <p>Manpages now use consistent section-naming, page
794 headers and footers (including the modification date for
795 each page).</p>
796 </li>
797
798 <li>
799 <p>Table layout has been revised.</p>
800 </li>
801 </ul>
Steve Kondikae271bc2015-11-15 02:50:53 +0100802 </li>
803 </ul>
804
micky3879b9f5e72025-07-08 18:04:53 -0400805 <p>There are no new manual pages (all of the manual page updates
806 are to existing pages).</p>
807
Steve Kondikae271bc2015-11-15 02:50:53 +0100808 <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
809 bug-fixes</a></h3>
810
micky3879b9f5e72025-07-08 18:04:53 -0400811 <p>The changes to <tt>tparm</tt>, <tt>tgoto</tt> which improve
812 the design of the low-level interfaces are <em>interesting</em>,
813 but are not bug-fixes <em>per se</em>.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100814
815 <h3><a name="h3-config-config" id=
816 "h3-config-config">Configuration changes</a></h3>
817
818 <h4><a name="h4-config-major" id="h4-config-major">Major
819 changes</a></h4>
820
micky3879b9f5e72025-07-08 18:04:53 -0400821 <p>These are the major changes (aside from introducing <a href=
822 "#h4-new-library"><tt>tiparm_s</tt></a>):</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100823
824 <ul>
825 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400826 <p>use wide-character (ncursesw) by default</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100827 </li>
828
829 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400830 <p>use opaque typedefs by default</p>
831 </li>
832 </ul>
Steve Kondikae271bc2015-11-15 02:50:53 +0100833
micky3879b9f5e72025-07-08 18:04:53 -0400834 <p>However, most of the work on configure scripts was done to
835 reduce warnings within the configure script:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100836
micky3879b9f5e72025-07-08 18:04:53 -0400837 <ul>
838 <li>
839 <p>intrusive warnings from GNU grep regarding fgrep and
840 egrep</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100841 </li>
842
843 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400844 <p>fatal errors in compile-checks, arising from recent
845 &ldquo;Modern&nbsp;C&rdquo; efforts by some developers which
846 caused longstanding configure checks to fail.</p>
847
848 <p>After repairing the configure script, none of that
849 activity affected ncurses because stricter warnings are used
850 routinely in development.</p>
851 </li>
852 </ul>
853
854 <p>Other improvements made to configure checks include</p>
855
856 <ul>
857 <li>
858 <p>use <a href=
859 "https://invisible-island.net/ncurses/INSTALL.html#option:enable-string-hacks">string-hacks</a>
860 in alloc_entry.c, alloc_type.c and hardscroll.c, overlooked
861 due to compiler changes in recent OpenBSD releases</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100862 </li>
863
864 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400865 <p>revise progs.priv.h to provide for NC_ISATTY reuse</p>
866 </li>
867
868 <li>
869 <p>configure check for MB_LEN_MAX provides warning as
870 needed</p>
871 </li>
872
873 <li>
874 <p>trim a space after some "-R" options, fixing builds for
875 applications built using clang and ncurses on Solaris</p>
876 </li>
877
878 <li>
879 <p>work around misconfiguration of MacPorts gcc13, which
880 exposes invalid definition of <tt>MB_LEN_MAX</tt> in gcc's
881 fallback copy of <tt>limits.h</tt></p>
882 </li>
883
884 <li>
885 <p>modified experimental Windows driver works with xterm
886 mouse protocol</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100887 </li>
888 </ul>
889
890 <h4><a name="h4-config-options" id=
891 "h4-config-options">Configuration options</a></h4>
892
micky3879b9f5e72025-07-08 18:04:53 -0400893 <p>There are a few new configure options:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100894
895 <dl>
micky3879b9f5e72025-07-08 18:04:53 -0400896 <dt><a href=
897 "https://invisible-island.net/ncurses/INSTALL.html#option:disable-setuid-environ"><tt>--disable-setuid-environ</tt></a>
898 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100899
900 <dd>
micky3879b9f5e72025-07-08 18:04:53 -0400901 <p>Compile with environment restriction, so certain
902 environment variables are not available when running via a
903 setuid/setgid application. These are (for example
904 <tt>$TERMINFO</tt>) those that allow the search path for the
905 terminfo or termcap entry to be customized.</p>
906
907 <p>A setuid/setgid application inherits its environment
908 variables from the current user, in contrast to sudo which
909 may limit the environment variables that ncurses uses.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100910 </dd>
911
micky3879b9f5e72025-07-08 18:04:53 -0400912 <dt><a href=
913 "https://invisible-island.net/ncurses/INSTALL.html#option:enable-check-size"><tt>--enable-check-size</tt></a>
914 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100915
916 <dd>
micky3879b9f5e72025-07-08 18:04:53 -0400917 <p>Compile-in feature to detect screensize for terminals
918 which do not advertise their screensize, e.g., serial
919 terminals.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100920 </dd>
921
micky3879b9f5e72025-07-08 18:04:53 -0400922 <dt><a href=
923 "https://invisible-island.net/ncurses/INSTALL.html#option:with-abi-altered"><tt>--with-abi-altered=<em>NUM</em></tt></a>
924 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100925
926 <dd>
micky3879b9f5e72025-07-08 18:04:53 -0400927 <p>Override the displayed (rather than compiled-in) ABI. Only
928 packagers who have created configurations where the ABI
929 differs from ncurses should be interested in this option.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100930 </dd>
931
micky3879b9f5e72025-07-08 18:04:53 -0400932 <dt><a href=
933 "https://invisible-island.net/ncurses/INSTALL.html#option:with-strip-program"><tt>--with-strip-program=<em>XXX</em></tt></a>
934 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100935
936 <dd>
micky3879b9f5e72025-07-08 18:04:53 -0400937 <p>When stripping executables during install, use the
938 specified program rather than &ldquo;strip&rdquo; overriding
939 program chosen by the install program for stripping
940 executables.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100941 </dd>
942 </dl>
943
micky3879b9f5e72025-07-08 18:04:53 -0400944 <p>These configure options are modified:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100945
micky3879b9f5e72025-07-08 18:04:53 -0400946 <dl>
947 <dt><a href=
948 "https://invisible-island.net/ncurses/INSTALL.html#option:with-pkg-config-libdir"><tt>--with-pkg-config-libdir[=<em>DIR</em>]</tt></a>
949 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +0100950
micky3879b9f5e72025-07-08 18:04:53 -0400951 <dd>
952 <p>The optional <em>DIR</em> parameter can now be
953 &ldquo;auto&rdquo; to automatically use pkg-config's library
954 directory.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100955
micky3879b9f5e72025-07-08 18:04:53 -0400956 <p>The default is <tt>$(libdir)</tt>.</p>
957 </dd>
958
959 <dt><a href=
960 "https://invisible-island.net/ncurses/INSTALL.html#option:with-xterm-kbs"><tt>--with-xterm-kbs[=<em>XXX</em>]</tt></a>
961 </dt>
962
963 <dd>
964 <p>The default is &ldquo;auto&rdquo; which tells the
965 configure script to choose BS or DEL according to platform
966 defaults.</p>
967 </dd>
968 </dl>
969
970 <h3><a name="h3-portability" id="h3-portability">Portability</a></h3>
971
972 <p>Many of the portability changes are implemented via the
973 configure script:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100974
975 <ul>
976 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400977 <p>add/use configure check for <code>clock_gettime</code>, to
978 supersede <code>gettimeofday</code>.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100979 </li>
980
981 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400982 <p>modify configure script check for pkg-config library
983 directory to take into account an older version 0.15.0 which
984 used PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100985 </li>
986
987 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400988 <p>allow for MinGW32-/64-bit configurations to use
989 _DEFAULT_SOURCE</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100990 </li>
991
992 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400993 <p>modify CF_XOPEN_SOURCE macro's amend default case to avoid
994 undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined</p>
Steve Kondikae271bc2015-11-15 02:50:53 +0100995 </li>
996
997 <li>
micky3879b9f5e72025-07-08 18:04:53 -0400998 <p>updated configure script macro CF_XOPEN_SOURCE, for
999 uClibc-ng</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001000 </li>
1001
1002 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001003 <p>modify version-check for gcc/g++, now works for msys2</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001004 </li>
1005
1006 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001007 <p>build-fixes related to configure-options and/or
1008 platform:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001009
1010 <ul>
micky3879b9f5e72025-07-08 18:04:53 -04001011 <li>fix for <tt>--enable-fvisibility</tt></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001012
micky3879b9f5e72025-07-08 18:04:53 -04001013 <li>fix for unusual values of
1014 <tt>--with-rel-version</tt></li>
1015
1016 <li>fix for unusual values of
1017 <tt>--with-abi-version</tt></li>
1018
1019 <li>fix for <tt>--disable-tcap-names</tt></li>
1020
1021 <li>fix for termcap in <tt>nc_access.h</tt></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001022 </ul>
1023 </li>
1024
1025 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001026 <p>other configure-script improvements:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001027
micky3879b9f5e72025-07-08 18:04:53 -04001028 <ul>
1029 <li>recent msys2 headers work with
1030 <tt>_DEFAULT_SOURCE</tt>; amend check</li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001031
micky3879b9f5e72025-07-08 18:04:53 -04001032 <li>use <tt>$ac_includes_default</tt> in most cases where
1033 stdlib.h should work</li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001034
micky3879b9f5e72025-07-08 18:04:53 -04001035 <li>use <tt>#error</tt> consistently vs "make an
1036 error"</li>
1037
1038 <li>add configure macro for <tt>gettimeofday</tt> vs inline
1039 check</li>
1040 </ul>
Steve Kondikae271bc2015-11-15 02:50:53 +01001041 </li>
1042 </ul>
1043
micky3879b9f5e72025-07-08 18:04:53 -04001044 <p>Here are some of the other portability fixes:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001045
1046 <ul>
1047 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001048 <p>modify configure scripts/makefiles to omit
1049 <tt>KEY_RESIZE</tt> if the corresponding <tt>SIGWINCH</tt>
1050 feature is disabled</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001051 </li>
1052
1053 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001054 <p>increase <tt>MB_CUR_MAX</tt> to 16, matching glibc's
1055 <tt>MB_LEN_MAX</tt></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001056 </li>
1057
1058 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001059 <p>add BSD <tt>erase2</tt> to characters handled by
1060 tset/reset</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001061 </li>
1062
1063 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001064 <p>use <tt>getauxval</tt> when available, to improve
1065 <tt>setuid</tt>/<tt>setgid</tt> checks</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001066 </li>
1067
1068 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001069 <p>set <tt>dwShareMode</tt> in calls to
1070 <tt>CreateConsoleScreenBuffer</tt></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001071 </li>
1072
1073 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001074 <p>use <tt>CreateFile</tt> with "<tt>CONIN$</tt>",
1075 "<tt>CONOUT$</tt>" rather than <tt>GetStdHandle</tt> to
1076 obtain a handle on the actual console, avoiding redirection
1077 in the MinGW/Win32 configurations</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001078 </li>
1079
1080 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001081 <p>modify MinGW driver to return <tt>KEY_BACKSPACE</tt> when
1082 an unmodified <tt>VK_BACK</tt> virtual key is entered</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001083 </li>
1084
1085 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001086 <p>modify MinGW configuration to provide for running in
1087 MSYS/MSYS2 shells, assuming ConPTY support</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001088 </li>
1089 </ul>
micky3879b9f5e72025-07-08 18:04:53 -04001090
Steve Kondikae271bc2015-11-15 02:50:53 +01001091 <hr>
1092
micky3879b9f5e72025-07-08 18:04:53 -04001093 <h2><a name="h2-features" id="h2-features">Features of
1094 <span class="main-name">ncurses</span></a></h2>
Steve Kondikae271bc2015-11-15 02:50:53 +01001095
micky3879b9f5e72025-07-08 18:04:53 -04001096 <p>The <span class="main-name">ncurses</span> package is fully
Steve Kondikae271bc2015-11-15 02:50:53 +01001097 upward-compatible with SVr4 (System V Release 4) curses:</p>
1098
1099 <ul>
1100 <li>
1101 <p>All of the SVr4 calls have been implemented (and are
1102 documented).</p>
1103 </li>
1104
1105 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001106 <p><span class="main-name">ncurses</span> supports the
1107 features of SVr4 curses including keyboard mapping, color,
1108 form drawing with ACS characters, and automatic recognition
Steve Kondikae271bc2015-11-15 02:50:53 +01001109 of keypad and function keys.</p>
1110 </li>
1111
1112 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001113 <p><span class="main-name">ncurses</span> provides work-alike
1114 replacements of SVr4 supplemental libraries based on curses,
1115 but which were not specified by X/Open Curses:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001116
1117 <ul>
1118 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001119 <p>the panel library, supporting a stack of windows with
1120 backing store</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001121 </li>
1122
1123 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001124 <p>the menu library, supporting a uniform but flexible
1125 interface for menu programming</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001126 </li>
1127
1128 <li>
1129 <p>the form library, supporting data collection through
micky3879b9f5e72025-07-08 18:04:53 -04001130 on-screen forms</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001131 </li>
1132 </ul>
1133 </li>
1134
1135 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001136 <p><span class="main-name">ncurses</span>'s terminal database
1137 is fully compatible with that used by SVr4 curses.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001138
1139 <ul>
micky3879b9f5e72025-07-08 18:04:53 -04001140 <li>
1141 <p><span class="main-name">ncurses</span> supports
1142 user-defined capabilities that it can see, but which are
1143 hidden from SVr4 curses applications using the
1144 <em>same</em> terminal database.</p>
1145 </li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001146
1147 <li>
1148 <p>It can be optionally configured to match the format
1149 used in related systems such as AIX and Tru64.</p>
1150 </li>
1151
1152 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001153 <p>Alternatively, <span class="main-name">ncurses</span>
1154 can be configured to use hashed databases rather than the
Steve Kondikae271bc2015-11-15 02:50:53 +01001155 directory of files used by SVr4 curses.</p>
1156 </li>
1157 </ul>
1158 </li>
1159
1160 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001161 <p>The <span class="main-name">ncurses</span> utilities have
Steve Kondikae271bc2015-11-15 02:50:53 +01001162 options to allow you to filter terminfo entries for use with
1163 less capable <em>curses</em>/<em>terminfo</em> versions such
micky3879b9f5e72025-07-08 18:04:53 -04001164 as the HP-UX and AIX ports.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001165 </li>
1166 </ul>
1167
micky3879b9f5e72025-07-08 18:04:53 -04001168 <p>The <span class="main-name">ncurses</span> package also has
1169 many useful extensions over SVr4:</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001170
1171 <ul>
1172 <li>
1173 <p>The API is 8-bit clean and base-level conformant with the
micky3879b9f5e72025-07-08 18:04:53 -04001174 X/Open Curses specification, XSI curses (that is, it
1175 implements all <em>BASE</em> level features, and almost all
1176 <em>EXTENDED</em> features). It includes many function calls
1177 not supported under SVr4 curses (but portability of all calls
1178 is documented so you can use the SVr4 subset only).</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001179 </li>
1180
1181 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001182 <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
Steve Kondikae271bc2015-11-15 02:50:53 +01001183 can write to the rightmost-bottommost corner of the screen if
1184 your terminal has an insert-character capability.</p>
1185 </li>
1186
1187 <li>
1188 <p>Ada95 and C++ bindings.</p>
1189 </li>
1190
1191 <li>
1192 <p>Support for mouse event reporting with X Window xterm and
1193 FreeBSD and OS/2 console windows.</p>
1194 </li>
1195
1196 <li>
1197 <p>Extended mouse support via Alessandro Rubini's gpm
1198 package.</p>
1199 </li>
1200
1201 <li>
1202 <p>The function <code>wresize</code> allows you to resize
1203 windows, preserving their data.</p>
1204 </li>
1205
1206 <li>
1207 <p>The function <code>use_default_colors</code> allows you to
1208 use the terminal's default colors for the default color pair,
1209 achieving the effect of transparent colors.</p>
1210 </li>
1211
1212 <li>
1213 <p>The functions <code>keyok</code> and
1214 <code>define_key</code> allow you to better control the use
micky3879b9f5e72025-07-08 18:04:53 -04001215 of function keys, e.g., disabling the <span class=
1216 "main-name">ncurses</span> KEY_MOUSE, or by defining more
1217 than one control sequence to map to a given key code.</p>
1218 </li>
1219
1220 <li>
1221 <p>Support for direct-color terminals, such as modern
1222 xterm.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001223 </li>
1224
1225 <li>
1226 <p>Support for 256-color terminals, such as modern xterm.</p>
1227 </li>
1228
1229 <li>
1230 <p>Support for 16-color terminals, such as <em>aixterm</em>
1231 and <em>modern xterm</em>.</p>
1232 </li>
1233
1234 <li>
1235 <p>Better cursor-movement optimization. The package now
1236 features a cursor-local-movement computation more efficient
1237 than either BSD's or System V's.</p>
1238 </li>
1239
1240 <li>
1241 <p>Super hardware scrolling support. The screen-update code
1242 incorporates a novel, simple, and cheap algorithm that
1243 enables it to make optimal use of hardware scrolling,
1244 line-insertion, and line-deletion for screen-line movements.
1245 This algorithm is more powerful than the 4.4BSD curses
1246 <code>quickch</code> routine.</p>
1247 </li>
1248
1249 <li>
1250 <p>Real support for terminals with the magic-cookie glitch.
1251 The screen-update code will refrain from drawing a highlight
1252 if the magic- cookie unattributed spaces required just before
1253 the beginning and after the end would step on a non-space
1254 character. It will automatically shift highlight boundaries
1255 when doing so would make it possible to draw the highlight
1256 without changing the visual appearance of the screen.</p>
1257 </li>
1258
1259 <li>
1260 <p>It is possible to generate the library with a list of
1261 pre-loaded fallback entries linked to it so that it can serve
1262 those terminal types even when no terminfo tree or termcap
1263 file is accessible (this may be useful for support of
1264 screen-oriented programs that must run in single-user
1265 mode).</p>
1266 </li>
1267
1268 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001269 <p>The <a href="https://invisible-island.net/ncurses/man/tic.1m.html"><span class=
1270 "part-name">tic</span></a>/<a href=
1271 "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a> utility
1272 provided with <span class="main-name">ncurses</span> has the
1273 ability to translate many termcaps from the XENIX, IBM and
1274 AT&amp;T extension sets.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001275 </li>
1276
1277 <li>
1278 <p>A BSD-like <a href=
micky3879b9f5e72025-07-08 18:04:53 -04001279 "https://invisible-island.net/ncurses/man/tset.1.html"><span class=
1280 "part-name">tset</span></a> utility is provided.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001281 </li>
1282
1283 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001284 <p>The <span class="main-name">ncurses</span> library and
Steve Kondikae271bc2015-11-15 02:50:53 +01001285 utilities will automatically read terminfo entries from
1286 $HOME/.terminfo if it exists, and compile to that directory
1287 if it exists and the user has no write access to the system
1288 directory. This feature makes it easier for users to have
1289 personal terminfo entries without giving up access to the
1290 system terminfo directory.</p>
1291 </li>
1292
1293 <li>
1294 <p>You may specify a path of directories to search for
1295 compiled descriptions with the environment variable
1296 TERMINFO_DIRS (this generalizes the feature provided by
1297 TERMINFO under stock System V.)</p>
1298 </li>
1299
1300 <li>
1301 <p>In terminfo source files, use capabilities may refer not
1302 just to other entries in the same source file (as in System
1303 V) but also to compiled entries in either the system terminfo
1304 directory or the user's $HOME/.terminfo directory.</p>
1305 </li>
1306
1307 <li>
1308 <p>The table-of-entries utility <a href=
micky3879b9f5e72025-07-08 18:04:53 -04001309 "https://invisible-island.net/ncurses/man/toe.1m.html"><span class=
1310 "part-name">toe</span></a> makes it easy for users to see
1311 exactly what terminal types are available on the system.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001312 </li>
1313
1314 <li>
micky3879b9f5e72025-07-08 18:04:53 -04001315 <p>X/Open Curses permits most functions it specifies to be
1316 made available as macros as well. ncurses does this</p>
1317
1318 <ul>
1319 <li>to improve performance, e.g., for operations composed
1320 of simpler functions such as cursor movement following by
1321 adding text to the screen,</li>
1322
1323 <li>to simplify the implementation by reusing functions
1324 which use common parameters, e.g., the standard screen
1325 <code>stdscr</code>, and</li>
1326
1327 <li>to provide functions that return values via their
1328 parameters</li>
1329 </ul>
1330
1331 <p>Except for the last case, ncurses provides a non-macro
1332 implementation of the function. If the macro definition is
1333 disabled with <code>#undef</code>, or by defining
1334 <code>NCURSES_NOMACROS</code> the function may be linked (and
1335 its calls will be checked against the prototype).</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001336 </li>
1337
1338 <li>
1339 <p>Extensive documentation is provided (see the <em><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001340 "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">Additional
1341 Reading</a></em> section of the <em><a href=
1342 "https://invisible-island.net/ncurses/ncurses.faq.html"><span class=
1343 "main-name">ncurses</span> FAQ</a></em> for online
1344 documentation).</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001345 </li>
1346 </ul>
1347
1348 <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
micky3879b9f5e72025-07-08 18:04:53 -04001349 <span class="main-name">ncurses</span></a></h2>
Steve Kondikae271bc2015-11-15 02:50:53 +01001350
micky3879b9f5e72025-07-08 18:04:53 -04001351 <p>The <span class="main-name">ncurses</span> distribution
1352 includes a selection of test programs (including a few games).
1353 These are available separately as <a href=
1354 "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001355
1356 <p>The ncurses library has been tested with a wide variety of
1357 applications including:</p>
1358
1359 <blockquote>
1360 <dl>
micky3879b9f5e72025-07-08 18:04:53 -04001361 <dt><span class="part-name">aptitude</span>
1362 </dt>
1363
1364 <dd>
1365 <p>FrontEnd to Apt, the debian package manager</p>
1366
1367 <p><a href=
1368 "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
1369 </dd>
1370
1371 <dt><span class="part-name">cdk</span>
1372 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +01001373
1374 <dd>
1375 <p>Curses Development Kit</p>
1376
micky3879b9f5e72025-07-08 18:04:53 -04001377 <p><a href="https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br>
Steve Kondikae271bc2015-11-15 02:50:53 +01001378 </p>
1379 </dd>
1380
micky3879b9f5e72025-07-08 18:04:53 -04001381 <dt><span class="part-name">ded</span>
1382 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +01001383
1384 <dd>
1385 <p>directory-editor</p>
1386
micky3879b9f5e72025-07-08 18:04:53 -04001387 <p><a href="https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001388 </dd>
1389
micky3879b9f5e72025-07-08 18:04:53 -04001390 <dt><span class="part-name">dialog</span>
1391 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +01001392
1393 <dd>
1394 <p>the underlying application used in Slackware's setup,
1395 and the basis for similar install/configure applications on
1396 many systems.</p>
1397
micky3879b9f5e72025-07-08 18:04:53 -04001398 <p><a href="https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001399 </dd>
1400
micky3879b9f5e72025-07-08 18:04:53 -04001401 <dt><span class="part-name">lynx</span>
1402 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +01001403
1404 <dd>
1405 <p>the text WWW browser</p>
1406
1407 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001408 "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001409 </dd>
1410
micky3879b9f5e72025-07-08 18:04:53 -04001411 <dt><span class="part-name">mutt</span>
1412 </dt>
Steve Kondikae271bc2015-11-15 02:50:53 +01001413
1414 <dd>
1415 <p>mail utility</p>
1416
micky3879b9f5e72025-07-08 18:04:53 -04001417 <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001418 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301419
micky3879b9f5e72025-07-08 18:04:53 -04001420 <dt><span class="part-name">ncftp</span>
1421 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301422
Steve Kondikae271bc2015-11-15 02:50:53 +01001423 <dd>
1424 <p>file-transfer utility</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301425
Steve Kondikae271bc2015-11-15 02:50:53 +01001426 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001427 "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001428 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301429
micky3879b9f5e72025-07-08 18:04:53 -04001430 <dt><span class="part-name">nvi</span>
1431 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301432
Steve Kondikae271bc2015-11-15 02:50:53 +01001433 <dd>
1434 <p>New vi uses ncurses.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301435
Steve Kondikae271bc2015-11-15 02:50:53 +01001436 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001437 "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page">
1438 https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br>
1439
Steve Kondikae271bc2015-11-15 02:50:53 +01001440 </p>
1441 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301442
micky3879b9f5e72025-07-08 18:04:53 -04001443 <dt><span class="part-name">ranger</span>
1444 </dt>
1445
1446 <dd>
1447 <p>A console file manager with VI key bindings in
1448 <em>Python</em>.</p>
1449
1450 <p><a href=
1451 "https://ranger.github.io/">https://ranger.github.io/</a></p>
1452 </dd>
1453
1454 <dt><span class="part-name">tin</span>
1455 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301456
Steve Kondikae271bc2015-11-15 02:50:53 +01001457 <dd>
1458 <p>newsreader, supporting color, MIME</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301459
micky3879b9f5e72025-07-08 18:04:53 -04001460 <p><a href="http://www.tin.org/">http://www.tin.org/</a></p>
1461 </dd>
1462
1463 <dt><span class="part-name">vifm</span>
1464 </dt>
1465
1466 <dd>
1467 <p>File manager with vi like keybindings</p>
1468
1469 <p><a href="https://vifm.info/">https://vifm.info/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001470 </dd>
1471 </dl>
1472 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301473
micky3879b9f5e72025-07-08 18:04:53 -04001474 <p>as well as some that use <span class=
1475 "main-name">ncurses</span> for the terminfo support alone:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301476
Steve Kondikae271bc2015-11-15 02:50:53 +01001477 <blockquote>
1478 <dl>
micky3879b9f5e72025-07-08 18:04:53 -04001479 <dt><span class="part-name">minicom</span>
1480 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301481
Steve Kondikae271bc2015-11-15 02:50:53 +01001482 <dd>
1483 <p>terminal emulator for serial modem connections</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301484
Steve Kondikae271bc2015-11-15 02:50:53 +01001485 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001486 "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001487 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301488
micky3879b9f5e72025-07-08 18:04:53 -04001489 <dt><span class="part-name">mosh</span>
1490 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301491
Steve Kondikae271bc2015-11-15 02:50:53 +01001492 <dd>
1493 <p>a replacement for <code>ssh</code>.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301494
micky3879b9f5e72025-07-08 18:04:53 -04001495 <p><a href="https://mosh.org/">https://mosh.org/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001496 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301497
micky3879b9f5e72025-07-08 18:04:53 -04001498 <dt><span class="part-name">tack</span>
1499 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301500
Steve Kondikae271bc2015-11-15 02:50:53 +01001501 <dd>
1502 <p>terminfo action checker</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301503
micky3879b9f5e72025-07-08 18:04:53 -04001504 <p><a href="https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001505 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301506
micky3879b9f5e72025-07-08 18:04:53 -04001507 <dt><span class="part-name">tmux</span>
1508 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301509
Steve Kondikae271bc2015-11-15 02:50:53 +01001510 <dd>
1511 <p>terminal multiplexor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301512
Steve Kondikae271bc2015-11-15 02:50:53 +01001513 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001514 "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001515 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301516
micky3879b9f5e72025-07-08 18:04:53 -04001517 <dt><span class="part-name">vile</span>
1518 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301519
Steve Kondikae271bc2015-11-15 02:50:53 +01001520 <dd>
micky3879b9f5e72025-07-08 18:04:53 -04001521 <p><em>vi-like-emacs</em> may be built to use the terminfo,
1522 termcap or curses interfaces.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301523
micky3879b9f5e72025-07-08 18:04:53 -04001524 <p><a href="https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001525 </dd>
1526 </dl>
1527 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301528
Steve Kondikae271bc2015-11-15 02:50:53 +01001529 <p>and finally, those which use only the termcap interface:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301530
Steve Kondikae271bc2015-11-15 02:50:53 +01001531 <blockquote>
1532 <dl>
micky3879b9f5e72025-07-08 18:04:53 -04001533 <dt><span class="part-name">emacs</span>
1534 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301535
Steve Kondikae271bc2015-11-15 02:50:53 +01001536 <dd>
1537 <p>text editor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301538
Steve Kondikae271bc2015-11-15 02:50:53 +01001539 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001540 "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001541 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301542
micky3879b9f5e72025-07-08 18:04:53 -04001543 <dt><span class="part-name">less</span>
1544 </dt>
1545
1546 <dd>
1547 <p>The most commonly used <em>pager</em> (a program that
1548 displays text files).</p>
1549
1550 <p><a href=
1551 "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
1552 </dd>
1553
1554 <dt><span class="part-name">screen</span>
1555 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301556
Steve Kondikae271bc2015-11-15 02:50:53 +01001557 <dd>
1558 <p>terminal multiplexor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301559
Steve Kondikae271bc2015-11-15 02:50:53 +01001560 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001561 "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001562 </dd>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301563
micky3879b9f5e72025-07-08 18:04:53 -04001564 <dt><span class="part-name">vim</span>
1565 </dt>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301566
Steve Kondikae271bc2015-11-15 02:50:53 +01001567 <dd>
1568 <p>text editor</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301569
micky3879b9f5e72025-07-08 18:04:53 -04001570 <p><a href="https://www.vim.org/">https://www.vim.org/</a></p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001571 </dd>
1572 </dl>
1573 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301574
Steve Kondikae271bc2015-11-15 02:50:53 +01001575 <h2><a name="h2-development" id="h2-development">Development
1576 activities</a></h2>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301577
micky3879b9f5e72025-07-08 18:04:53 -04001578 <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
Steve Kondikae271bc2015-11-15 02:50:53 +01001579 from a previous package pcurses, written by Pavel Curtis. Eric S.
1580 Raymond continued development. J&uuml;rgen Pfeifer wrote most of
micky3879b9f5e72025-07-08 18:04:53 -04001581 the form and menu libraries.</p>
1582
1583 <p>Ongoing development work is done by <a href=
1584 "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas
1585 E. Dickey has acted as the maintainer for the Free Software
1586 Foundation, which held a <a href=
1587 "https://invisible-island.net/ncurses/ncurses-license.html">copyright on ncurses</a> for
1588 releases 4.2 through 6.1. Following the release of ncurses 6.1,
1589 effective as of release 6.2, copyright for ncurses reverted to
1590 Thomas E. Dickey (see the <a href=
1591 "https://invisible-island.net/ncurses/ncurses.faq.html#relicensed">ncurses FAQ</a> for
1592 additional information).</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301593
Steve Kondikae271bc2015-11-15 02:50:53 +01001594 <p>Contact the current maintainers at</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301595
Steve Kondikae271bc2015-11-15 02:50:53 +01001596 <blockquote>
1597 <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
1598 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301599
Steve Kondikae271bc2015-11-15 02:50:53 +01001600 <p>To join the ncurses mailing list, please write email to</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301601
Steve Kondikae271bc2015-11-15 02:50:53 +01001602 <blockquote>
1603 <a href=
1604 "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
micky3879b9f5e72025-07-08 18:04:53 -04001605 </blockquote>
1606 containing the line:
Steve Kondikae271bc2015-11-15 02:50:53 +01001607 <blockquote>
1608 <p><code>subscribe</code>
1609 <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
1610 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301611
Steve Kondikae271bc2015-11-15 02:50:53 +01001612 <p>This list is open to anyone interested in helping with the
1613 development and testing of this package.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301614
micky3879b9f5e72025-07-08 18:04:53 -04001615 <p>Beta versions of <span class="main-name">ncurses</span> are
1616 made available at</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301617
Steve Kondikae271bc2015-11-15 02:50:53 +01001618 <blockquote>
1619 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001620 "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/</a>
1621 and<br>
1622 <a href=
1623 "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a>&nbsp;.</p>
1624 </blockquote>
1625
1626 <p>Patches to the current release are made available at</p>
1627
1628 <blockquote>
1629 <p><a href=
1630 "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/</a>
1631 and<br>
1632 <a href=
1633 "https://invisible-mirror.net/archives/ncurses/6.4/">https://invisible-mirror.net/archives/ncurses/6.4/</a>&nbsp;.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001634 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301635
Steve Kondikae271bc2015-11-15 02:50:53 +01001636 <p>There is an archive of the mailing list here:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301637
Steve Kondikae271bc2015-11-15 02:50:53 +01001638 <blockquote>
1639 <p><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001640 "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a>&nbsp;.</p>
Steve Kondikae271bc2015-11-15 02:50:53 +01001641 </blockquote>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301642
Steve Kondikae271bc2015-11-15 02:50:53 +01001643 <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
1644 resources</a></h2>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301645
Steve Kondikae271bc2015-11-15 02:50:53 +01001646 <p>The release notes make scattered references to these pages,
1647 which may be interesting by themselves:</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301648
Steve Kondikae271bc2015-11-15 02:50:53 +01001649 <ul>
micky3879b9f5e72025-07-08 18:04:53 -04001650 <li><a href="https://invisible-island.net/ncurses/ncurses-license.html"><span class=
1651 "main-name">ncurses</span> licensing</a></li>
1652
1653 <li><a href="https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol versioning
1654 in <span class="main-name">ncurses</span></a></li>
1655
1656 <li><a href="https://invisible-island.net/ncurses/ncurses-slang.html">Comments on
1657 <span class="main-name">ncurses</span> versus <span class=
1658 "main-name">slang</span> (S-Lang)</a></li>
1659
1660 <li><a href="https://invisible-island.net/ncurses/ncurses-openbsd.html">Comments on
1661 <span class="main-name">OpenBSD</span></a></li>
1662
1663 <li><a href="https://invisible-island.net/ncurses/tack.html">tack &ndash; terminfo action
1664 checker</a></li>
1665
1666 <li><a href="https://invisible-island.net/ncurses/tctest.html">tctest &ndash; termcap
1667 library checker</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301668
Steve Kondikae271bc2015-11-15 02:50:53 +01001669 <li><a href=
micky3879b9f5e72025-07-08 18:04:53 -04001670 "https://invisible-island.net/ncurses/ncurses.html#download_database">Terminal
1671 Database</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001672 </ul>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301673
Steve Kondikae271bc2015-11-15 02:50:53 +01001674 <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
1675 resources</a></h2>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301676
Steve Kondikae271bc2015-11-15 02:50:53 +01001677 <p>The distribution provides a newer version of the
1678 terminfo-format terminal description file once maintained by
1679 <a href="http://www.catb.org/~esr/terminfo/">Eric
1680 Raymond</a>&nbsp;. Unlike the older version, the termcap and
micky3879b9f5e72025-07-08 18:04:53 -04001681 terminfo data are provided in the same file, which also provides
1682 several user-definable extensions beyond the X/Open Curses
1683 specification.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301684
Steve Kondikae271bc2015-11-15 02:50:53 +01001685 <p>You can find lots of information on terminal-related topics
micky3879b9f5e72025-07-08 18:04:53 -04001686 not covered in the terminfo file in <a href=
1687 "https://shuford.invisible-island.net/">Richard Shuford's
1688 archive</a> (<a href=
1689 "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>).
1690 The collection of computer manuals at <a href=
1691 "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
1692 useful.</p>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301693
Steve Kondikae271bc2015-11-15 02:50:53 +01001694 <div class="nav">
1695 <ul>
1696 <li><a href="#h2-overview">Overview</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301697
Steve Kondikae271bc2015-11-15 02:50:53 +01001698 <li>
1699 <a href="#h2-release-notes">Release Notes</a>
Steve Kondikae271bc2015-11-15 02:50:53 +01001700 <ul>
1701 <li>
1702 <a href="#h3-library">Library improvements</a>
Steve Kondikae271bc2015-11-15 02:50:53 +01001703 <ul>
micky3879b9f5e72025-07-08 18:04:53 -04001704 <li><a href="#h4-new-library">New features</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301705
micky3879b9f5e72025-07-08 18:04:53 -04001706 <li><a href="#h4-fixes-library">Other
1707 improvements</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001708 </ul>
1709 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301710
Steve Kondikae271bc2015-11-15 02:50:53 +01001711 <li>
1712 <a href="#h3-programs">Program improvements</a>
Steve Kondikae271bc2015-11-15 02:50:53 +01001713 <ul>
1714 <li><a href="#h4-utilities">Utilities</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301715
Steve Kondikae271bc2015-11-15 02:50:53 +01001716 <li><a href="#h4-examples">Examples</a></li>
1717 </ul>
1718 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301719
Steve Kondikae271bc2015-11-15 02:50:53 +01001720 <li><a href="#h3-database">Terminal database</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301721
Steve Kondikae271bc2015-11-15 02:50:53 +01001722 <li><a href="#h3-documentation">Documentation</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301723
micky3879b9f5e72025-07-08 18:04:53 -04001724 <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301725
Steve Kondikae271bc2015-11-15 02:50:53 +01001726 <li>
1727 <a href="#h3-config-config">Configuration changes</a>
Steve Kondikae271bc2015-11-15 02:50:53 +01001728 <ul>
1729 <li><a href="#h4-config-major">Major changes</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301730
Steve Kondikae271bc2015-11-15 02:50:53 +01001731 <li><a href="#h4-config-options">Configuration
1732 options</a></li>
1733 </ul>
1734 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301735
micky3879b9f5e72025-07-08 18:04:53 -04001736 <li><a href="#h3-portability">Portability</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001737 </ul>
1738 </li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301739
micky3879b9f5e72025-07-08 18:04:53 -04001740 <li><a href="#h2-features">Features of <span class=
1741 "main-name">ncurses</span></a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301742
micky3879b9f5e72025-07-08 18:04:53 -04001743 <li><a href="#h2-who-uses">Applications using <span class=
1744 "main-name">ncurses</span></a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301745
Steve Kondikae271bc2015-11-15 02:50:53 +01001746 <li><a href="#h2-development">Development activities</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301747
Steve Kondikae271bc2015-11-15 02:50:53 +01001748 <li><a href="#h2-this-stuff">Related resources</a></li>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301749
Steve Kondikae271bc2015-11-15 02:50:53 +01001750 <li><a href="#h2-other-stuff">Other resources</a></li>
1751 </ul>
1752 </div>
1753</body>
1754</html>