| 1 | -- $Id: README,v 1.22 2004/08/07 23:42:43 tom Exp $
 | 
|---|
| 2 | -------------------------------------------------------------------------------
 | 
|---|
| 3 |                 README file for the ncurses package
 | 
|---|
| 4 | 
 | 
|---|
| 5 | See the file ANNOUNCE for a summary of ncurses features and ports.
 | 
|---|
| 6 | See the file INSTALL for instructions on how to build and install ncurses.
 | 
|---|
| 7 | See the file NEWS for a release history and bug-fix notes.
 | 
|---|
| 8 | See the file TO-DO for things that still need doing, including known bugs.
 | 
|---|
| 9 | 
 | 
|---|
| 10 | Browse the file misc/ncurses-intro.html for narrative descriptions of how
 | 
|---|
| 11 | to use ncurses and the panel, menu, and form libraries.
 | 
|---|
| 12 |  
 | 
|---|
| 13 | Browse the file doc/html/hackguide.html for a tour of the package internals.
 | 
|---|
| 14 | 
 | 
|---|
| 15 | ROADMAP AND PACKAGE OVERVIEW:
 | 
|---|
| 16 | 
 | 
|---|
| 17 | You should be reading this file in a directory called:  ncurses-d.d, where d.d
 | 
|---|
| 18 | is the current version number (see the dist.mk file in this directory for
 | 
|---|
| 19 | that).  There should be a number of subdirectories, including `c++', `form',
 | 
|---|
| 20 | `man', `menu', `misc', `ncurses', `panel', `progs', `test', 'tack' and `Ada95'. 
 | 
|---|
| 21 | (The 'tack' program may be distributed separately).
 | 
|---|
| 22 | 
 | 
|---|
| 23 | A full build/install of this package typically installs several libraries, a
 | 
|---|
| 24 | handful of utilities, and a database hierarchy.  Here is an inventory of the
 | 
|---|
| 25 | pieces:
 | 
|---|
| 26 | 
 | 
|---|
| 27 | The libraries are:
 | 
|---|
| 28 | 
 | 
|---|
| 29 |         libncurses.a       (normal)
 | 
|---|
| 30 |         libncurses.so      (shared)
 | 
|---|
| 31 |         libncurses_g.a     (debug and trace code enabled)
 | 
|---|
| 32 |         libncurses_p.a     (profiling enabled)
 | 
|---|
| 33 | 
 | 
|---|
| 34 |         libpanel.a         (normal)
 | 
|---|
| 35 |         libpanel.so        (shared)
 | 
|---|
| 36 |         libpanel_g.a       (debug and trace code enabled)
 | 
|---|
| 37 | 
 | 
|---|
| 38 |         libmenu.a          (normal)
 | 
|---|
| 39 |         libmenu.so         (shared)
 | 
|---|
| 40 |         libmenu_g.a        (debug enabled)
 | 
|---|
| 41 | 
 | 
|---|
| 42 |         libform.a          (normal)
 | 
|---|
| 43 |         libform.so         (shared)
 | 
|---|
| 44 |         libform_g.a        (debug enabled)
 | 
|---|
| 45 | 
 | 
|---|
| 46 | If you configure using the --enable-widec option, a "w" is appended to the
 | 
|---|
| 47 | library names (e.g., libncursesw.a), and the resulting libraries support
 | 
|---|
| 48 | wide-characters, e.g., via a UTF-8 locale.  The corresponding header files
 | 
|---|
| 49 | are compatible with the non-wide-character configuration; wide-character
 | 
|---|
| 50 | features are provided by ifdef's in the header files.  The wide-character
 | 
|---|
| 51 | library interfaces are not binary-compatible with the non-wide-character
 | 
|---|
| 52 | version.
 | 
|---|
| 53 | 
 | 
|---|
| 54 | The ncurses libraries implement the curses API.  The panel, menu and forms
 | 
|---|
| 55 | libraries implement clones of the SVr4 panel, menu and forms APIs.  The source
 | 
|---|
| 56 | code for these lives in the `ncurses', `panel', `menu', and `form' directories
 | 
|---|
| 57 | respectively.
 | 
|---|
| 58 | 
 | 
|---|
| 59 | In the `c++' directory, you'll find code that defines an interface to the
 | 
|---|
| 60 | curses, forms, menus and panels library packaged as C++ classes, and a demo program in C++
 | 
|---|
| 61 | to test it.  These class definition modules are not installed by the 'make
 | 
|---|
| 62 | install.libs' rule as libncurses++.
 | 
|---|
| 63 | 
 | 
|---|
| 64 | In the `Ada95' directory, you'll find code and documentation for an
 | 
|---|
| 65 | Ada95 binding of the curses API, to be used with the GNAT compiler.
 | 
|---|
| 66 | This binding is built by a normal top-level `make' if configure detects
 | 
|---|
| 67 | an usable version of GNAT (3.11 or above). It is not installed automatically.
 | 
|---|
| 68 | See the Ada95 directory for more build and installation instructions and
 | 
|---|
| 69 | for documentation of the binding.
 | 
|---|
| 70 | 
 | 
|---|
| 71 | To do its job, the ncurses code needs your terminal type to be set in the
 | 
|---|
| 72 | environment variable TERM (normally set by your OS; under UNIX, getty(1)
 | 
|---|
| 73 | typically does this, but you can override it in your .profile); and, it needs a
 | 
|---|
| 74 | database of terminal descriptions in which to look up your terminal type's
 | 
|---|
| 75 | capabilities.
 | 
|---|
| 76 | 
 | 
|---|
| 77 | In older (V7/BSD) versions of curses, the database was a flat text file,
 | 
|---|
| 78 | /etc/termcap; in newer (USG/USL) versions, the database is a hierarchy of
 | 
|---|
| 79 | fast-loading binary description blocks under /usr/lib/terminfo.  These binary
 | 
|---|
| 80 | blocks are compiled from an improved editable text representation called
 | 
|---|
| 81 | `terminfo' format (documented in man/terminfo.5).  The ncurses library can use
 | 
|---|
| 82 | either /etc/termcap or the compiled binary terminfo blocks, but prefers the
 | 
|---|
| 83 | second form.
 | 
|---|
| 84 | 
 | 
|---|
| 85 | In the `misc' directory, there is a text file terminfo.src, in editable
 | 
|---|
| 86 | terminfo format, which can be used to generate the terminfo binaries (that's
 | 
|---|
| 87 | what make install.data does).  If the package was built with the
 | 
|---|
| 88 | --enable-termcap option enabled, and the ncurses library cannot find a terminfo
 | 
|---|
| 89 | description for your terminal, it will fall back to the termcap file supplied
 | 
|---|
| 90 | with your system (which the ncurses package installation leaves strictly
 | 
|---|
| 91 | alone).
 | 
|---|
| 92 | 
 | 
|---|
| 93 | The utilities are as follows:
 | 
|---|
| 94 | 
 | 
|---|
| 95 |         tic             -- terminfo source to binary compiler
 | 
|---|
| 96 |         infocmp         -- terminfo binary to source decompiler/comparator
 | 
|---|
| 97 |         clear           -- emits clear-screen for current terminal
 | 
|---|
| 98 |         tput            -- shell-script access to terminal capabilities.
 | 
|---|
| 99 |         toe             -- table of entries utility
 | 
|---|
| 100 |         tset            -- terminal-initialization utility
 | 
|---|
| 101 | 
 | 
|---|
| 102 | The first two (tic and infocmp) are used for manipulating terminfo
 | 
|---|
| 103 | descriptions; the next two (clear and tput) are for use in shell scripts.  The
 | 
|---|
| 104 | last (tset) is provided for 4.4BSD compatibility.  The source code for all of
 | 
|---|
| 105 | these lives in the `progs' directory.
 | 
|---|
| 106 | 
 | 
|---|
| 107 | Detailed documentation for all libraries and utilities can be found in the
 | 
|---|
| 108 | `man' and `doc' directories.  An HTML introduction to ncurses, panels, and
 | 
|---|
| 109 | menus programming lives in the `doc/html' directory.  Manpages in HTML format
 | 
|---|
| 110 | are under `doc/html/man'.
 | 
|---|
| 111 | 
 | 
|---|
| 112 | The `test' directory contains programs that can be used to verify or
 | 
|---|
| 113 | demonstrate the functions of the ncurses libraries.  See test/README for
 | 
|---|
| 114 | descriptions of these programs.  Notably, the `ncurses' utility is designed to
 | 
|---|
| 115 | help you systematically exercise the library functions.
 | 
|---|
| 116 | 
 | 
|---|
| 117 | AUTHORS:
 | 
|---|
| 118 | 
 | 
|---|
| 119 | Pavel Curtis: 
 | 
|---|
| 120 |         wrote the original ncurses
 | 
|---|
| 121 | 
 | 
|---|
| 122 | Zeyd M. Ben-Halim:
 | 
|---|
| 123 |         port of original to Linux and many enhancements.
 | 
|---|
| 124 | 
 | 
|---|
| 125 | Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0):
 | 
|---|
| 126 |         configuration scripts, porting, mods to adhere to XSI Curses in the
 | 
|---|
| 127 |         areas of background color, terminal modes.  Also memory leak testing,
 | 
|---|
| 128 |         the wresize, default colors and key definition extensions and numerous
 | 
|---|
| 129 |         bug fixes (more than half of those enumerated in NEWS beginning with
 | 
|---|
| 130 |         the internal release 1.8.9).
 | 
|---|
| 131 | 
 | 
|---|
| 132 | Florian La Roche (official maintainer for FSF's ncurses 4.2)
 | 
|---|
| 133 |         Beginning with release 4.2, ncurses is distributed under an MIT-style
 | 
|---|
| 134 |         license.
 | 
|---|
| 135 | 
 | 
|---|
| 136 | Eric S. Raymond:
 | 
|---|
| 137 |         the man pages, infocmp(1), tput(1), clear(1), captoinfo(1), tset(1),
 | 
|---|
| 138 |         toe(1), most of tic(1), trace levels, the HTML intro, wgetnstr() and
 | 
|---|
| 139 |         many other entry points, the cursor-movement optimization, the
 | 
|---|
| 140 |         scroll-pack optimizer for vertical motions, the mouse interface and
 | 
|---|
| 141 |         xterm mouse support, and the ncurses test program.
 | 
|---|
| 142 | 
 | 
|---|
| 143 | Juergen Pfeifer
 | 
|---|
| 144 |         The menu and form libraries, C++ bindings for ncurses, menus, forms and
 | 
|---|
| 145 |         panels, as well as the Ada95 binding.  Ongoing support for panel.
 | 
|---|
| 146 | 
 | 
|---|
| 147 | CONTRIBUTORS:
 | 
|---|
| 148 | 
 | 
|---|
| 149 | Alexander V. Lukyanov
 | 
|---|
| 150 |         for numerous fixes and improvements to the optimization logic.
 | 
|---|
| 151 | 
 | 
|---|
| 152 | David MacKenzie
 | 
|---|
| 153 |         for first-class bug-chasing and methodical testing.
 | 
|---|
| 154 | 
 | 
|---|
| 155 | Ross Ridge
 | 
|---|
| 156 |         for the code that hacks termcap parameterized strings into terminfo.
 | 
|---|
| 157 | 
 | 
|---|
| 158 | Warren Tucker and Gerhard Fuernkranz,
 | 
|---|
| 159 |         for writing and sending the panel library.
 | 
|---|
| 160 | 
 | 
|---|
| 161 | Hellmuth Michaelis,
 | 
|---|
| 162 |         for many patches and testing the optimization code.
 | 
|---|
| 163 | 
 | 
|---|
| 164 | Eric Newton, Ulrich Drepper, and Anatoly Ivasyuk:
 | 
|---|
| 165 |         the C++ code.
 | 
|---|
| 166 | 
 | 
|---|
| 167 | Jonathan Ross,
 | 
|---|
| 168 |         for lessons in using sed.
 | 
|---|
| 169 | 
 | 
|---|
| 170 | Keith Bostic (maintainer of 4.4BSD curses)
 | 
|---|
| 171 |         for help, criticism, comments, bug-finding, and being willing to
 | 
|---|
| 172 |         deep-six BSD curses for this one when it grew up.
 | 
|---|
| 173 | 
 | 
|---|
| 174 | Richard Stallman,
 | 
|---|
| 175 |         for his commitment to making ncurses free software.
 | 
|---|
| 176 | 
 | 
|---|
| 177 | Countless other people have contributed by reporting bugs, sending fixes,
 | 
|---|
| 178 | suggesting improvements, and generally whining about ncurses :-)
 | 
|---|
| 179 | 
 | 
|---|
| 180 | BUGS:
 | 
|---|
| 181 |         See the INSTALL file for bug and developer-list addresses.
 | 
|---|
| 182 |         The Hacker's Guide in the doc directory includes some guidelines
 | 
|---|
| 183 |         on how to report bugs in ways that will get them fixed most quickly.
 | 
|---|