announce.html.in revision 76726
150276Speter<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
250276Speter<!--
376726Speter  $Id: announce.html.in,v 1.41 2000/10/28 21:43:25 tom Exp $
450276Speter-->
550276Speter<HTML>
650276Speter<HEAD>
750276Speter<TITLE>Announcing ncurses @VERSION@</TITLE>
850276Speter<link rev=made href="mailto:bug-ncurses@gnu.org">
950276Speter</HEAD>
1050276Speter<BODY>
1150276Speter
1250276Speter<H1>Announcing ncurses @VERSION@</H1>
1350276Speter
1450276SpeterThe ncurses (new curses) library is a free software emulation of
1550276Spetercurses in System V Release 4.0, and more.  It uses terminfo format,
1650276Spetersupports pads and color
1750276Speterand multiple highlights and forms characters and function-key mapping,
1850276Speterand has all the other SYSV-curses enhancements over BSD curses.<P>
1950276Speter
2050276SpeterIn mid-June 1995, the maintainer of 4.4BSD curses declared that he
2150276Speterconsidered 4.4BSD curses obsolete, and is encouraging the keepers of
2250276SpeterUnix releases such as BSD/OS, freeBSD and netBSD to switch over to
2350276Speterncurses.<P>
2450276Speter
2576726SpeterThe ncurses code was developed under GNU/Linux.
2676726SpeterIt has been in use for some time with OpenBSD as the system curses library,
2776726Speterand on FreeBSD and NetBSD as an external package.
2876726SpeterIt should port easily to any ANSI/POSIX-conforming UNIX.
2976726SpeterIt has even been ported to OS/2 Warp!<P>
3050276Speter
3150276SpeterThe distribution includes the library and support utilities, including a
3250276Speterterminfo compiler tic(1), a decompiler infocmp(1), clear(1), tput(1), tset(1),
3350276Speterand a termcap conversion tool captoinfo(1).  Full manual pages are provided for
3450276Speterthe library and tools.<P>
3550276Speter
3650276SpeterThe ncurses distribution is available via anonymous FTP at
3750276Speterthe GNU distribution site
3856639Speter<A HREF="ftp://ftp.gnu.org/pub/gnu/ncurses">ftp://ftp.gnu.org/pub/gnu/ncurses</A>.
3966963Speter<br>It is also available at
4062449Speter<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
4150276Speter
4250276Speter<H1>Release Notes</H1>
4350276Speter
4476726SpeterThis release is designed to be upward compatible from ncurses 5.0 and 5.1;
4576726Spetervery few applications will require recompilation, depending on the platform.
4676726SpeterThese are the highlights from the change-log since ncurses 5.1 release.
4750276Speter<p>
4850276SpeterInterface changes:
4950276Speter<ul>
5076726Speter	<li>change type of <code>ospeed</code> variable back to
5176726Speter	  <code>short</code> to match its use in legacy applications.  It was
5276726Speter	  altered after ncurses 4.2 to <code>speed_t</code> to repair a type
5376726Speter	  mismatch which was introduced after 1.9.4 in 1995.  The principal
5476726Speter	  users of termcap continued to use <code>short</code>, which is
5576726Speter	  not the same size.
5676726Speter	  <p>
5776726Speter	  <em>NOTE</em>: A few applications will have to be recompiled
5876726Speter	  (about 1% of the programs in a typical Linux distribution,
5976726Speter	  10% of the programs that use ncurses).  These are easy to
6076726Speter	  identify with <code>nm</code> or <code>strings</code>.
6150276Speter
6276726Speter	<li>remove a private function <code>_nc_can_clear_with()</code>, which
6376726Speter	  was built with the configure --enable-expanded option but not used.
6450276Speter
6576726Speter	<li>add several private functions (prefixed with "_nc_") for tracing
6676726Speter	  <code>chtype</code> values in the debug library, and for better
6776726Speter	  access and buffer limit checking.
6850276Speter</ul>
6976726SpeterNew features and improvements:
7050276Speter<ul>
7176726Speter	<li>rewrote <code>tgoto()</code> to make it better support existing
7276726Speter	  termcap applications which use hardcoded strings rather than obtain
7376726Speter	  all of their information from the termcap file.  If the string does
7476726Speter	  not appear to be a terminfo string (i.e., does not refer to a "%p"
7576726Speter	  parameter, or terminfo-style padding), and termcap support is configured, <code>tgoto()</code>
7676726Speter	  will interpret it as termcap.  Otherwise, as before, it will use
7776726Speter	  <code>tparm()</code>.
7850276Speter
7976726Speter	<li>to ensure that the <code>tgoto()</code> changes work properly,
8076726Speter	  added checks to <code>tic</code> which report capabilities that do
8176726Speter	  not reference the expected number of parameters.
8276726Speter
8376726Speter	<li>new configure script options:
8462449Speter	<ul>
8576726Speter	  <li>option <code>--disable-root-environ</code> adds runtime checks
8676726Speter	    which tell ncurses to disregard $TERMINFO and similar environment
8776726Speter	    variables if the current user is root, or running setuid/setgid.
8850276Speter
8976726Speter	  <li>option <code>--disable-assumed-color</code> allows you to use the
9076726Speter	    pre-5.1 convention of default colors used for color-pair 0 to be
9176726Speter	    configured (see assume_default_colors()).
9250276Speter
9376726Speter	  <li>implement configure script options that transform installed
9476726Speter	    program names, e.g., <code>--program-prefix</code>, including the
9576726Speter	    manpage names and cross references.
9676726Speter
9776726Speter	  <li>option <code>--with-database</code> allows you to specify a
9876726Speter	    different terminfo source-file to install.  On OS/2 EMX, the
9976726Speter	    default is misc/emx.src, otherwise misc/terminfo.src
10076726Speter
10176726Speter	  <li>option <code>--with-default-terminfo-dir</code> allows you to
10276726Speter	    specify the default terminfo database directory.
10376726Speter
10476726Speter	  <li>option <code>--with-libtool</code> allows you to build with
10576726Speter	    <code>libtool</code>.  <p> <em>NOTE</em>:  <code>libtool</code>
10676726Speter	    uses a different notation for numbering shared library versions
10776726Speter	    from the existing ncurses configuration.
10876726Speter
10976726Speter	  <li>option <code>--with-manpage-tbl</code> causes the manpages to be
11076726Speter	    preprocessed by tbl(1) prior to installation,
11176726Speter
11276726Speter	  <li>option <code>--without-curses-h</code> causes the installation
11376726Speter	    process to install curses.h as ncurses.h and make appropriate
11476726Speter	    changes to headers and manpages.
11562449Speter	</ul>
11650276Speter
11776726Speter	<li>modified configure script options:
11862449Speter	<ul>
11976726Speter	  <li>change symbol used by the <code>--install-prefix</code> configure
12076726Speter	    option from <code>INSTALL_PREFIX</code> to <code>DESTDIR</code>
12176726Speter	    (the latter has become common usage although the name is
12276726Speter	    misleading).
12376726Speter
12476726Speter	  <li>modify <code>ld -rpath</code> options (e.g., Linux, and Solaris)
12576726Speter	    to use an absolute pathname for the build tree's lib directory,
12676726Speter	    avoiding confusion with directories relative to the current one
12776726Speter	    with the installed programs.
12876726Speter
12976726Speter	  <li>modified <code>misc/run_tic.in</code> to use
13076726Speter	    <code>tic&nbsp;-o</code>, to eliminate dependency on
13176726Speter	    <code>$TERMINFO</code> variable for installs.
13262449Speter	</ul>
13350276Speter
13476726Speter	<li>terminfo database:
13576726Speter	<ul>
13676726Speter	  <li>updated xterm terminfo entries to match XFree86 xterm patch #146.
13750276Speter
13876726Speter	  <li>added amiga-vnc,
13976726Speter	    Matrix Orbital, and
14076726Speter	    QNX qansi to misc/terminfo.src.
14150276Speter
14276726Speter	  <li>added os2 entry to misc/emx.src.
14350276Speter
14476726Speter	  <li>add S0 and E0 extensions to <code>screen</code>'s terminfo entry
14576726Speter	    since otherwise the FreeBSD port makes it pass termcap equivalents
14676726Speter	    to <code>tgoto</code>, which would be misinterpreted by older
14776726Speter	    versions of ncurses.
14876726Speter	</ul>
14950276Speter
15076726Speter	<li>improvements to program usability:
15176726Speter	<ul>
15276726Speter	  <li>modify programs to use <code>curses_version()</code> string to
15376726Speter	    report the version of ncurses with which they are compiled rather
15476726Speter	    than the NCURSES_VERSION string.  The function returns the patch
15576726Speter	    level in addition to the major and minor version numbers.
15650276Speter
15776726Speter	  <li>modify <code>tput</code> program so it can be renamed or invoked via a link as
15876726Speter	    'reset' or 'init', producing the same effect as <code>tput&nbsp;reset</code> or <code>tput&nbsp;init</code>.
15950276Speter
16076726Speter	  <li>add error checking to infocmp's -v and -m options to ensure that
16176726Speter	    the option value is indeed a number.
16276726Speter	</ul>
16350276Speter
16476726Speter	<li>improved performance:
16576726Speter	<ul>
16676726Speter	  <li>replace a lookup table in lib_vidattr.c used to decode
16776726Speter	    <code>no_color_video</code> with a logic expression which is faster.
16876726Speter	</ul>
16976726Speter
17050276Speter</ul>
17150276SpeterMajor bug fixes:
17250276Speter<ul>
17376726Speter	<li>correct <code>manlinks.sed</code> script introduced in ncurses 5.1
17476726Speter	  to avoid using ERE "\+", which is not understood by standard versions
17576726Speter	  of <code>sed</code>.  This happens to work with GNU <code>sed</code>,
17676726Speter	  but is not portable, and was the initial motivation for this release.
17750276Speter
17876726Speter	<li>remove "hpux10.*" case from CF_SHARED_OPTS configure script macro.
17976726Speter	  This differed from the "hpux*" case by using reversed symbolic
18076726Speter	  links, which made the 5.1 version not match the configuration of
18176726Speter	  5.0 shared libraries.
18250276Speter
18376726Speter	<li>guard against corrupt terminfo data:
18476726Speter	  <ul>
18576726Speter	  <li>modify <code>tparm()</code> to disallow arithmetic on strings,
18676726Speter	    analyze the varargs list to read strings as strings and numbers as
18776726Speter	    numbers.
18850276Speter
18976726Speter	  <li>modify <code>tparm()</code>'s internal function
19076726Speter	    <code>spop()</code> to treat a null pointer as an empty string.
19150276Speter
19276726Speter	  <li>modify <code>parse_format()</code> in lib_tparm.c to ignore
19376726Speter	    precision if it is longer than 10000.
19450276Speter
19576726Speter	  <li>rewrote limit checks in lib_mvcur.c using new functions
19676726Speter	    <code>_nc_safe_strcat()</code>, etc.  Made other related changes to
19776726Speter	    check lengths used for <code>strcat()</code> and
19876726Speter	    <code>strcpy()</code>.
19976726Speter	  </ul>
20050276Speter
20176726Speter	<li>corrections to screen optimization:
20276726Speter	  <ul>
20376726Speter	  <li>added special case in lib_vidattr.c to reset underline and
20476726Speter	    standout for devices that have no sgr0 defined.
20562449Speter
20676726Speter	  <li>change handling of <code>non_dest_scroll_region</code> in
20776726Speter	    tty_update.c to clear text after it is shifted in rather than before
20876726Speter	    shifting out.  Also correct row computation.
20962449Speter
21076726Speter	  <li>modify <code>rs2</code> capability in xterm-r6 and similar entries
21176726Speter	    where cursor save/restore bracketed the sequence for resetting video
21276726Speter	    attributes.  The cursor restore would undo that.
21376726Speter	  </ul>
21462449Speter
21576726Speter	<li>UTF-8 support:
21676726Speter	<ul>
21776726Speter	  <li>when checking LC_ALL, LC_CTYPE, and LANG environment variables
21876726Speter	    for UTF-8 locale, ignore those which are set to an empty value, as
21976726Speter	    per SUSV2.
22076726Speter
22176726Speter	  <li>encode 0xFFFD in UTF-8 with 3 bytes, not 2.
22276726Speter
22376726Speter	  <li>modify <code>_nc_utf8_outch()</code> to avoid sign-extension when
22476726Speter	    checking for out-of-range value.
22576726Speter	</ul>
22676726Speter
22776726Speter	<li>other library fixes:
22876726Speter	<ul>
22976726Speter	  <li>added checks for an empty <code>$HOME</code> environment
23076726Speter	    variable, to avoid retrieving terminfo descriptions from
23176726Speter	    <code>./.terminfo</code> .
23276726Speter
23376726Speter	  <li>change functions <code>_nc_parse_entry()</code> and
23476726Speter	    <code>postprocess_termcap()</code> to avoid using
23576726Speter	    <code>strtok()</code>, because it is non-reentrant.
23676726Speter
23776726Speter	  <li>initialize <code>fds[]</code> array to 0's in
23876726Speter	    <code>_nc_timed_wait()</code>; apparently <code>poll()</code> only
23976726Speter	    sets the <code>revents</code> members of that array when there is
24076726Speter	    activity corresponding to the related file.
24176726Speter
24276726Speter	  <li>add a check for null pointer in <code>Make_Enum_Type()</code>.
24376726Speter
24476726Speter	  <li>fix a heap problem with the c++ binding.
24576726Speter
24676726Speter	  <li>correct missing includes for &lt;string.h&gt; in several places,
24776726Speter	    including the C++ binding.  This is not noted by gcc unless we use
24876726Speter	    the <code>-fno-builtin</code> option.
24976726Speter	</ul>
25076726Speter
25176726Speter	<li>several fixes for tic:
25276726Speter	  <ul>
25376726Speter	  <li>add a check for empty buffers returned by <code>fgets()</code> in
25476726Speter	    comp_scan.c <code>next_char()</code> function, in case
25576726Speter	    <code>tic</code> is run on a non-text file (fixes a core dump).
25676726Speter
25776726Speter	  <li>modify <code>tic</code> to verify that its inputs are really files,
25876726Speter	    in case someone tries to read a directory (or
25976726Speter	    <code>/dev/zero</code>).
26076726Speter
26176726Speter	  <li>correct an uninitialized parameter to <code>open_tempfile()</code>
26276726Speter	    in tic.c which made "tic -I" give an ambiguous error message about
26376726Speter	    <code>tmpnam</code>.
26476726Speter
26576726Speter	  <li>correct logic in <code>adjust_cancels()</code>, which did not check
26676726Speter	    both alternatives when reclassifying an extended name between
26776726Speter	    boolean, number and string, causing an infinite loop in
26876726Speter	    <code>tic</code>.
26976726Speter	  </ul>
27076726Speter
27176726Speter	<li>using new checks in <code>tic</code> for parameter counts in
27276726Speter	  capability strings, found/fixed several errors both in the
27376726Speter	  terminfo database and in the include/Caps file.
27476726Speter	  <ul>
27576726Speter	  <li>modified several terminfo capability strings, including the
27676726Speter	    definitions for setaf, setab, in include/Caps to indicate that the
27776726Speter	    entries are parameterized.  This information is used to tell which
27876726Speter	    strings are translated when converting to termcap.  This fixes a
27976726Speter	    problem where the generated termcap would contain a spurious "%p1"
28076726Speter	    for the terminfo "%p1%d".
28176726Speter
28276726Speter	  <li>correct parameter counts in include/Caps for dclk as well as some
28376726Speter	    printer-specific capabilities: csnm, defc, scs, scsd, smgtp, smglp.
28476726Speter	  </ul>
28576726Speter
28676726Speter	<li>various fixes for install scripts used to support configure
28776726Speter	  <code>--srcdir</code> and <code>--with-install-prefix</code>.
28876726Speter
28976726Speter	<li>correct several mismatches between manpage filename and ".TH"
29076726Speter	  directives, renaming dft_fgbg.3x to default_colors.3x and
29176726Speter	  menu_attribs.3x to menu_attributes.3x.
29250276Speter</ul>
29350276Speter
29476726SpeterPortability:
29576726Speter<ul>
29676726Speter	<li>configure script:
29776726Speter	<ul>
29876726Speter	  <li>newer config.guess, config.sub, including changes to support OS/2
29976726Speter	    EMX.  The configure script for OS/2 EMX still relies on a patch
30076726Speter	    since there is no (working) support for that platform in the main
30176726Speter	    autoconf distribution.
30276726Speter
30376726Speter	  <li>make configure script checks on variables <code>$GCC</code> and
30476726Speter	    <code>$GXX</code> consistently compare against 'yes' rather than
30576726Speter	    test if they are nonnull, since either may be set to the
30676726Speter	    corresponding name of the C or C++ compiler.
30776726Speter
30876726Speter	  <li>change configure script to use AC_CANONICAL_SYSTEM rather than
30976726Speter	    AC_CANONICAL_HOST, which means that <code>configure --target</code>
31076726Speter	    will set a default program-prefix.
31176726Speter
31276726Speter	  <li>modify the check for big-core to force a couple of memory
31376726Speter	    accesses, which may work as needed for older/less-capable machines
31476726Speter	    (if not, there's still the explicit configure option).
31576726Speter
31676726Speter	  <li>modify configure test for <code>tcgetattr()</code> to allow for
31776726Speter	    old implementations, e.g., on BeOS, which only defined it as a
31876726Speter	    macro.
31976726Speter
32076726Speter	  <li>add configure check for filesystems (such as OS/2 EMX) which do
32176726Speter	    not distinguish between upper/lowercase filenames, use this to fix
32276726Speter	    tags rules in makefiles.
32376726Speter
32476726Speter	  <li>add MKncurses_def.sh to generate fallback definitions for
32576726Speter	    ncurses_cfg.h, to quiet gcc -Wundef warnings, modified ifdef's in
32676726Speter	    code to consistently use "#if" rather than "#ifdef".
32776726Speter
32876726Speter	  <li>change most remaining unquoted parameters of <code>test</code> in
32976726Speter	    configure script to use quotes, for instance fixing a problem in the
33076726Speter	    <code>--disable-database</code> option.
33176726Speter
33276726Speter	  <li>modify scripts so that "make install.data" works on OS/2 EMX.
33376726Speter
33476726Speter	  <li>modify scripts and makefiles so the Ada95 directory builds on
33576726Speter	    OS/2 EMX.
33676726Speter	</ul>
33776726Speter
33876726Speter	<li>library:
33976726Speter	<ul>
34076726Speter	<li>replaced case-statement in <code>_nc_tracebits()</code> for CSIZE
34176726Speter	  with a table to simplify working around implementations that define
34276726Speter	  random combinations of the related macros to zero.
34376726Speter
34476726Speter	<li>improved OS/2 mouse support by retrying as a 2-button mouse if code
34576726Speter	  fails to set up a 3-button mouse.
34676726Speter
34776726Speter	<li>added private entrypoint <code>_nc_basename()</code>, used to
34876726Speter	  consolidate related code in progs, as well as accommodating OS/2 EMX
34976726Speter	  pathnames.
35076726Speter
35176726Speter	<li>alter definition of NCURSES_CONST to make it non-empty.
35276726Speter
35376726Speter	<li>redefine 'TEXT' in menu.h for AMIGA, since it is reported to have
35476726Speter	  an (unspecified) symbol conflict.
35576726Speter	</ul>
35676726Speter
35776726Speter	<li>programs:
35876726Speter	<ul>
35976726Speter	  <li>modified progs/tset.c and tack/sysdep.c to build with sgttyb
36076726Speter	    interface if neither termio or termios is available.  Tested this
36176726Speter	    with FreeBSD 2.1.5 (which does have termios - but the sgttyb does
36276726Speter	    work).
36376726Speter	</ul>
36476726Speter
36576726Speter</ul>
36676726Speter
36750276Speter<H1>Features of Ncurses</H1>
36850276Speter
36956639SpeterThe ncurses package is fully compatible with SVr4 (System V Release 4) curses:
37050276Speter
37150276Speter<UL>
37250276Speter<LI>All 257 of the SVr4 calls have been implemented (and are documented).
37350276Speter<LI>Full support for SVr4 curses features including keyboard mapping, color,
37450276Speterforms-drawing with ACS characters, and automatic recognition of keypad
37550276Speterand function keys.
37650276Speter<LI>An emulation of the SVr4 panels library, supporting
37750276Spetera stack of windows with backing store, is included.
37850276Speter<LI>An emulation of the SVr4 menus library, supporting
37950276Spetera uniform but flexible interface for menu programming, is included.
38050276Speter<LI>An emulation of the SVr4 form library, supporting
38150276Speterdata collection through on-screen forms, is included.
38250276Speter<LI>Binary terminfo entries generated by the ncurses tic(1) implementation
38350276Speterare bit-for-bit-compatible with the entry format SVr4 curses uses.
38450276Speter<LI>The utilities have options to allow you to filter terminfo
38550276Speterentries for use with less capable <STRONG>curses</STRONG>/<STRONG>terminfo</STRONG>
38650276Speterversions such as the HP/UX and AIX ports.</UL>
38750276Speter
38856639SpeterThe ncurses package also has many useful extensions over SVr4:
38950276Speter
39050276Speter<UL>
39150276Speter<LI>The API is 8-bit clean and base-level conformant with the X/OPEN curses
39250276Speterspecification, XSI curses (that is, it implements all BASE level features,
39350276Speterbut not all EXTENDED features).  Most EXTENDED-level features not directly
39450276Speterconcerned with wide-character support are implemented, including many
39550276Speterfunction calls not supported under SVr4 curses (but portability of all
39650276Spetercalls is documented so you can use the SVr4 subset only).
39756639Speter<LI>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner
39850276Speterof the screen if your terminal has an insert-character capability.
39950276Speter<LI>Ada95 and C++ bindings.
40050276Speter<LI>Support for mouse event reporting with X Window xterm and OS/2 console windows.
40150276Speter<LI>Extended mouse support via Alessandro Rubini's gpm package.
40250276Speter<LI>The function <CODE>wresize()</CODE> allows you to resize windows, preserving
40350276Spetertheir data.
40450276Speter<LI>The function <CODE>use_default_colors()</CODE> allows you to
40550276Speteruse the terminal's default colors for the default color pair,
40650276Speterachieving the effect of transparent colors.
40750276Speter<LI>The functions <CODE>keyok()</CODE>
40850276Speterand <CODE>define_key()</CODE> allow
40950276Speteryou to better control the use of function keys,
41050276Spetere.g., disabling the ncurses KEY_MOUSE,
41150276Speteror by defining more than one control sequence to map to a given key code.
41250276Speter<LI>Support for 16-color terminals, such as aixterm and XFree86 xterm.
41350276Speter<LI>Better cursor-movement optimization.  The package now features a
41450276Spetercursor-local-movement computation more efficient than either BSD's
41550276Speteror System V's.
41650276Speter<LI>Super hardware scrolling support.  The screen-update code incorporates
41750276Spetera novel, simple, and cheap algorithm that enables it to make optimal
41850276Speteruse of hardware scrolling, line-insertion, and line-deletion
41950276Speterfor screen-line movements.  This algorithm is more powerful than
42050276Speterthe 4.4BSD curses quickch() routine.
42150276Speter<LI>Real support for terminals with the magic-cookie glitch.  The
42250276Speterscreen-update code will refrain from drawing a highlight if the magic-
42350276Spetercookie unattributed spaces required just before the beginning and
42450276Speterafter the end would step on a non-space character.  It will
42550276Speterautomatically shift highlight boundaries when doing so would make it
42650276Speterpossible to draw the highlight without changing the visual appearance
42750276Speterof the screen.
42850276Speter<LI>It is possible to generate the library with a list of pre-loaded
42950276Speterfallback entries linked to it so that it can serve those terminal types even
43050276Speterwhen no terminfo tree or termcap file is accessible (this may be useful
43150276Speterfor support of screen-oriented programs that must run in single-user mode).
43250276Speter<LI>The tic(1)/captoinfo utility provided with ncurses has the
43350276Speterability to translate many termcaps from the XENIX, IBM and
43450276SpeterAT&amp;T extension sets.
43550276Speter<LI>A BSD-like tset(1) utility is provided.
43650276Speter<LI>The ncurses library and utilities will automatically read terminfo
43750276Speterentries from $HOME/.terminfo if it exists, and compile to that directory
43850276Speterif it exists and the user has no write access to the system directory.
43950276SpeterThis feature makes it easier for users to have personal terminfo entries
44050276Speterwithout giving up access to the system terminfo directory.
44150276Speter<LI>You may specify a path of directories to search for compiled
44250276Speterdescriptions with the environment variable TERMINFO_DIRS (this
44350276Spetergeneralizes the feature provided by TERMINFO under stock System V.)
44450276Speter<LI>In terminfo source files, use capabilities may refer not just to
44550276Speterother entries in the same source file (as in System V) but also to
44650276Spetercompiled entries in either the system terminfo directory or the user's
44750276Speter$HOME/.terminfo directory.
44850276Speter<LI>A script (<STRONG>capconvert</STRONG>) is provided to help BSD users
44950276Spetertransition from termcap to terminfo.  It gathers the information in a
45050276SpeterTERMCAP environment variable and/or a ~/.termcap local entries file
45150276Speterand converts it to an equivalent local terminfo tree under $HOME/.terminfo.
45250276Speter<LI>Automatic fallback to the /etc/termcap file can be compiled in
45350276Speterwhen it is not possible to build a terminfo tree.  This feature is neither
45450276Speterfast nor cheap, you don't want to use it unless you have to,
45550276Speterbut it's there.
45650276Speter<LI>The table-of-entries utility <STRONG>toe</STRONG> makes it easy for users to
45750276Spetersee exactly what terminal types are available on the system.
45850276Speter<LI>The library meets the XSI requirement that every macro entry
45950276Speterpoint have a corresponding function which may be linked (and will be
46050276Speterprototype-checked) if the macro definition is disabled with
46150276Speter<CODE>#undef</CODE>.
46250276Speter<LI>An HTML "Introduction to Programming with NCURSES" document provides
46350276Spetera narrative introduction to the curses programming interface.
46450276Speter</UL>
46550276Speter
46650276Speter<H1>State of the Package</H1>
46750276Speter
46850276SpeterNumerous bugs present in earlier versions have been fixed; the
46950276Speterlibrary is far more reliable than it used to be.  Bounds checking in many
47050276Speter`dangerous' entry points has been improved.  The code is now type-safe
47150276Speteraccording to gcc -Wall.  The library has been checked for malloc leaks and
47250276Speterarena corruption by the Purify memory-allocation tester.<P>
47350276Speter
47450276SpeterThe ncurses code has been tested with a wide variety of applications
47556639Speterincluding (versions starting with those noted):
47650276Speter<DL>
47756639Speter<DT> cdk
47856639Speter<DD> Curses Development Kit
47962449Speter<br>
48066963Speter<A HREF="http://www.vexus.ca/CDK.html">http://www.vexus.ca/CDK.html</a>
48166963Speter<br>
48262449Speter<A HREF="http://dickey.his.com/cdk/cdk.html">http://dickey.his.com/cdk</A>.
48350276Speter<DT> ded
48450276Speter<DD> directory-editor
48562449Speter<br>
48662449Speter<A HREF="http://dickey.his.com/ded/ded.html">http://dickey.his.com/ded</A>.
48750276Speter<DT> dialog
48850276Speter<DD> the underlying application used in Slackware's setup, and the basis
48950276Speterfor similar applications on GNU/Linux.
49062449Speter<br>
49162449Speter<A HREF="http://dickey.his.com/dialog/dialog.html">http://dickey.his.com/dialog</A>.
49256639Speter<DT> lynx
49350276Speter<DD> the character-screen WWW browser
49462449Speter<br>
49562449Speter<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release</A>.
49650276Speter<DT> Midnight Commander 4.1
49750276Speter<DD> file manager
49866963Speter<br>
49966963Speter<A HREF="www.gnome.org/mc/">www.gnome.org/mc/</A>.
50056639Speter<DT> mutt
50150276Speter<DD> mail utility
50262449Speter<br>
50362449Speter<A HREF="http://www.mutt.org">http://www.mutt.org</A>.
50456639Speter<DT> ncftp
50550276Speter<DD> file-transfer utility
50666963Speter<br>
50766963Speter<A HREF="http://www.ncftp.com">http://www.ncftp.com</A>.
50850276Speter<DT> nvi
50950276Speter<DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
51066963Speter<br>
51166963Speter<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>.
51256639Speter<DT> tin
51356639Speter<DD> newsreader, supporting color, MIME
51462449Speter<br>
51562449Speter<A HREF="http://www.tin.org">http://www.tin.org</A>.
51650276Speter<DT> taper
51750276Speter<DD> tape archive utility
51866963Speter<br>
51966963Speter<A HREF="http://members.iinet.net.au/~yusuf/taper/">http://members.iinet.net.au/~yusuf/taper/</A>.
52050276Speter<DT> vh-1.6
52150276Speter<DD> Volks-Hypertext browser for the Jargon File
52266963Speter<br>
52366963Speter<A HREF="http://www.bg.debian.org/Packages/unstable/text/vh.html">http://www.bg.debian.org/Packages/unstable/text/vh.html</A>.
52450276Speter</DL>
52550276Speteras well as some that use ncurses for the terminfo support alone:
52650276Speter<DL>
52756639Speter<DT> minicom
52850276Speter<DD> terminal emulator
52966963Speter<br>
53066963Speter<A HREF="http://www.pp.clinet.fi/~walker/minicom.html">http://www.pp.clinet.fi/~walker/minicom.html</A>.
53150276Speter<DT> vile
53250276Speter<DD> vi-like-emacs
53362449Speter<br>
53462449Speter<A HREF="http://dickey.his.com/vile/vile.html">http://dickey.his.com/vile</A>.
53550276Speter</DL>
53650276Speter<P>
53750276Speter
53850276SpeterThe ncurses distribution includes a selection of test programs (including
53950276Spetera few games).
54050276Speter
54150276Speter<H2>Who's Who and What's What</H2>
54250276Speter
54350276SpeterThe original developers of ncurses are <A
54450276SpeterHREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
54550276Speter<A HREF="http://www.ccil.org/~esr/home.html">Eric S. Raymond</A>.
54650276SpeterOngoing work is being done by
54762449Speter<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
54850276Speterand
54950276Speter<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
55062449Speter<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
55150276Speteracts as the maintainer for the Free Software Foundation, which holds the
55250276Spetercopyright on ncurses.
55350276SpeterContact the current maintainers at
55450276Speter<A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>.
55550276Speter<P>
55650276Speter
55750276SpeterTo join the ncurses mailing list, please write email to
55850276Speter<CODE>bug-ncurses-request@gnu.org</CODE> containing the line:
55950276Speter<PRE>
56050276Speter             subscribe &lt;name&gt;@&lt;host.domain&gt;
56150276Speter</PRE>
56250276Speter
56350276SpeterThis list is open to anyone interested in helping with the development and
56450276Spetertesting of this package.<P>
56550276Speter
56650276SpeterBeta versions of ncurses and patches to the current release are made available at
56762449Speter<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
56850276Speter
56950276Speter<H2>Future Plans</H2>
57050276Speter<UL>
57150276Speter<LI>Extended-level XPG4 conformance, with internationalization support.
57250276Speter<LI>Ports to more systems, including DOS and Windows.
57350276Speter</UL>
57450276SpeterWe need people to help with these projects.  If you are interested in working
57550276Speteron them, please join the ncurses list.
57650276Speter
57750276Speter<H2>Other Related Resources</H2>
57850276Speter
57950276SpeterThe distribution includes and uses a version of the terminfo-format
58050276Speterterminal description file maintained by Eric Raymond.
58150276Speter<A HREF="http://earthspace.net/~esr/terminfo">http://earthspace.net/~esr/terminfo</A>.<P>
58250276Speter
58350276SpeterYou can find lots of information on terminal-related topics
58450276Speternot covered in the terminfo file at
58550276Speter<A HREF="http://www.cs.utk.edu/~shuford/terminal_index.html">Richard Shuford's
58650276Speterarchive</A>.
58750276Speter</BODY>
58850276Speter</HTML>
58950276Speter<!--
59050276Speter# The following sets edit modes for GNU EMACS
59150276Speter# Local Variables:
59250276Speter# mode:html
59350276Speter# case-fold-search:nil
59450276Speter# fill-column:70
59550276Speter# End:
59650276Speter-->
597