README revision 66963
166963Speter-- $Id: README,v 1.20 2000/08/12 23:31:21 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 1366963SpeterBrowse the file doc/html/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 9966963SpeterDetailed documentation for all libraries and utilities can be found in the 10066963Speter`man' and `doc' directories. An HTML introduction to ncurses, panels, and 10166963Spetermenus programming lives in the `doc/html' directory. Manpages in HTML format 10266963Speterare under `doc/html/man'. 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. 17466963Speter The Hacker's Guide in the doc directory includes some guidelines 17550276Speter on how to report bugs in ways that will get them fixed most quickly. 176