Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1 | <!-- |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2 | @Id: announce.html.in,v 1.90 2015/08/08 18:39:58 tom Exp @ |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 3 | **************************************************************************** |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 4 | * Copyright (c) 1998-2013,2015 Free Software Foundation, Inc. * |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 5 | * * |
| 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 Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 31 | <!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"> |
| 43 | p,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> .</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> .</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 “stop” |
| 333 | signal), <em class="small-caps">ncurses</em> relied upon |
| 334 | unsafe functions. That is, due to the complexity of the |
| 335 | feature, it relied upon reusing existing functions which |
| 336 | should not have been called via the signal handler.</p> |
| 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"> |
| 355 | fflush(stdout); |
| 356 | </pre> |
| 357 | </blockquote> |
| 358 | |
| 359 | <p>when switching from “<a href= |
| 360 | "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">shell</a>” |
| 361 | mode to “<a href= |
| 362 | "http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode">program</a>” |
| 363 | (curses) mode. Those are fairly rare because most programmers |
| 364 | have learned not to mix <code>printf</code> and <code><a href= |
| 365 | "http://invisible-island.net/ncurses/man/curs_printw.3x.html">printw</a></code>.</p> |
| 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>“<code>.map</code>”</dt> |
| 395 | |
| 396 | <dd>These list all public symbols, together with version |
| 397 | names.</dd> |
| 398 | |
| 399 | <dt>“<code>.sym</code>”</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 “<code>_nc_</code>”). 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 | “<code>NCURSESW</code>” 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 | “<code>TINFO</code>” and |
| 507 | “<code>TIC</code>”</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"> |
| 524 | 0000000000000000 A NCURSES6_TIC_5.0.19991023 |
| 525 | 0000000000000000 A NCURSES6_TIC_5.1.20000708 |
| 526 | 0000000000000000 A NCURSES6_TIC_5.5.20051010 |
| 527 | 0000000000000000 A NCURSES6_TIC_5.7.20081102 |
| 528 | 0000000000000000 A NCURSES6_TIC_5.9.20150530 |
| 529 | 0000000000000000 A NCURSES6_TINFO_5.0.19991023 |
| 530 | 0000000000000000 A NCURSES6_TINFO_5.1.20000708 |
| 531 | 0000000000000000 A NCURSES6_TINFO_5.2.20001021 |
| 532 | 0000000000000000 A NCURSES6_TINFO_5.3.20021019 |
| 533 | 0000000000000000 A NCURSES6_TINFO_5.4.20040208 |
| 534 | 0000000000000000 A NCURSES6_TINFO_5.5.20051010 |
| 535 | 0000000000000000 A NCURSES6_TINFO_5.6.20061217 |
| 536 | 0000000000000000 A NCURSES6_TINFO_5.7.20081102 |
| 537 | 0000000000000000 A NCURSES6_TINFO_5.8.20110226 |
| 538 | 0000000000000000 A NCURSES6_TINFO_5.9.20150530 |
| 539 | 0000000000000000 A NCURSESW6_5.1.20000708 |
| 540 | 0000000000000000 A NCURSESW6_5.3.20021019 |
| 541 | 0000000000000000 A NCURSESW6_5.4.20040208 |
| 542 | 0000000000000000 A NCURSESW6_5.5.20051010 |
| 543 | 0000000000000000 A NCURSESW6_5.6.20061217 |
| 544 | 0000000000000000 A NCURSESW6_5.7.20081102 |
| 545 | 0000000000000000 A NCURSESW6_5.8.20110226 |
| 546 | 0000000000000000 A NCURSESW6_5.9.20150530 |
| 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"> |
| 615 | 0 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 | “<code>%u</code>” 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 | “4” and “5”, 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 “<code>--enable-ext-putwin</code>” |
| 643 | configure option to turn on the extended putwin/getwin. By |
| 644 | default, this is enabled for ABI 6 and disabled with ABI |
| 645 | 5.</p> |
| 646 | </li> |
| 647 | |
| 648 | <li> |
| 649 | <p>add “<code>--enable-string-hacks</code>” |
| 650 | option to control whether strlcat and strlcpy may be used. |
| 651 | Because <em class="small-caps">ncurses</em> already does the |
| 652 | requisite buffer-limit checks, this feature is mainly of |
| 653 | interest to quiet compiler-warnings on a few systems.</p> |
| 654 | </li> |
| 655 | |
| 656 | <li> |
| 657 | <p>add configure option |
| 658 | “<code>--with-tparm-arg</code>” to allow <a href= |
| 659 | "http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output"> |
| 660 | tparm</a>'s parameters to be something more likely to be the |
| 661 | same size as a pointer, e.g., <code>intptr_t</code> (again, |
| 662 | the default is set for ABI 6).</p> |
| 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&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 — 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 “<code>-0</code>” option generates |
| 751 | termcap/terminfo source on a single line.</p> |
| 752 | </li> |
| 753 | |
| 754 | <li> |
| 755 | <p>the “<code>-K</code>” 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 “<code>-D</code>” 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 “<code>-s</code>” option to toe, to sort |
| 771 | its output.</p> |
| 772 | </li> |
| 773 | |
| 774 | <li> |
| 775 | <p>extended “<code>-c</code>” and |
| 776 | “<code>-n</code>” options of infocmp to allow |
| 777 | comparing more than two entries.</p> |
| 778 | </li> |
| 779 | |
| 780 | <li> |
| 781 | <p>modified toe's report when “<code>-a</code>” |
| 782 | and “<code>-s</code>” options are combined, to |
| 783 | add a column showing which entries belong to a given |
| 784 | database.</p> |
| 785 | </li> |
| 786 | |
| 787 | <li> |
| 788 | <p>modified the clear program to take into account the |
| 789 | “<code>E3</code>” extended capability to clear |
| 790 | the terminal's scrollback buffer.</p> |
| 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 “<code>-d</code>”, |
| 833 | “<code>-e</code>” and |
| 834 | “<code>-q</code>” options to the demo_terminfo |
| 835 | and demo_termcap test-programs.</p> |
| 836 | </li> |
| 837 | |
| 838 | <li> |
| 839 | <p>added “<code>-y</code>” option to demo_termcap |
| 840 | and test/demo_terminfo test-programs to demonstrate behavior |
| 841 | with/without extended capabilities.</p> |
| 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 | “<code>-i</code>” 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 “<code>-s</code>” option to the view |
| 876 | test-program to allow it to start in single-step mode, |
| 877 | reducing size of trace files when it is used for debugging |
| 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 | “<code>-E</code>” and |
| 902 | “<code>-T</code>” 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 | “<code>-c</code>” 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 | “<code>Unused</code>” 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 | “<code>%i</code>” 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 “<code>%l</code>” behavior in tparm |
| 1204 | to push the string length onto the stack rather than |
| 1205 | saving the formatted length into the output buffer.</p> |
| 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 “5” or |
| 1262 | “6”):</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 “<code>unsigned</code>” 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 -e <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> >><font color= |
| 1389 | "#008080">$OUT</font> <font color= |
| 1390 | "#800080"><<EOF/</font><font color="#800080"><br> |
| 1391 | ** </font><strong><em><font color= |
| 1392 | "#800000">`</font></em></strong>date<strong><em><font color= |
| 1393 | "#800000">`</font></em></strong><font color="#800080"><br> |
| 1394 | ** node: </font><font color= |
| 1395 | "#008080">$WHAT</font><font color="#800080"><br> |
| 1396 | ** user: </font><strong><em><font color= |
| 1397 | "#800000">`</font></em></strong>id<strong><em><font color= |
| 1398 | "#800000">`</font></em></strong><font color="#800080"><br> |
| 1399 | ** conf: $*<br> |
| 1400 | EOF/</font><br> |
| 1401 | <br> |
| 1402 | <font color="#008080">SHELL</font>=/bin/sh<br> |
| 1403 | <strong><font color= |
| 1404 | "#000080">if</font></strong> <strong><font color= |
| 1405 | "#000080">test</font></strong> -f /usr/xpg4/bin/sh<br> |
| 1406 | |
| 1407 | <strong><font color="#000080">then</font></strong><br> |
| 1408 | <font color= |
| 1409 | "#008080">CONFIG_SHELL</font>=/usr/xpg4/bin/sh<br> |
| 1410 | <strong><font color="#000080">export</font></strong> CONFIG_SHELL<br> |
| 1411 | |
| 1412 | <font color= |
| 1413 | "#008080">SHELL</font>=<font color= |
| 1414 | "#008080">$CONFIG_SHELL</font><br> |
| 1415 | <strong><font color="#000080">fi</font></strong><br> |
| 1416 | <br> |
| 1417 | rm -f config.status config.cache<br> |
| 1418 | <font color="#008080">TOP</font>=<font color= |
| 1419 | "#008080">$HOME</font>/<font color="#008080">$WHAT</font><br> |
| 1420 | <font color= |
| 1421 | "#008080">$SHELL</font> ./configure --verbose \<br> |
| 1422 | |
| 1423 | --disable-echo \<br> |
| 1424 | |
| 1425 | --disable-overwrite \<br> |
| 1426 | |
| 1427 | --enable-warnings \<br> |
| 1428 | |
| 1429 | --with-warnings \<br> |
| 1430 | |
| 1431 | --prefix=<font color="#008080">$TOP</font> <font color="#008080">$*</font> <strong><font color="#008080">2</font></strong>>&<strong><font color="#008080">1</font></strong> | tee -a <font color="#008080">$OUT</font><br> |
| 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 | “<code>--with-abi-version=5</code>” 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 “w”, “t” or |
| 1500 | “tw” suffixes which normally would be added to |
| 1501 | the library names for the <code>--enable-widec</code> and |
| 1502 | <code>--with-pthread</code> options.</p> |
| 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 | “<code>#win32console</code>” 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 “unknown”</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 | “<code>-T</code>” 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 | “<code>--as-needed</code>” 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 | “<code>--with-termlib</code>” and |
| 1748 | “<code>--enable-term-driver</code>”.</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&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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2123 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2124 | <dt>ncftp</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2125 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2126 | <dd> |
| 2127 | <p>file-transfer utility</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2128 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2129 | <p><a href= |
| 2130 | "http://www.ncftp.com/">http://www.ncftp.com/</a></p> |
| 2131 | </dd> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2132 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2133 | <dt>nvi</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2134 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2135 | <dd> |
| 2136 | <p>New vi uses ncurses.</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2137 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2138 | <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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2142 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2143 | <dt>tin</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2144 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2145 | <dd> |
| 2146 | <p>newsreader, supporting color, MIME</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2147 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2148 | <p><a href= |
| 2149 | "http://www.tin.org/">http://www.tin.org/</a></p> |
| 2150 | </dd> |
| 2151 | </dl> |
| 2152 | </blockquote> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2153 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2154 | <p>as well as some that use <em class="small-caps">ncurses</em> |
| 2155 | for the terminfo support alone:</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2156 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2157 | <blockquote> |
| 2158 | <dl> |
| 2159 | <dt>minicom</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2160 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2161 | <dd> |
| 2162 | <p>terminal emulator for serial modem connections</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2163 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2164 | <p><a href= |
| 2165 | "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></p> |
| 2166 | </dd> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2167 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2168 | <dt>mosh</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2169 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2170 | <dd> |
| 2171 | <p>a replacement for <code>ssh</code>.</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2172 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2173 | <p><a href= |
| 2174 | "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p> |
| 2175 | </dd> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2176 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2177 | <dt>tack</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2178 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2179 | <dd> |
| 2180 | <p>terminfo action checker</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2181 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2182 | <p><a href= |
| 2183 | "http://invisible-island.net/ncurses/tack.html">http://invisible-island.net/ncurses/tack.html</a></p> |
| 2184 | </dd> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2185 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2186 | <dt>tmux</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2187 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2188 | <dd> |
| 2189 | <p>terminal multiplexor</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2190 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2191 | <p><a href= |
| 2192 | "http://tmux.github.io/">http://tmux.github.io/</a></p> |
| 2193 | </dd> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2194 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2195 | <dt>vile</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2196 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2197 | <dd> |
| 2198 | <p>vi-like-emacs may be built to use the terminfo, termcap |
| 2199 | or curses interfaces.</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2200 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2201 | <p><a href= |
| 2202 | "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></p> |
| 2203 | </dd> |
| 2204 | </dl> |
| 2205 | </blockquote> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2206 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2207 | <p>and finally, those which use only the termcap interface:</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2208 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2209 | <blockquote> |
| 2210 | <dl> |
| 2211 | <dt>emacs</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2212 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2213 | <dd> |
| 2214 | <p>text editor</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2215 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2216 | <p><a href= |
| 2217 | "http://www.gnu.org/software/emacs/">http://www.gnu.org/software/emacs/</a></p> |
| 2218 | </dd> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2219 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2220 | <dt>screen</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2221 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2222 | <dd> |
| 2223 | <p>terminal multiplexor</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2224 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2225 | <p><a href= |
| 2226 | "http://www.gnu.org/software/screen/">http://www.gnu.org/software/screen/</a></p> |
| 2227 | </dd> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2228 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2229 | <dt>vim</dt> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2230 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2231 | <dd> |
| 2232 | <p>text editor</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2233 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2234 | <p><a href= |
| 2235 | "http://www.vim.org/">http://www.vim.org/</a></p> |
| 2236 | </dd> |
| 2237 | </dl> |
| 2238 | </blockquote> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2239 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2240 | <h2><a name="h2-development" id="h2-development">Development |
| 2241 | activities</a></h2> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2242 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2243 | <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ü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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2252 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2253 | <p>Contact the current maintainers at</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2254 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2255 | <blockquote> |
| 2256 | <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a> |
| 2257 | </blockquote> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2258 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2259 | <p>To join the ncurses mailing list, please write email to</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2260 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2261 | <blockquote> |
| 2262 | <a href= |
| 2263 | "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a> |
| 2264 | </blockquote>containing the line: |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2265 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2266 | <blockquote> |
| 2267 | <p><code>subscribe</code> |
| 2268 | <em><name>@<host.domain></em></p> |
| 2269 | </blockquote> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2270 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2271 | <p>This list is open to anyone interested in helping with the |
| 2272 | development and testing of this package.</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2273 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2274 | <p>Beta versions of <em class="small-caps">ncurses</em> and |
| 2275 | patches to the current release are made available at</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2276 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2277 | <blockquote> |
| 2278 | <p><a href= |
| 2279 | "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p> |
| 2280 | </blockquote> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2281 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2282 | <p>There is an archive of the mailing list here:</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2283 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2284 | <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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2290 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2291 | <h2><a name="h2-this-stuff" id="h2-this-stuff">Related |
| 2292 | resources</a></h2> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2293 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2294 | <p>The release notes make scattered references to these pages, |
| 2295 | which may be interesting by themselves:</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2296 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2297 | <ul> |
| 2298 | <li><a href= |
| 2299 | "http://invisible-island.net/scripts/man2html.html">man2html</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2300 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2301 | <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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2304 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2305 | <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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2308 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2309 | <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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2312 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2313 | <li><a href= |
| 2314 | "http://invisible-island.net/ncurses/tack.html">tack – |
| 2315 | terminfo action checker</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2316 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2317 | <li><a href= |
| 2318 | "http://invisible-island.net/autoconf/portability-tar.html">tar |
| 2319 | versus portability</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2320 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2321 | <li><a href= |
| 2322 | "http://invisible-island.net/ncurses/tctest.html">tctest |
| 2323 | – termcap library checker</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2324 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2325 | <li><a href= |
| 2326 | "http://invisible-island.net/ncurses/ncurses.html#download_database"> |
| 2327 | Terminal Database</a></li> |
| 2328 | </ul> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2329 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2330 | <h2><a name="h2-other-stuff" id="h2-other-stuff">Other |
| 2331 | resources</a></h2> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2332 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2333 | <p>The distribution provides a newer version of the |
| 2334 | terminfo-format terminal description file once maintained by |
| 2335 | <a href="http://www.catb.org/~esr/terminfo/">Eric |
| 2336 | Raymond</a> . 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 Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2339 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2340 | <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> .</p> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2344 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2345 | <div class="nav"> |
| 2346 | <ul> |
| 2347 | <li><a href="#h2-overview">Overview</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2348 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2349 | <li> |
| 2350 | <a href="#h2-release-notes">Release Notes</a> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2351 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2352 | <ul> |
| 2353 | <li> |
| 2354 | <a href="#h3-library">Library improvements</a> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2355 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2356 | <ul> |
| 2357 | <li><a href="#h3-lib-setbuf">Output |
| 2358 | buffering</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2359 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2360 | <li><a href="#h3-lib-versioning">Symbol |
| 2361 | versioning</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2362 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2363 | <li><a href="#h3-lib-other">Miscellaneous</a></li> |
| 2364 | </ul> |
| 2365 | </li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2366 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2367 | <li> |
| 2368 | <a href="#h3-programs">Program improvements</a> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2369 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2370 | <ul> |
| 2371 | <li><a href="#h4-utilities">Utilities</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2372 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2373 | <li><a href="#h4-examples">Examples</a></li> |
| 2374 | </ul> |
| 2375 | </li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2376 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2377 | <li><a href="#h3-database">Terminal database</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2378 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2379 | <li><a href="#h3-documentation">Documentation</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2380 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2381 | <li><a href="#h3-bug-fixes">Interesting |
| 2382 | bug-fixes</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2383 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2384 | <li> |
| 2385 | <a href="#h3-config-config">Configuration changes</a> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2386 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2387 | <ul> |
| 2388 | <li><a href="#h4-config-major">Major changes</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2389 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2390 | <li><a href="#h4-config-options">Configuration |
| 2391 | options</a></li> |
| 2392 | </ul> |
| 2393 | </li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2394 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2395 | <li> |
| 2396 | <a href="#h3-portability">Portability</a> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2397 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2398 | <ul> |
| 2399 | <li><a href="#h4-port-mingw">MinGW</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2400 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2401 | <li><a href="#h4-port-systems">Other ports</a></li> |
| 2402 | </ul> |
| 2403 | </li> |
| 2404 | </ul> |
| 2405 | </li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2406 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2407 | <li><a href="#h2-features">Features of <em class= |
| 2408 | "small-caps">ncurses</em></a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2409 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2410 | <li><a href="#h2-who-uses">Applications using <em class= |
| 2411 | "small-caps">ncurses</em></a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2412 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2413 | <li><a href="#h2-development">Development activities</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2414 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2415 | <li><a href="#h2-this-stuff">Related resources</a></li> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2416 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2417 | <li><a href="#h2-other-stuff">Other resources</a></li> |
| 2418 | </ul> |
| 2419 | </div> |
| 2420 | </body> |
| 2421 | </html> |