ncurses 6.0 - patch 20150808
[ncurses.git] / ANNOUNCE
1                             Announcing ncurses 6.0
2
3 Overview
4
5    The  ncurses  (new  curses)  library  is  a free software emulation of
6    curses  in  System  V  Release  4.0 (SVr4), and more. It uses terminfo
7    format,  supports  pads  and  color  and multiple highlights and forms
8    characters and function-key mapping, and has all the other SVr4-curses
9    enhancements  over  BSD  curses.  SVr4 curses is better known today as
10    X/Open Curses.
11
12    In  mid-June  1995,  the  maintainer of 4.4BSD curses declared that he
13    considered  4.4BSD curses obsolete, and encouraged the keepers of unix
14    releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
15
16    Since 1995, ncurses has been ported to many systems:
17      * It is used in almost every system based on the Linux kernel (aside
18        from some embedded applications).
19      * It  is  used  as the system curses library on OpenBSD, FreeBSD and
20        OSX.
21      * It  is used in environments such as Cygwin and MinGW. The first of
22        these was EMX on OS/2 Warp.
23      * It is used (though usually not as the system curses) on all of the
24        vendor  unix  systems,  e.g.,  AIX,  HP-UX,  IRIX64, SCO, Solaris,
25        Tru64.
26      * It should work readily on any ANSI/POSIX-conforming unix.
27
28    The distribution includes the library and support utilities, including
29      * [1]captoinfo, a termcap conversion tool
30      * [2]clear, utility for clearing the screen
31      * [3]infocmp, the terminfo decompiler
32      * [4]tabs, set tabs on a terminal
33      * [5]tic, the terminfo compiler
34      * [6]toe, list (table of) terminfo entries
35      * [7]tput,  utility  for  retrieving  terminal capabilities in shell
36        scripts
37      * [8]tset, to initialize the terminal
38
39    Full manual pages are provided for the library and tools.
40
41    The  ncurses  distribution  is  available via anonymous FTP at the GNU
42    distribution site
43
44      [9]ftp://ftp.gnu.org/gnu/ncurses/ .
45
46    It is also available at
47
48      [10]ftp://invisible-island.net/ncurses/ .
49
50 Release Notes
51
52    These notes are for ncurses 6.0, released August 8, 2015.
53
54    This  release  is  designed  to  be source-compatible with ncurses 5.0
55    through  5.9;  providing  a  new  application  binary interface (ABI).
56    Although  the  source can still be configured to support the ncurses 5
57    ABI,  the  intent  of  the  release is to provide extensions which are
58    generally useful, but binary-incompatible with ncurses 5:
59      * Extend  the  cchar_t  structure to allow more than 16 colors to be
60        encoded.
61      * Modify  the  encoding  of mouse state to make room for a 5th mouse
62        button.  That  allows  one  to use ncurses with a wheel mouse with
63        xterm or similar X terminal emulators.
64
65    There are, of course, numerous other improvements, including
66      * fixes made based on the Clang and Coverity static analyzers.
67      * memory leak fixes using Valgrind
68
69    The  release  notes  mention  some  bug-fixes,  but are focused on new
70    features  and  improvements to existing features log since ncurses 5.9
71    release.
72
73    While  the intent of the release is to provide a new stable ABI, there
74    are other development activities which are summarized below.
75      * The  original  release  plan,  e.g., for "5.10" was to improve the
76        MinGW port. Ultimately that was completed (wide-character support,
77        mouse,  etc),  but  was  deferred  to focus on termcap support and
78        performance  issues.  Also, pinpointing the problems with Console2
79        took a while.
80      * A  review  of  termcap  compatibility in 2011 led to several minor
81        fixes  in  the  library  and improvements to utilities. To do this
82        properly,  a  review of the various extent termcap implementations
83        was needed.
84        The [11]termcap library checker (tctest) (not part of ncurses) was
85        one    result.    A   followup   review   of   performance   using
86        [12]ncurses-examples in 2014 led to additional improvements.
87      * Output buffering provided a further, but worthwhile distraction. A
88        bug  report  in  2012  regarding  the  use  of  signal handlers in
89        ncurses)  pointed  out  [13]a  problem  with  the  use  of  unsafe
90        functions  for  handling SIGTSTP. Other signals could be addressed
91        with workarounds; repairing SIGTSTP required a different approach.
92        The  solution  required changing internal behavior of the library:
93        how it handles output buffering.
94        Now  ncurses buffers its own output, independently of the standard
95        output.  A few applications relied upon the library's direct reuse
96        of  the  standard  output  buffering;  however that is unspecified
97        behavior  and  has  never been a recommended practice. Identifying
98        these  applications  as  well  as  refining  the  change to permit
99        low-level applications to work consistently took time.
100      * Since  the introduction of the experimental support for 256 colors
101        early  in  [14]2005  (released in [15]ncurses 5.5), there has been
102        increased  user  interest. Almost all packagers continue providing
103        the ncurses ABI 5 which cannot support 256 colors.
104      * Symbol  versioning,  or  the  lack  of  it in ncurses, is the main
105        reason why packagers would be reluctant to add a new ncurses ABI.
106        This  release  provides  the  new  ABI along with script-generated
107        lists  of versioned symbols which can be used for both ABI 5 and 6
108        (with  distinct names to keep the two separate). This took time to
109        development, as reported in [16]Symbol versioning in ncurses.
110
111   Library improvements
112
113   Output buffering
114
115    X/Open curses provides more than one initialization function:
116      * [17]initscr (the simplest) accepts no parameters.
117      * [18]newterm accepts parameters for the stream input and output
118      * [19]setupterm (the low-level function) accepts a parameter for the
119        file descriptor of the output.
120
121    They are documented in X/Open as if initscr calls newterm using stdout
122    for   output  stream,  and  in  turn  newterm  calls  setupterm  using
123    fileno(stdout)  for  the file descriptor. As long as an implementation
124    acts  as if it does this, it conforms. In practice, implementations do
125    what  is  implied.  This  creates  a  problem: the low-level setupterm
126    function's  file  descriptor  is  unbuffered,  while  newterm  implies
127    buffered  output.  X/Open  Curses says that all output is done through
128    the  file  descriptor,  and  does  not  say  how  the output stream is
129    actually used.
130
131    Initially,  ncurses used the file descriptor (obtained from the output
132    stream  passed to newterm) for changing the terminal modes, and relied
133    upon  the  output  parameter of newterm for buffered output. Later (to
134    avoid  using  unsafe  buffered  I/O  in  signal handlers), ncurses was
135    modified  to use the file descriptor (unbuffered output) when cleaning
136    up  on receipt of a signal. Otherwise (when not handling a signal), it
137    continued to use the buffered output.
138
139    That  approach  worked reasonably well and as a side effect, using the
140    same buffered output as an application might use for printf meant that
141    no   flushing   was   needed   when   switching  between  normal-  and
142    screen-modes.
143
144    There were a couple of problems:
145      * to get good performance, curses (not only ncurses, but SVr4 curses
146        in general) set an output buffer using setbuf or similar function.
147        There  is no standard (or portable) way to turn that output buffer
148        off,  and  revert  to  line-buffering.  The  [20]NCURSES_NO_SETBUF
149        environment variable did make it optional.
150      * to  handle SIGTSTP (the "stop" signal), ncurses relied upon unsafe
151        functions.  That  is,  due  to  the  complexity of the feature, it
152        relied  upon reusing existing functions which should not have been
153        called via the signal handler.
154
155    Conveniently, solving the second problem (by making ncurses do its own
156    output  buffering)  also  fixed  the first one. But there were special
157    cases to resolve: [21]low-level functions such as mvcur, putp, vidattr
158    explicitly  use  the  standard  output.  Those  functions  were reused
159    internally, and required modification to distinguish whether they were
160    used by the high-level or low-level interfaces.
161
162    Finally, there may still be a few programs which should be modified to
163    improve their portability, e.g., adding an
164
165 fflush(stdout);
166
167    when  switching  from "[22]shell" mode to "[23]program" (curses) mode.
168    Those are fairly rare because most programmers have learned not to mix
169    printf and [24]printw.
170
171   Symbol versioning
172
173    This  release  introduces symbol-versioning to ncurses because without
174    it,  the  change of ABI would be less successful. A lengthy discussion
175    will  be  presented  in  [25]Symbol versioning in ncurses. These notes
176    summarize what has changed, and what can be done with the new release.
177
178    Symbol-versioning  allows  the  developers  of  a library to mark each
179    public  symbol  (both  data and functions) with an identifier denoting
180    the  library  name  and  the  version for which it was built. By doing
181    this, users of the library have a way to help ensure that applications
182    do not accidentally load an incompatible library. In addition, private
183    symbols can be hidden entirely.
184
185    This   release   provides   sample   files   for  the  four  principal
186    configurations  of  ncurses libraries: ncurses, ncursesw, ncursest and
187    ncursestw. Each sample is given in two forms:
188
189    ".map"
190           These list all public symbols, together with version names.
191
192    ".sym"
193           These list all public symbols, without version names.
194
195    The  sample  files  are generated by scripts which take into account a
196    few special cases such as [26]tack to omit many of the ncurses private
197    symbols  (beginning with "_nc_"). Here are counts of globals versus
198    locals:
199
200       Config   Symbols Globals Locals "_nc_"
201      ncurses       976     796    180    332
202      ncursesw     1089     905    184    343
203      ncursest      979     804    175    358
204      ncursestw    1098     914    184    372
205
206    Although only four sample configurations are presented, each is formed
207    by  merging  symbols  from  several  combinations  of configure-script
208    options, taking into account advice from downstream packagers. Because
209    they  are  formed by merging, the sample files may list a symbol which
210    is  not  in  a  given package. That is expected. The samples have been
211    tested  and  are  working  with  systems  (such as Fedora, FreeBSD and
212    Debian)  which  fully  support  this  feature. There are other systems
213    which  do  not  support the feature, and a few (such as Solaris) which
214    provide incomplete support.
215
216    The  version-naming convention used allows these sample files to build
217    distinct libraries for ABI 5 and 6. Version names consist of
218      * configuration   name,  e.g.,  "NCURSESW"  for  the  wide-character
219        libraries
220      * ABI version (if not 5)
221      * library  name  for two special cases which have the same interface
222        across configurations: "TINFO" and "TIC"
223      * release version
224      * patch date (for the release version)
225
226    For  example,  running  nm  -D  on  the libraries in the ncurses6 test
227    package shows these symbol-versions:
228
229 0000000000000000 A NCURSES6_TIC_5.0.19991023
230 0000000000000000 A NCURSES6_TIC_5.1.20000708
231 0000000000000000 A NCURSES6_TIC_5.5.20051010
232 0000000000000000 A NCURSES6_TIC_5.7.20081102
233 0000000000000000 A NCURSES6_TIC_5.9.20150530
234 0000000000000000 A NCURSES6_TINFO_5.0.19991023
235 0000000000000000 A NCURSES6_TINFO_5.1.20000708
236 0000000000000000 A NCURSES6_TINFO_5.2.20001021
237 0000000000000000 A NCURSES6_TINFO_5.3.20021019
238 0000000000000000 A NCURSES6_TINFO_5.4.20040208
239 0000000000000000 A NCURSES6_TINFO_5.5.20051010
240 0000000000000000 A NCURSES6_TINFO_5.6.20061217
241 0000000000000000 A NCURSES6_TINFO_5.7.20081102
242 0000000000000000 A NCURSES6_TINFO_5.8.20110226
243 0000000000000000 A NCURSES6_TINFO_5.9.20150530
244 0000000000000000 A NCURSESW6_5.1.20000708
245 0000000000000000 A NCURSESW6_5.3.20021019
246 0000000000000000 A NCURSESW6_5.4.20040208
247 0000000000000000 A NCURSESW6_5.5.20051010
248 0000000000000000 A NCURSESW6_5.6.20061217
249 0000000000000000 A NCURSESW6_5.7.20081102
250 0000000000000000 A NCURSESW6_5.8.20110226
251 0000000000000000 A NCURSESW6_5.9.20150530
252
253    As  a special case, this release (which makes the final change for ABI
254    5) is marked with release version 5.9 and patch date 20150530.
255
256   Miscellaneous
257
258    The new release has several improvements for performance and building.
259    For instance:
260      * several  files  in ncurses- and progs-directories were modified to
261        allow  const  data used in internal tables to be put by the linker
262        into the readonly text segment.
263      * various improvements were made to building the Ada95 binding, both
264        in simplifying the generated files as well as improving the way it
265        uses gnatmake
266
267    There are also new features in the libraries:
268      * added [27]use_tioctl function
269      * added  [28]wgetdelay  to  retrieve  _delay  member of WINDOW if it
270        happens to be opaque, e.g., in the pthread configuration.
271      * added [29]A_ITALIC extension.
272      * added  form  library  extension [30]O_DYNAMIC_JUSTIFY option which
273        can  be  used to override the different treatment of justification
274        for static versus dynamic fields .
275      * rewrote  [31]putwin  and  [32]getwin,  making  an extended version
276        which  is  capable of reading screen-dumps between the wide/normal
277        ncurses  configurations.  These are text files, except for a magic
278        code at the beginning:
279
280 0       string          \210\210        Screen-dump (ncurses)
281
282      * several changes to mouse support include:
283           + added decoder for xterm SGR 1006 mouse mode.
284           + added experimental support for "%u" format to terminfo.
285           + improved  behavior  of  wheel-mice for xterm protocol: noting
286             that  there  are only button-presses for buttons "4" and "5",
287             so   there  is  no  need  to  wait  to  combine  events  into
288             double-clicks .
289
290    There   are   a   few  new  configure  options  dealing  with  library
291    customization:
292      * add "--enable-ext-putwin" configure option to turn on the extended
293        putwin/getwin.  By default, this is enabled for ABI 6 and disabled
294        with ABI 5.
295      * add  "--enable-string-hacks" option to control whether strlcat and
296        strlcpy  may  be  used. Because ncurses already does the requisite
297        buffer-limit  checks,  this feature is mainly of interest to quiet
298        compiler-warnings on a few systems.
299      * add  configure  option  "--with-tparm-arg"  to  allow  [33]tparm's
300        parameters  to  be  something more likely to be the same size as a
301        pointer, e.g., intptr_t (again, the default is set for ABI 6).
302
303   Program improvements
304
305     Utilities
306
307    Most of the termcap-related changes based on development of [34]tctest
308    (termcap  library  checker)  are  implemented  in  the tic and infocmp
309    programs   rather   than  affecting  the  library.  As  noted  in  the
310    [35]discussion  of  tctest,  ncurses's  ability  to  translate between
311    terminfo and termcap formats has been improved at different times, but
312    subject  to  feedback from "real" termcap users. There are very few of
313    those.  Nowadays,  virtually  all  termcap users are using ncurses (or
314    NetBSD, with its own terminfo library) and their programs are actually
315    using terminfo rather than termcap data.
316
317    Still,  there  are a few. A comment about the translation of the ASCII
318    NUL character prompted a review:
319      * Both   terminfo   and   termcap   store   string  capabilities  as
320        NUL-terminated strings.
321      * In terminfo, a \0 in a terminal description is stored as \200.
322      * There are no (known) terminals which would behave differently when
323        sent \0 or \200.
324      * When  translating  to  terminfo  format (or displaying a printable
325        version of an entry using infocmp), ncurses shows \200 as \0.
326      * It has done this since 1998 (quoting from the NEWS file):
327
328 [36]980103
329 ...
330         + modify _nc_tic_expand() to generate \0 rather than \200.
331 ...
332         + correct translation of terminfo "^@", to \200, like \0.
333
334      * However,  the  _nc_tic_expand  function (which optionally produces
335        terminfo  or termcap format) did not address this special case for
336        termcap.  Even  the  later  4.4BSD  [37]cgetstr  interprets  a  \0
337        literally,  ending  that  string  (rather  than using the terminfo
338        improvement).
339
340    As  a  result of the review, several improvements were made to ncurses
341    translation to/from termcap format -- and improving the checks made in
342    tic  for  consistency  of  entries.  Most  of these are not of general
343    interest, except for two new command-line options for tic and infocmp:
344      * the  "-0"  option  generates  termcap/terminfo  source on a single
345        line.
346      * the  "-K"  option  provides stricter BSD-compatibility for termcap
347        output.
348
349    Other user-visible improvements and new features include:
350      * added  "-D"  option  to  tic  and  infocmp,  to  show the database
351        locations that it could use.
352      * added "-s" option to toe, to sort its output.
353      * extended  "-c" and "-n" options of infocmp to allow comparing more
354        than two entries.
355      * modified  toe's report when "-a" and "-s" options are combined, to
356        add a column showing which entries belong to a given database.
357      * modified  the clear program to take into account the "E3" extended
358        capability to clear the terminal's scrollback buffer.
359
360     Examples
361
362    Along  with  the library and utilities, many improvements were made to
363    the  [38]ncurses-examples.  Some  were  made  to  allow  building (and
364    comparison-testing) against NetBSD curses and PDCurses. Both lack some
365    of  the  X/Open Curses features, necessitating customization. But this
366    activity  was  useful  because  it  showed  some remaining performance
367    issues (which have been resolved in this release).
368
369    These changes were made to verify compatibility or compare performance
370    of ncurses:
371      * made  workarounds  for compiling test-programs with NetBSD curses,
372        though it lacks some common functions such as [39]use_env.
373      * added dots_termcap test-program
374      * added  dots_curses test-program, for comparison with the low-level
375        examples.
376      * added   test_setupterm  test-proram  to  demonstrate  normal/error
377        returns from the setupterm and restartterm functions.
378      * added  "-d",  "-e"  and  "-q"  options  to  the  demo_terminfo and
379        demo_termcap test-programs.
380      * added   "-y"   option   to   demo_termcap  and  test/demo_terminfo
381        test-programs   to   demonstrate  behavior  with/without  extended
382        capabilities.
383      * modified  demo_termcap  and  demo_terminfo  test-programs  to make
384        their  options  more  directly  comparable, and add "-i" option to
385        specify  a  terminal  description  filename  to parse for names to
386        lookup.
387      * rewrote   the  tests  for  [40]mvderwin  and  test  for  recursive
388        [41]mvwin in the movewindow test-program.
389
390    These changes were made to help with the MinGW port:
391      * added   test-screens   to   the   ncurses   test-program  to  show
392        256-characters at a time, to help with MinGW port.
393      * modified the view test-program to load UTF-8 when built with MinGW
394        by  using  regular win32 API because the MinGW functions mblen and
395        mbtowc do not work.
396      * added "-s" option to the view test-program to allow it to start in
397        single-step mode, reducing size of trace files when it is used for
398        debugging MinGW changes.
399
400    These changes were made to verify new extensions in ncurses:
401      * added   [42]form_driver_w   entrypoint   to  wide-character  forms
402        library, as well as form_driver_w test-program.
403      * modified  ncurses  test-program's  b/B tests to display lines only
404        for  the  attributes which a given terminal supports, to make room
405        for an italics test.
406      * modified  ncurses  test-program,  adding  "-E" and "-T" options to
407        demonstrate use_env versus use_tioctl.
408      * modified ncurses test-program's c/C tests to cycle through subsets
409        of   the   total   number   of   colors,   to   better  illustrate
410        8/16/88/256-colors by providing directly comparable screens.
411      * modified the ncurses test-program to also show position reports in
412        'a' test.
413
414    These changes were made to make the examples more useful:
415      * added scripts for building dpkg and rpm test-packages
416      * modified  the  hanoi  test-program  to  show the minimum number of
417        moves possible for the given number of tiles.
418      * modified  the  knight  test-program  to show the number of choices
419        possible for each position in automove option, e.g., to allow user
420        to follow Warnsdorff's rule to solve the puzzle.
421
422   Terminal database
423
424    This  release  provides  improvements  to  tic's "-c" checking option,
425    which was used for example to
426      * make sgr in several entries agree with other caps.
427      * correct  padding  in  some  entries  where  earlier  versions  had
428        miscounted the number of octal digits.
429
430    There are several new terminal descriptions:
431      * [43]mlterm is now aliased to mlterm3
432      * [44]nsterm is now derived from nsterm-256color
433      * [45]putty-sco
434      * [46]teken is FreeBSD's "xterm" console.
435      * [47]terminator
436      * [48]terminology
437      * [49]tmux is derived from screen.
438      * several  screen.XXX  entries support the respective variations for
439        256 colors.
440      * [50]simpleterm is now 0.5
441      * [51]vte is aliased to vte-2012
442      * [52]vt520ansi
443
444    A few entries use extensions (user-defined terminal capabilities):
445      * E3,  used  in  linux,  putty  and  xterm-basic  is  tested  in the
446        [53]clear program to erase a terminal's scrollback.
447      * TS  is  used  in the [54]xterm+sl building block to help deprecate
448        the misuse of tsl for xterm's title-string.
449      * XT  is  used  in  some  terminfo entries to improve usefulness for
450        other  applications  than screen, which would like to pretend that
451        xterm's title is a status-line.
452      * xm  is  used  in  examples  [55]xterm-1005  and  [56]xterm-1006 to
453        illustrate a way to make mouse handling more general
454
455    A   few   terminals   support  italics  and/or  dim  capabilities.  In
456    particular,  screen  does  not.  Documented that, and accommodated the
457    terminals where this feature works with the A_ITALIC extension.
458      * konsole, mlterm3 (italics)
459      * nsterm (dim)
460      * screen (dim)
461      * vte (dim, italics)
462      * xterm (dim, italics)
463
464   Documentation
465
466    As usual, this release
467      * improves documentation by describing new features,
468      * attempts  to  improve the description of features which users have
469        found confusing
470      * fills  in overlooked descriptions of features which were described
471        in the [57]NEWS file but treated sketchily in manual pages.
472
473    In  addition,  the  mechanism  for  producing  HTML  versions  of  the
474    documentation has been improved:
475      * use an improved version of [58]man2html to generate html manpages.
476      * regenerated  [59]NCURSES-Programming-HOWTO.html to fix some of the
477        broken html emitted by docbook.
478
479   Interesting bug-fixes
480
481      * Ada95 binding:
482           + modify  makefile  rules  to ensure that the PIC option is not
483             used when building a static library
484           + make  Ada95  build-fix  for  big-endian architectures such as
485             sparc.  This undoes one of the fixes from [60]20110319, which
486             added an "Unused" member to representation clauses, replacing
487             that with pragmas to suppress warnings about unused bits.
488      * Color and attributes:
489           + parenthesize  parameter  of  COLOR_PAIR  and  PAIR_NUMBER  in
490             curses.h in case it happens to be a comma-expression.
491           + improve  [61]20021221  workaround  for broken acs, handling a
492             case  where  that ACS_xxx character is not in the acsc string
493             but there is a known wide-character which can be used.
494           + modify  [62]init_pair  to  accept  -1's for color value after
495             [63]assume_default_colors has been called.
496           + add  a  check  in [64]start_color to limit color-pairs to 256
497             when extended colors are not supported.
498      * Resizing the screen:
499           + propagate  error-returns  from  wresize,  i.e.,  the internal
500             increase_size    and    decrease_size    functions    through
501             [65]resize_term.
502           + add  check  for  zero/negative  dimensions for resizeterm and
503             resize_term.
504           + modify  resizeterm to always push a KEY_RESIZE onto the fifo,
505             even  if  screensize  is  unchanged. Modify library to push a
506             KEY_RESIZE  if there was a SIGWINCH, even if it does not call
507             resizeterm).   These  changes  eliminate  the  case  where  a
508             SIGWINCH  is  received,  but  ERR  is returned from wgetch or
509             wgetnstr because the screen dimensions did not change.
510      * Low-level interfaces
511           + fix  an old bug in the termcap emulation; "%i" was ignored in
512             tparm  because  the parameters to be incremented were already
513             on the internal stack.
514           + change  "%l" behavior in tparm to push the string length onto
515             the  stack  rather  than saving the formatted length into the
516             output buffer.
517           + modify  name-comparison  for  tgetstr,  etc.,  to accommodate
518             legacy  applications  as well as to improve compatbility with
519             BSD 4.2 termcap implementations (see note for [66]980725).
520      * High-level interfaces
521           + modify internal recursion in wgetch which handles cooked mode
522             to  check if the call to wgetnstr returned an error. This can
523             happen  when  both nocbreak and nodelay are set, for instance
524             (see note for [67]960418).
525           + add a check in internal function waddch_nosync to ensure that
526             tab characters are treated as control characters; some broken
527             locales claim they are printable.
528           + modify  menu  library  to  ensure  that  a  menu's top-row is
529             adjusted  as needed to ensure that the current item is on the
530             screen
531           + fix  special  case  where double-width character overwrites a
532             single- width character in the first column.
533
534   Configuration changes
535
536     Major changes
537
538    The ncurses 6.0 configure script makes changes to the default value of
539    several  configure options, depending on the --with-abi-version option
540    (i.e., whether its value is "5" or "6"):
541
542    --enable-const
543           Feature  introduced  in  [68]970405  supports  the use of const
544           where  X/Open  Curses  should  have, but did not. NetBSD curses
545           does something similar with const.
546
547    --enable-ext-colors
548           Extends  the  cchar_t structure to allow more than 16 colors to
549           be   encoded.   This   applies   only   to  the  wide-character
550           (--enable-widec) configuration.
551
552    --enable-ext-mouse
553           Modifies  the  encoding  of  mouse state to make room for a 5th
554           mouse button. That allows one to use ncurses with a wheel mouse
555           with xterm or similar X terminal emulators.
556
557    --enable-ext-putwin
558           Modifies  the  file-format  written  by putwin to use printable
559           text  rather  than binary files, allowing getwin to read screen
560           dumps  written by differently-configured ncurses libraries. The
561           extended  getwin  can  still  read binary screen dumps from the
562           same  configuration  of  ncurses.  This does not change the ABI
563           (the binary interface seen by calling applications).
564
565    --enable-interop
566           Modifies  the  FIELDTYPE structure used for the form library to
567           make it more generic.
568
569    --enable-lp64
570           Allows  an  application  to  define _LP64 to declare chtype and
571           mmask_t  as  simply "unsigned" rather than the configured types
572           using the --with-chtype and --with-mmask_t options.
573
574    --enable-sp-funcs
575           Compile-in support for extended functions which accept a SCREEN
576           pointer,  reducing  the  need  for juggling the global SP value
577           with [69]set_term and [70]delscreen.
578
579    --with-chtype=uint32_t
580           Makes chtype explicitly a 32-bit unsigned value.
581
582    --with-mmask_t=uint32_t
583           Makes mmask_t explicitly a 32-bit unsigned value.
584
585    --with-tparm-arg=intptr_t
586           X/Open  Curses  declares  [71]tparm  using long for each of the
587           parameters  aside  from  the  formatting string, presuming that
588           long  and  char*  are the same size. This configure option uses
589           intptr_t which provides a better guarantee of the sizes.
590
591    The  configure  script  no longer checks for antique compilers; c89 is
592    assumed  as  a  minimum. There are a few features from later revisions
593    which  are  used  when available. The configure script makes checks to
594    turn on useful warnings from clang, gcc and icc. You should be able to
595    build  ncurses  6.0  with  any  of  the  current (or not so current) C
596    compilers available in 2015.
597
598    The configure script, by the way, makes changes which do not work with
599    systems  whose  /bin/sh is non-POSIX. This mainly affects Solaris (the
600    other  vendor  unix systems have followed the POSIX guidelines for the
601    past  twenty  years).  If  you  must  build  on  Solaris, its [72]xpg4
602    binaries suffice, e.g.,
603
604      #!/bin/sh
605      WHAT=`hostname|sed -e 's/\..*//'`
606      OUT=configure.out
607      cat >>$OUT <<EOF/
608      ** `date`
609      ** node: $WHAT
610      ** user: `id`
611      ** conf: $*
612      EOF/
613
614      SHELL=/bin/sh
615      if test -f /usr/xpg4/bin/sh
616      then
617              CONFIG_SHELL=/usr/xpg4/bin/sh
618              export CONFIG_SHELL
619              SHELL=$CONFIG_SHELL
620      fi
621
622      rm -f config.status config.cache
623      TOP=$HOME/$WHAT
624      $SHELL ./configure --verbose \
625              --disable-echo \
626              --disable-overwrite \
627              --enable-warnings \
628              --with-warnings \
629              --prefix=$TOP $* 2>&1 | tee -a $OUT
630
631    Other major changes to the configure script include:
632      * ABI 6 is now the default, intending that the existing ABI 5 should
633        build as before using the "--with-abi-version=5" option.
634      * added   --with-extra-suffix   option   to   help  with  installing
635        nonconflicting  ncurses6  packages,  e.g.,  avoiding  header-  and
636        library-conflicts.
637        NOTE: as a side-effect, this renames
638
639      adacurses-config to adacurses5-config and
640      adacursesw-config to adacursesw5-config
641      * the  configure  script  looks  for gnatgcc if the Ada95 binding is
642        built,  in  preference  to  the  default  gcc/cc.  The script also
643        ensures  that  the  Ada95  binding  is  built  with  the  level of
644        optimization as the C libraries.
645      * the  configure script captures define's related to -D_XOPEN_SOURCE
646        from  the  configure check and adds those to the *-config and *.pc
647        files, to simplify use for the wide-character libraries.
648
649     Configuration options
650
651    There are several new (or extended) configure options:
652
653    --disable-db-install
654           Do  not  install  the  terminal  database. This is used to omit
655           features for packages, as done with --without-progs. The option
656           simplifies building cross-compile support packages.
657
658    --disable-gnat-projects
659           This option is used for regression testing
660
661    --disable-lib-suffixes
662           Suppress  the "w", "t" or "tw" suffixes which normally would be
663           added   to   the  library  names  for  the  --enable-widec  and
664           --with-pthread options.
665
666    --with-cxx-shared
667           When  --with-shared  is  set,  build  libncurses++  as a shared
668           library.  This  implicitly  relies  upon building with gcc/g++,
669           since  other  compiler  suites  may have differences in the way
670           shared  libraries  are  built.  libtool  by the way has similar
671           limitations.
672
673    --with-hashed-db
674           Extended  this  configure  option  to  simplify  building  with
675           different versions of Berkeley database using FreeBSD ports.
676
677    --with-pc-suffix
678           If  ".pc"  files  are installed, optionally add a suffix to the
679           files  and  corresponding  package  names  to  separate unusual
680           configurations.  If  no  option  value  is  given  (or if it is
681           "none"),  no  suffix  is added. This option is used in the test
682           package for ncurses6.
683
684    --with-xterm-kbs
685           Configure  xterm's terminfo entries to use either BS (^H, i.e.,
686           ASCII backspace) or DEL (^?, or 127).
687
688   Portability
689
690     MinGW
691
692    Most  of  the  portability-related work since [73]ncurses 5.9 extended
693    and improved the MinGW port introduced in [74]ncurses 5.8.
694
695    The MinGW port can be readily cross-compiled:
696      * modified  configure  script to allow creating dll's for MinGW when
697        cross-compiling.
698      * enforced Windows-style path-separator if cross-compiling,
699      * added  scripts  for  test-builds  of  cross-compiled  packages for
700        ncurses6 to MinGW.
701      * added pc-files to the MinGW cross-compiling test-packages.
702      * added script for building test-packages of binaries cross-compiled
703        to MinGW using NSIS.
704      * added  nc_mingw.h  to  installed  headers  for MinGW port; this is
705        needed for cross-compiling [75]ncurses-examples.
706      * added test-packages for cross-compiling ncurses-examples using the
707        MinGW test-packages.
708
709    The MinGW-specific Windows driver accounts for several changes:
710      * wide-character   display  is  made  usable  by  replacing  MinGW's
711        non-working wcrtomb and wctomb functions.
712      * implemented    some   display   features:   [76]beep,   [77]flash,
713        [78]curs_set.
714      * the driver handles repainting on endwin/refresh combination.
715      * modified  treatment  of  TERM  variable  for  MinGW  port to allow
716        explicit use of the Windows console driver by checking if $TERM is
717        set to "#win32console" or an abbreviation of that.
718      * the Windows driver also matches the special TERM value "unknown"
719      * the driver now returns characters for special keys, (like ansi.sys
720        does),  when  keypad mode is off, rather than returning nothing at
721        all.
722      * the  driver checks a new environment variable [79]NCURSES_CONSOLE2
723        to  optionally  work  around  a  deficiency  in  Console2 (and its
724        descendent  ConsoleZ)  which  hang  when  an application creates a
725        console buffer.
726
727    Finally, there are other improvements:
728      * MinGW  is  one  of  the  configurations  where ncurses installs by
729        default into /usr
730      * configuration   for   cross-compiling   uses   AC_CHECK_TOOLS   in
731        preference  to  AC_PATH_PROGS  when searching for ncurses*-config,
732        e.g., in Ada95/configure and test/configure.
733      * extend Windows support to work with MSYS2;
734           + this  works  with  a  scenario  where there is an ANSI-escape
735             handler such as ansicon running in the console window.
736           + wrap  isatty  calls with a macro, provide a corresponding set
737             of  support routines to address differences between MinGW and
738             MSYS2.
739      * ensure WINVER is defined in makefiles rather than using headers.
740      * add check for the gnatprep "-T" option.
741      * work  around  a  bug  introduced  by  [80]gcc 4.8.1 in MinGW which
742        breaks "trace" feature.
743      * add a driver-name method to each of the drivers.
744
745     Other ports
746
747    These changes affect certain platforms (ports):
748      * the  configure  script  knows  how  to build shared libraries with
749        DragonFlyBSD and Interix.
750      * support for AIX shared libraries is improved, tested with AIX 5.3,
751        6.1 and 7.1 with both gcc 4.2.4 and cc:
752           + the shared-library suffix for AIX 5 and 6 is now ".so"
753           + the  -brtl  option is used with AIX 5-7; it is needed to link
754             with the shared libraries.
755      * the  configure  --enable-pc-files  option  takes  into account the
756        [81]PKG_CONFIG_PATH variable.
757      * the  configure  option  --with-pkg-config-libdir  provides control
758        over the actual directory into which pc-files are installed.
759      * the  build  scripts  add  explicit -ltinfo, etc., to the generated
760        ".pc"  file  when ld option "--as-needed" is used, or when ncurses
761        and tinfo are installed without using rpath.
762      * the     configure    script    disallows    conflicting    options
763        "--with-termlib" and "--enable-term-driver".
764      * the  check  for  missing  c++  compiler  to  work when no error is
765        reported,   and  no  variables  set  is  improved  (see  note  for
766        [82]20021206).
767      * the  misc/gen_edit.sh  script  selects a "linux" entry which works
768        with  the  current  kernel  rather  than  assuming  it  is  always
769        "linux3.0"
770      * the  test/configure  script  makes it simpler to override names of
771        curses-related  libraries,  to  help with linking with pdcurses in
772        MinGW environment.
773      * the  configure-script/ifdef's  allow the BSD OLD_TTY feature to be
774        suppressed  if  the  type of ospeed is configured using the option
775        --with-ospeed  to  not  be  a short. By default, it is a short for
776        termcap-compatibility.
777      * the  MKlib_gen.sh  script  works  around  a recent change in gcc 5
778        (released  [83]mid-2015)  which  essentially  emits multiple #line
779        statements for the same position in a file.
780      * the   configure  script  works  with  Minix3.2  (see  [84]note  on
781        portability)
782      * OS/2 redux:
783           + the configure script supports OS/2 kLIBC.
784           + the  --with-lib-prefix  option allows configuring for old/new
785             flavors of OS/2 EMX.
786      * improved configure-script checks for _XOPEN_SOURCE:
787           + the definition works starting with Solaris 10.
788           + the  definition  is  suppressed  for IRIX64, since its header
789             files have a conflict versus _SGI_SOURCE.
790      _________________________________________________________________
791
792 Features of ncurses
793
794    The  ncurses  package  is  fully upward-compatible with SVr4 (System V
795    Release 4) curses:
796      * All of the SVr4 calls have been implemented (and are documented).
797      * ncurses  supports  all  of  the for SVr4 curses features including
798        keyboard  mapping,  color,  forms-drawing with ACS characters, and
799        automatic recognition of keypad and function keys.
800      * ncurses  provides  these SVr4 add-on libraries (not part of X/Open
801        Curses):
802           + the  panels  library,  supporting  a  stack  of  windows with
803             backing store.
804           + the   menus   library,  supporting  a  uniform  but  flexible
805             interface for menu programming.
806           + the   form   library,   supporting  data  collection  through
807             on-screen forms.
808      * ncurses's  terminal database is fully compatible with that used by
809        SVr4 curses.
810           + ncurses  supports user-defined capabilities which it can see,
811             but  which are hidden from SVr4 curses applications using the
812             same terminal database.
813           + It  can  be optionally configured to match the format used in
814             related systems such as AIX and Tru64.
815           + Alternatively,  ncurses  can  be  configured  to  use  hashed
816             databases  rather  than  the  directory of files used by SVr4
817             curses.
818      * The ncurses utilities have options to allow you to filter terminfo
819        entries for use with less capable curses/terminfo versions such as
820        the HP/UX and AIX ports.
821
822    The ncurses package also has many useful extensions over SVr4:
823      * The  API  is 8-bit clean and base-level conformant with the X/OPEN
824        curses  specification, XSI curses (that is, it implements all BASE
825        level  features,  and  most  EXTENDED  features). It includes many
826        function calls not supported under SVr4 curses (but portability of
827        all calls is documented so you can use the SVr4 subset only).
828      * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
829        corner  of  the  screen  if  your terminal has an insert-character
830        capability.
831      * Ada95 and C++ bindings.
832      * Support  for mouse event reporting with X Window xterm and FreeBSD
833        and OS/2 console windows.
834      * Extended mouse support via Alessandro Rubini's gpm package.
835      * The  function  wresize  allows  you  to resize windows, preserving
836        their data.
837      * The  function  use_default_colors allows you to use the terminal's
838        default colors for the default color pair, achieving the effect of
839        transparent colors.
840      * The functions keyok and define_key allow you to better control the
841        use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
842        defining  more  than  one  control  sequence to map to a given key
843        code.
844      * Support for 256-color terminals, such as modern xterm.
845      * Support for 16-color terminals, such as aixterm and modern xterm.
846      * Better  cursor-movement  optimization.  The package now features a
847        cursor-local-movement computation more efficient than either BSD's
848        or System V's.
849      * Super   hardware   scrolling   support.   The  screen-update  code
850        incorporates  a novel, simple, and cheap algorithm that enables it
851        to  make  optimal  use  of hardware scrolling, line-insertion, and
852        line-deletion  for  screen-line  movements. This algorithm is more
853        powerful than the 4.4BSD curses quickch routine.
854      * Real  support  for  terminals  with  the  magic-cookie glitch. The
855        screen-update  code  will  refrain from drawing a highlight if the
856        magic-   cookie  unattributed  spaces  required  just  before  the
857        beginning  and  after the end would step on a non-space character.
858        It  will  automatically  shift  highlight boundaries when doing so
859        would  make it possible to draw the highlight without changing the
860        visual appearance of the screen.
861      * It  is  possible to generate the library with a list of pre-loaded
862        fallback  entries linked to it so that it can serve those terminal
863        types  even  when  no  terminfo tree or termcap file is accessible
864        (this  may  be useful for support of screen-oriented programs that
865        must run in single-user mode).
866      * The  [85]tic/[86]captoinfo  utility  provided with ncurses has the
867        ability  to  translate  many termcaps from the XENIX, IBM and AT&T
868        extension sets.
869      * A BSD-like [87]tset utility is provided.
870      * The ncurses library and utilities will automatically read terminfo
871        entries  from  $HOME/.terminfo  if  it exists, and compile to that
872        directory  if  it  exists  and the user has no write access to the
873        system  directory.  This feature makes it easier for users to have
874        personal  terminfo  entries without giving up access to the system
875        terminfo directory.
876      * You  may  specify  a  path  of  directories to search for compiled
877        descriptions  with  the  environment  variable TERMINFO_DIRS (this
878        generalizes  the  feature  provided by TERMINFO under stock System
879        V.)
880      * In  terminfo  source files, use capabilities may refer not just to
881        other entries in the same source file (as in System V) but also to
882        compiled  entries  in  either the system terminfo directory or the
883        user's $HOME/.terminfo directory.
884      * The  table-of-entries  utility  [88]toe makes it easy for users to
885        see exactly what terminal types are available on the system.
886      * The library meets the XSI requirement that every macro entry point
887        have  a  corresponding  function  which may be linked (and will be
888        prototype-checked)  if  the  macro  definition  is  disabled  with
889        #undef.
890      * Extensive   documentation  is  provided  (see  the  [89]Additional
891        Reading section of the [90]ncurses FAQ for online documentation).
892
893 Applications using ncurses
894
895    The  ncurses  distribution  includes  a  selection  of  test  programs
896    (including   a   few   games).   These  are  available  separately  as
897    [91]ncurses-examples
898
899    The   ncurses   library  has  been  tested  with  a  wide  variety  of
900    applications including:
901
902    cdk
903           Curses Development Kit
904
905           [92]http://invisible-island.net/cdk/
906
907    ded
908           directory-editor
909
910           [93]http://invisible-island.net/ded/
911
912    dialog
913           the  underlying  application used in Slackware's setup, and the
914           basis   for  similar  install/configure  applications  on  many
915           systems.
916
917           [94]http://invisible-island.net/dialog/
918
919    lynx
920           the text WWW browser
921
922           [95]http://lynx.isc.org/
923
924    Midnight Commander
925           file manager
926
927           [96]http://www.midnight-commander.org/
928
929    mutt
930           mail utility
931
932           [97]http://www.mutt.org/
933
934    ncftp
935           file-transfer utility
936
937           [98]http://www.ncftp.com/
938
939    nvi
940           New vi uses ncurses.
941
942           [99]https://sites.google.com/a/bostic.com/keithbostic/nvi
943
944    tin
945           newsreader, supporting color, MIME
946
947           [100]http://www.tin.org/
948
949    as well as some that use ncurses for the terminfo support alone:
950
951    minicom
952           terminal emulator for serial modem connections
953
954           [101]http://alioth.debian.org/projects/minicom/
955
956    mosh
957           a replacement for ssh.
958
959           [102]https://mosh.mit.edu/
960
961    tack
962           terminfo action checker
963
964           [103]http://invisible-island.net/ncurses/tack.html
965
966    tmux
967           terminal multiplexor
968
969           [104]http://tmux.github.io/
970
971    vile
972           vi-like-emacs  may  be  built  to  use the terminfo, termcap or
973           curses interfaces.
974
975           [105]http://invisible-island.net/vile/
976
977    and finally, those which use only the termcap interface:
978
979    emacs
980           text editor
981
982           [106]http://www.gnu.org/software/emacs/
983
984    screen
985           terminal multiplexor
986
987           [107]http://www.gnu.org/software/screen/
988
989    vim
990           text editor
991
992           [108]http://www.vim.org/
993
994 Development activities
995
996    Zeyd  Ben-Halim  started  ncurses  from  a  previous  package pcurses,
997    written  by  Pavel  Curtis.  Eric  S.  Raymond  continued development.
998    Juergen  Pfeifer  wrote  most  of the form and menu libraries. Ongoing
999    development  work  is  done  by [109]Thomas Dickey. Thomas Dickey also
1000    acts  as  the maintainer for the Free Software Foundation, which holds
1001    the [110]copyright on ncurses.
1002
1003    Contact the current maintainers at
1004
1005      [111]bug-ncurses@gnu.org
1006
1007    To join the ncurses mailing list, please write email to
1008
1009      [112]bug-ncurses-request@gnu.org
1010
1011    containing the line:
1012
1013      subscribe <name>@<host.domain>
1014
1015    This list is open to anyone interested in helping with the development
1016    and testing of this package.
1017
1018    Beta  versions  of ncurses and patches to the current release are made
1019    available at
1020
1021      [113]ftp://invisible-island.net/ncurses/ .
1022
1023    There is an archive of the mailing list here:
1024
1025      [114]http://lists.gnu.org/archive/html/bug-ncurses            (also
1026      [115]https)
1027
1028 Related resources
1029
1030    The  release notes make scattered references to these pages, which may
1031    be interesting by themselves:
1032      * [116]man2html
1033      * [117]ncurses licensing
1034      * [118]Symbol versioning in ncurses
1035      * [119]The MinGW port of ncurses
1036      * [120]tack - terminfo action checker
1037      * [121]tar versus portability
1038      * [122]tctest - termcap library checker
1039      * [123]Terminal Database
1040
1041 Other resources
1042
1043    The  distribution  provides  a  newer  version  of the terminfo-format
1044    terminal  description  file  once  maintained  by  [124]Eric Raymond .
1045    Unlike  the  older version, the termcap and terminfo data are provided
1046    in  the  same  file,  and  provides  several user-definable extensions
1047    beyond the X/Open specification.
1048
1049    You  can  find  lots  of  information  on  terminal-related topics not
1050    covered in the terminfo file at [125]Richard Shuford's archive .
1051
1052      * [126]Overview
1053      * [127]Release Notes
1054           + [128]Library improvements
1055                o [129]Output buffering
1056                o [130]Symbol versioning
1057                o [131]Miscellaneous
1058           + [132]Program improvements
1059                o [133]Utilities
1060                o [134]Examples
1061           + [135]Terminal database
1062           + [136]Documentation
1063           + [137]Interesting bug-fixes
1064           + [138]Configuration changes
1065                o [139]Major changes
1066                o [140]Configuration options
1067           + [141]Portability
1068                o [142]MinGW
1069                o [143]Other ports
1070      * [144]Features of ncurses
1071      * [145]Applications using ncurses
1072      * [146]Development activities
1073      * [147]Related resources
1074      * [148]Other resources
1075
1076 References
1077
1078    1. http://invisible-island.net/ncurses/man/captoinfo.1m.html
1079    2. http://invisible-island.net/ncurses/man/clear.1.html
1080    3. http://invisible-island.net/ncurses/man/infocmp.1m.html
1081    4. http://invisible-island.net/ncurses/man/tabs.1.html
1082    5. http://invisible-island.net/ncurses/man/tic.1m.html
1083    6. http://invisible-island.net/ncurses/man/toe.1m.html
1084    7. http://invisible-island.net/ncurses/man/tput.1.html
1085    8. http://invisible-island.net/ncurses/man/tset.1.html
1086    9. ftp://ftp.gnu.org/gnu/ncurses/
1087   10. ftp://invisible-island.net/ncurses/
1088   11. http://invisible-island.net/ncurses/tctest.html
1089   12. http://invisible-island.net/ncurses/ncurses-examples.html
1090   13. http://lists.gnu.org/archive/html/bug-ncurses/2012-07/msg00029.html
1091   14. http://invisible-island.net/ncurses/NEWS.html#t20050101
1092   15. http://invisible-island.net/ncurses/announce-5.5.html
1093   16. http://invisible-island.net/ncurses/ncurses-mapsyms.html
1094   17. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr
1095   18. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm
1096   19. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization
1097   20. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_NO_SETBUF
1098   21. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html
1099   22. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode
1100   23. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode
1101   24. http://invisible-island.net/ncurses/man/curs_printw.3x.html
1102   25. http://invisible-island.net/ncurses/ncurses-mapsyms.html
1103   26. http://invisible-island.net/ncurses/tack.html
1104   27. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl
1105   28. http://invisible-island.net/ncurses/man/curs_opaque.3x.html
1106   29. http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY
1107   30. http://invisible-island.net/ncurses/man/form_field_opts.3x.html
1108   31. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin
1109   32. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin
1110   33. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output
1111   34. http://invisible-island.net/ncurses/tctest.html
1112   35. http://invisible-island.net/ncurses/tctest.html#my-better-translation
1113   36. http://invisible-island.net/ncurses/NEWS.html#t980103
1114   37. https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&view=markup#l784
1115   38. http://invisible-island.net/ncurses/ncurses-examples.html
1116   39. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env
1117   40. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-derwin
1118   41. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-mvwin
1119   42. http://invisible-island.net/ncurses/man/form_driver.3x.html#h3-form_driver_w
1120   43. http://invisible-island.net/ncurses/terminfo.src.html#toc-_M_L_T_E_R_M
1121   44. http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm
1122   45. http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco
1123   46. http://invisible-island.net/ncurses/terminfo.src.html#tic-teken
1124   47. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R
1125   48. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y
1126   49. http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux
1127   50. http://invisible-island.net/ncurses/terminfo.src.html#toc-_S_I_M_P_L_E_T_E_R_M
1128   51. http://invisible-island.net/ncurses/terminfo.src.html#tic-vte
1129   52. http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi
1130   53. http://aerie.jexium-island.net/ncurses/man/clear.1.html
1131   54. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_sl
1132   55. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1005
1133   56. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1006
1134   57. http://invisible-island.net/ncurses/NEWS.html
1135   58. http://invisible-island.net/scripts/man2html.html
1136   59. http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html
1137   60. http://invisible-island.net/ncurses/NEWS.html#t20110319
1138   61. http://invisible-island.net/ncurses/NEWS.html#t20021221
1139   62. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions
1140   63. http://invisible-island.net/ncurses/man/default_colors.3x.html
1141   64. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions
1142   65. http://invisible-island.net/ncurses/man/resizeterm.3x.html
1143   66. http://invisible-island.net/ncurses/NEWS.html#t980725
1144   67. http://invisible-island.net/ncurses/NEWS.html#t960418
1145   68. http://invisible-island.net/ncurses/NEWS.html#t970405
1146   69. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-set_term
1147   70. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-delscreen
1148   71. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output
1149   72. http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html
1150   73. http://invisible-island.net/ncurses/announce-5.9.html
1151   74. http://invisible-island.net/ncurses/announce-5.8.html
1152   75. http://invisible-island.net/ncurses/ncurses-examples.html
1153   76. http://invisible-island.net/ncurses/man/curs_beep.3x.html
1154   77. http://invisible-island.net/ncurses/man/curs_beep.3x.html
1155   78. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set
1156   79. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_CONSOLE2
1157   80. http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual
1158   81. http://linux.die.net/man/1/pkg-config
1159   82. http://invisible-island.net/ncurses/NEWS.html#t20021206
1160   83. https://gcc.gnu.org/gcc-5/
1161   84. http://invisible-island.net/autoconf/portability-test.html
1162   85. http://invisible-island.net/ncurses/man/tic.1m.html
1163   86. http://invisible-island.net/ncurses/man/captoinfo.1m.html
1164   87. http://invisible-island.net/ncurses/man/tset.1.html
1165   88. http://invisible-island.net/ncurses/man/toe.1m.html
1166   89. http://invisible-island.net/ncurses/ncurses.faq.html#additional_reading
1167   90. http://invisible-island.net/ncurses/ncurses.faq.html
1168   91. http://invisible-island.net/ncurses/ncurses-examples.html
1169   92. http://invisible-island.net/cdk/
1170   93. http://invisible-island.net/ded/
1171   94. http://invisible-island.net/dialog/
1172   95. http://lynx.isc.org/
1173   96. http://www.midnight-commander.org/
1174   97. http://www.mutt.org/
1175   98. http://www.ncftp.com/
1176   99. https://sites.google.com/a/bostic.com/keithbostic/nvi
1177  100. http://www.tin.org/
1178  101. http://alioth.debian.org/projects/minicom/
1179  102. https://mosh.mit.edu/
1180  103. http://invisible-island.net/ncurses/tack.html
1181  104. http://tmux.github.io/
1182  105. http://invisible-island.net/vile/
1183  106. http://www.gnu.org/software/emacs/
1184  107. http://www.gnu.org/software/screen/
1185  108. http://www.vim.org/
1186  109. mailto:dickey@invisible-island.net
1187  110. http://invisible-island.net/ncurses/ncurses-license.html
1188  111. mailto:bug-ncurses@gnu.org
1189  112. mailto:bug-ncurses-request@gnu.org
1190  113. ftp://invisible-island.net/ncurses/
1191  114. http://lists.gnu.org/archive/html/bug-ncurses
1192  115. https://lists.gnu.org/archive/html/bug-ncurses
1193  116. http://invisible-island.net/scripts/man2html.html
1194  117. http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html
1195  118. http://invisible-island.net/ncurses/ncurses-mapsyms.html
1196  119. http://invisible-island.net/ncurses/ncurses-mingw.html
1197  120. http://invisible-island.net/ncurses/tack.html
1198  121. http://invisible-island.net/autoconf/portability-tar.html
1199  122. http://invisible-island.net/ncurses/tctest.html
1200  123. http://invisible-island.net/ncurses/ncurses.html#download_database
1201  124. http://www.catb.org/~esr/terminfo/
1202  125. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
1203  126. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-overview
1204  127. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-release-notes
1205  128. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-library
1206  129. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-setbuf
1207  130. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-versioning
1208  131. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-other
1209  132. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-programs
1210  133. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-utilities
1211  134. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-examples
1212  135. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-database
1213  136. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-documentation
1214  137. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-bug-fixes
1215  138. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-config-config
1216  139. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-major
1217  140. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-options
1218  141. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-portability
1219  142. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-mingw
1220  143. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-systems
1221  144. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-features
1222  145. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-who-uses
1223  146. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-development
1224  147. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-this-stuff
1225  148. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-other-stuff