README revision 56639
156639Speter-- $Id: README,v 1.19 1999/10/23 20:39:24 tom Exp $
250276Speter-------------------------------------------------------------------------------
350276Speter		README file for the ncurses package
450276Speter
550276SpeterSee the file ANNOUNCE for a summary of ncurses features and ports.
650276SpeterSee the file INSTALL for instructions on how to build and install ncurses.
750276SpeterSee the file NEWS for a release history and bug-fix notes.
850276SpeterSee the file TO-DO for things that still need doing, including known bugs.
950276Speter
1050276SpeterBrowse the file misc/ncurses-intro.html for narrative descriptions of how
1150276Speterto use ncurses and the panel, menu, and form libraries.
1250276Speter 
1350276SpeterBrowse the file misc/hackguide.html for a tour of the package internals.
1450276Speter
1550276SpeterROADMAP AND PACKAGE OVERVIEW:
1650276Speter
1750276SpeterYou should be reading this file in a directory called:  ncurses-d.d, where d.d
1850276Speteris the current version number (see the dist.mk file in this directory for
1950276Speterthat).  There should be a number of subdirectories, including `c++', `form',
2050276Speter`man', `menu', `misc', `ncurses', `panel', `progs', `test', 'tack' and `Ada95'. 
2156639Speter(The 'tack' program may be distributed separately).
2250276Speter
2350276SpeterA full build/install of this package typically installs several libraries, a
2450276Speterhandful of utilities, and a database hierarchy.  Here is an inventory of the
2550276Speterpieces:
2650276Speter
2750276SpeterThe libraries are:
2850276Speter
2950276Speter	libncurses.a       (normal)
3050276Speter	libncurses.so      (shared)
3150276Speter	libncurses_g.a     (debug and trace code enabled)
3250276Speter	libncurses_p.a     (profiling enabled)
3350276Speter
3450276Speter	libpanel.a         (normal)
3550276Speter	libpanel.so        (shared)
3650276Speter	libpanel_g.a       (debug and trace code enabled)
3750276Speter
3850276Speter	libmenu.a          (normal)
3950276Speter	libmenu.so         (shared)
4050276Speter	libmenu_g.a        (debug enabled)
4150276Speter
4250276Speter	libform.a          (normal)
4350276Speter	libform.so         (shared)
4450276Speter	libform_g.a        (debug enabled)
4550276Speter
4650276SpeterThe ncurses libraries implement the curses API.  The panel, menu and forms
4750276Speterlibraries implement clones of the SVr4 panel, menu and forms APIs.  The source
4850276Spetercode for these lives in the `ncurses', `panel', `menu', and `form' directories
4950276Speterrespectively.
5050276Speter
5150276SpeterIn the `c++' directory, you'll find code that defines an interface to the
5250276Spetercurses, forms, menus and panels library packaged as C++ classes, and a demo program in C++
5350276Speterto test it.  These class definition modules are not installed by the 'make
5450276Speterinstall.libs' rule as libncurses++.
5550276Speter
5650276SpeterIn the `Ada95' directory, you'll find code and documentation for an
5750276SpeterAda95 binding of the curses API, to be used with the GNAT compiler.
5850276SpeterThis binding is built by a normal top-level `make' if configure detects
5950276Speteran usable version of GNAT (3.10 or above). It is not installed automatically.
6050276SpeterSee the Ada95 directory for more build and installation instructions and
6150276Speterfor documentation of the binding.
6250276Speter
6350276SpeterTo do its job, the ncurses code needs your terminal type to be set in the
6450276Speterenvironment variable TERM (normally set by your OS; under UNIX, getty(1)
6550276Spetertypically does this, but you can override it in your .profile); and, it needs a
6650276Speterdatabase of terminal descriptions in which to look up your terminal type's
6750276Spetercapabilities.
6850276Speter
6950276SpeterIn older (V7/BSD) versions of curses, the database was a flat text file,
7050276Speter/etc/termcap; in newer (USG/USL) versions, the database is a hierarchy of
7150276Speterfast-loading binary description blocks under /usr/lib/terminfo.  These binary
7250276Speterblocks are compiled from an improved editable text representation called
7350276Speter`terminfo' format (documented in man/terminfo.5).  The ncurses library can use
7450276Spetereither /etc/termcap or the compiled binary terminfo blocks, but prefers the
7550276Spetersecond form.
7650276Speter
7750276SpeterIn the `misc' directory, there is a text file terminfo.src, in editable
7850276Speterterminfo format, which can be used to generate the terminfo binaries (that's
7950276Speterwhat make install.data does).  If the package was built with the
8050276Speter--enable-termcap option enabled, and the ncurses library cannot find a terminfo
8150276Speterdescription for your terminal, it will fall back to the termcap file supplied
8250276Speterwith your system (which the ncurses package installation leaves strictly
8350276Speteralone).
8450276Speter
8550276SpeterThe utilities are as follows:
8650276Speter
8750276Speter	tic             -- terminfo source to binary compiler
8850276Speter	infocmp         -- terminfo binary to source decompiler/comparator
8950276Speter	clear           -- emits clear-screen for current terminal
9050276Speter	tput            -- shell-script access to terminal capabilities.
9150276Speter	toe		-- table of entries utility
9250276Speter	tset            -- terminal-initialization utility
9350276Speter
9450276SpeterThe first two (tic and infocmp) are used for manipulating terminfo
9550276Speterdescriptions; the next two (clear and tput) are for use in shell scripts.  The
9650276Speterlast (tset) is provided for 4.4BSD compatibility.  The source code for all of
9750276Speterthese lives in the `progs' directory.
9850276Speter
9950276SpeterDetailed documentation for all libraries and utilities can be found in
10050276Speterthe `man' directory.  An HTML introduction to ncurses, panels, and
10150276Spetermenus programming lives in the `misc' directory.  Manpages in HTML format
10250276Speterare under `Ada95/html'.
10350276Speter
10450276SpeterThe `test' directory contains programs that can be used to verify or
10550276Speterdemonstrate the functions of the ncurses libraries.  See test/README for
10650276Speterdescriptions of these programs.  Notably, the `ncurses' utility is designed to
10750276Speterhelp you systematically exercise the library functions.
10850276Speter
10950276SpeterAUTHORS:
11050276Speter
11150276SpeterPavel Curtis: 
11250276Speter	wrote the original ncurses
11350276Speter
11450276SpeterZeyd M. Ben-Halim:
11550276Speter	port of original to Linux and many enhancements.
11650276Speter
11756639SpeterThomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0):
11850276Speter	configuration scripts, porting, mods to adhere to XSI Curses in the
11950276Speter	areas of background color, terminal modes.  Also memory leak testing,
12050276Speter	the wresize, default colors and key definition extensions and numerous
12150276Speter	bug fixes (more than half of those enumerated in NEWS beginning with
12250276Speter	the internal release 1.8.9).
12350276Speter
12450276SpeterFlorian La Roche (official maintainer for FSF's ncurses 4.2)
12550276Speter	Beginning with release 4.2, ncurses is distributed under an MIT-style
12650276Speter	license.
12750276Speter
12850276SpeterEric S. Raymond:
12950276Speter	the man pages, infocmp(1), tput(1), clear(1), captoinfo(1), tset(1),
13050276Speter	toe(1), most of tic(1), trace levels, the HTML intro, wgetnstr() and
13150276Speter	many other entry points, the cursor-movement optimization, the
13250276Speter	scroll-pack optimizer for vertical motions, the mouse interface and
13350276Speter	xterm mouse support, and the ncurses test program.
13450276Speter
13550276SpeterJuergen Pfeifer
13650276Speter	The menu and form libraries, C++ bindings for ncurses, menus, forms and
13750276Speter	panels, as well as the Ada95 binding.  Ongoing support for panel.
13850276Speter
13950276SpeterCONTRIBUTORS:
14050276Speter
14150276SpeterAlexander V. Lukyanov
14250276Speter	for numerous fixes and improvements to the optimization logic.
14350276Speter
14450276SpeterDavid MacKenzie
14550276Speter	for first-class bug-chasing and methodical testing.
14650276Speter
14750276SpeterRoss Ridge
14850276Speter	for the code that hacks termcap parameterized strings into terminfo.
14950276Speter
15050276SpeterWarren Tucker and Gerhard Fuernkranz,
15150276Speter	for writing and sending the panel library.
15250276Speter
15350276SpeterHellmuth Michaelis,
15450276Speter	for many patches and testing the optimization code.
15550276Speter
15650276SpeterEric Newton, Ulrich Drepper, and Anatoly Ivasyuk:
15750276Speter	the C++ code.
15850276Speter
15950276SpeterJonathan Ross,
16050276Speter	for lessons in using sed.
16150276Speter
16250276SpeterKeith Bostic (maintainer of 4.4BSD curses)
16350276Speter	for help, criticism, comments, bug-finding, and being willing to
16450276Speter	deep-six BSD curses for this one when it grew up.
16550276Speter
16650276SpeterRichard Stallman,
16750276Speter	for his commitment to making ncurses free software.
16850276Speter
16950276SpeterCountless other people have contributed by reporting bugs, sending fixes,
17050276Spetersuggesting improvements, and generally whining about ncurses :-)
17150276Speter
17250276SpeterBUGS:
17350276Speter	See the INSTALL file for bug and developer-list addresses.
17450276Speter	The Hacker's Guide in the misc directory includes some guidelines
17550276Speter	on how to report bugs in ways that will get them fixed most quickly.
176