X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ANNOUNCE;h=858c7f2fb3cbca9f3cf2023749859fe7560fa1b6;hp=7b5f4efa69ae44ea29f14dc42e07bdc41dd5ca87;hb=4b386ffba9ebe520ddc51fe46ba88e008056a67e;hpb=c633e5103a29a38532cf1925257b91cea33fd090 diff --git a/ANNOUNCE b/ANNOUNCE index 7b5f4efa..858c7f2f 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,486 +1,1225 @@ + Announcing ncurses 6.0 - Announcing ncurses 5.2 +Overview - The ncurses (new curses) library is a free software emulation of - curses in System V Release 4.0, and more. It uses terminfo format, - supports pads and color and multiple highlights and forms characters - and function-key mapping, and has all the other SYSV-curses - enhancements over BSD curses. + The ncurses (new curses) library is a free software emulation of + curses in System V Release 4.0 (SVr4), and more. It uses terminfo + format, supports pads and color and multiple highlights and forms + characters and function-key mapping, and has all the other SVr4-curses + enhancements over BSD curses. SVr4 curses is better known today as + X/Open Curses. - In mid-June 1995, the maintainer of 4.4BSD curses declared that he - considered 4.4BSD curses obsolete, and is encouraging the keepers of - Unix releases such as BSD/OS, freeBSD and netBSD to switch over to - ncurses. + In mid-June 1995, the maintainer of 4.4BSD curses declared that he + considered 4.4BSD curses obsolete, and encouraged the keepers of unix + releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. - The ncurses code was developed under GNU/Linux. It should port easily - to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 - Warp! + Since 1995, ncurses has been ported to many systems: + * It is used in almost every system based on the Linux kernel (aside + from some embedded applications). + * It is used as the system curses library on OpenBSD, FreeBSD and + OSX. + * It is used in environments such as Cygwin and MinGW. The first of + these was EMX on OS/2 Warp. + * It is used (though usually not as the system curses) on all of the + vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, + Tru64. + * It should work readily on any ANSI/POSIX-conforming unix. The distribution includes the library and support utilities, including - a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), - tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full - manual pages are provided for the library and tools. - - The ncurses distribution is available via anonymous FTP at the GNU - distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. - It is also available at [2]ftp://dickey.his.com/ncurses. - - Release Notes - - This release is designed to be upward compatible from ncurses 5.0 and - 5.1; very few applications will require recompilation, depending on - the platform. These are the highlights from the change-log since - ncurses 5.1 release. - - Interface changes: - * change type of ospeed variable back to short to match its use in - legacy applications. It was altered after ncurses 4.2 to speed_t - to repair a type mismatch which was introduced after 1.9.4 in - 1995. The principal users of termcap continued to use short, which - is not the same size. - NOTE: A few applications will have to be recompiled (about 1% of - the programs in a typical Linux distribution, 10% of the programs - that use ncurses). These are easy to identify with nm or strings. - * remove a private function _nc_can_clear_with(), which was built - with the configure --enable-expanded option but not used. - * add several private functions (prefixed with "_nc_") for tracing - chtype values in the debug library, and for better access and - buffer limit checking. - - New features and improvements: - * rewrote tgoto() to make it better support existing termcap - applications which use hardcoded strings rather than obtain all of - their information from the termcap file. If the string does not - appear to be a terminfo string (i.e., does not refer to a "%p" - parameter, or terminfo-style padding), and termcap support is - configured, tgoto() will interpret it as termcap. Otherwise, as - before, it will use tparm(). - * to ensure that the tgoto() changes work properly, added checks to - tic which report capabilities that do not reference the expected - number of parameters. - * new configure script options: - + option --disable-root-environ adds runtime checks which tell - ncurses to disregard $TERMINFO and similar environment - variables if the current user is root, or running - setuid/setgid. - + option --disable-assumed-color allows you to use the pre-5.1 - convention of default colors used for color-pair 0 to be - configured (see assume_default_colors()). - + implement configure script options that transform installed - program names, e.g., --program-prefix, including the manpage - names and cross references. - + option --with-database allows you to specify a different - terminfo source-file to install. On OS/2 EMX, the default is - misc/emx.src, otherwise misc/terminfo.src - + option --with-default-terminfo-dir allows you to specify the - default terminfo database directory. - + option --with-libtool allows you to build with libtool. - NOTE: libtool uses a different notation for numbering shared - library versions from the existing ncurses configuration. - + option --with-manpage-tbl causes the manpages to be - preprocessed by tbl(1) prior to installation, - + option --without-curses-h causes the installation process to - install curses.h as ncurses.h and make appropriate changes to - headers and manpages. - * modified configure script options: - + change symbol used by the --install-prefix configure option - from INSTALL_PREFIX to DESTDIR (the latter has become common - usage although the name is misleading). - + modify ld -rpath options (e.g., Linux, and Solaris) to use an - absolute pathname for the build tree's lib directory, - avoiding confusion with directories relative to the current - one with the installed programs. - + modified misc/run_tic.in to use tic -o, to eliminate - dependency on $TERMINFO variable for installs. - * terminfo database: - + updated xterm terminfo entries to match XFree86 xterm patch - #146. - + added amiga-vnc, Matrix Orbital, and QNX qansi to - misc/terminfo.src. - + added os2 entry to misc/emx.src. - + add S0 and E0 extensions to screen's terminfo entry since - otherwise the FreeBSD port makes it pass termcap equivalents - to tgoto, which would be misinterpreted by older versions of - ncurses. - * improvements to program usability: - + modify programs to use curses_version() string to report the - version of ncurses with which they are compiled rather than - the NCURSES_VERSION string. The function returns the patch - level in addition to the major and minor version numbers. - + modify tput program so it can be renamed or invoked via a - link as 'reset' or 'init', producing the same effect as - tput reset or tput init. - + add error checking to infocmp's -v and -m options to ensure - that the option value is indeed a number. - * improved performance: - + replace a lookup table in lib_vidattr.c used to decode - no_color_video with a logic expression which is faster. - - Major bug fixes: - * correct manlinks.sed script introduced in ncurses 5.1 to avoid - using ERE "\+", which is not understood by standard versions of - sed. This happens to work with GNU sed, but is not portable, and - was the initial motivation for this release. - * remove "hpux10.*" case from CF_SHARED_OPTS configure script macro. - This differed from the "hpux*" case by using reversed symbolic - links, which made the 5.1 version not match the configuration of - 5.0 shared libraries. - * guard against corrupt terminfo data: - + modify tparm() to disallow arithmetic on strings, analyze the - varargs list to read strings as strings and numbers as - numbers. - + modify tparm()'s internal function spop() to treat a null - pointer as an empty string. - + modify parse_format() in lib_tparm.c to ignore precision if - it is longer than 10000. - + rewrote limit checks in lib_mvcur.c using new functions - _nc_safe_strcat(), etc. Made other related changes to check - lengths used for strcat() and strcpy(). - * corrections to screen optimization: - + added special case in lib_vidattr.c to reset underline and - standout for devices that have no sgr0 defined. - + change handling of non_dest_scroll_region in tty_update.c to - clear text after it is shifted in rather than before shifting - out. Also correct row computation. - + modify rs2 capability in xterm-r6 and similar entries where - cursor save/restore bracketed the sequence for resetting - video attributes. The cursor restore would undo that. - * UTF-8 support: - + when checking LC_ALL, LC_CTYPE, and LANG environment - variables for UTF-8 locale, ignore those which are set to an - empty value, as per SUSV2. - + encode 0xFFFD in UTF-8 with 3 bytes, not 2. - + modify _nc_utf8_outch() to avoid sign-extension when checking - for out-of-range value. - * other library fixes: - + added checks for an empty $HOME environment variable, to - avoid retrieving terminfo descriptions from ./.terminfo . - + change functions _nc_parse_entry() and postprocess_termcap() - to avoid using strtok(), because it is non-reentrant. - + initialize fds[] array to 0's in _nc_timed_wait(); apparently - poll() only sets the revents members of that array when there - is activity corresponding to the related file. - + add a check for null pointer in Make_Enum_Type(). - + fix a heap problem with the c++ binding. - + correct missing includes for in several places, - including the C++ binding. This is not noted by gcc unless we - use the -fno-builtin option. - * several fixes for tic: - + add a check for empty buffers returned by fgets() in - comp_scan.c next_char() function, in case tic is run on a - non-text file (fixes a core dump). - + modify tic to verify that its inputs are really files, in - case someone tries to read a directory (or /dev/zero). - + correct an uninitialized parameter to open_tempfile() in - tic.c which made "tic -I" give an ambiguous error message - about tmpnam. - + correct logic in adjust_cancels(), which did not check both - alternatives when reclassifying an extended name between - boolean, number and string, causing an infinite loop in tic. - * using new checks in tic for parameter counts in capability - strings, found/fixed several errors both in the terminfo database - and in the include/Caps file. - + modified several terminfo capability strings, including the - definitions for setaf, setab, in include/Caps to indicate - that the entries are parameterized. This information is used - to tell which strings are translated when converting to - termcap. This fixes a problem where the generated termcap - would contain a spurious "%p1" for the terminfo "%p1%d". - + correct parameter counts in include/Caps for dclk as well as - some printer-specific capabilities: csnm, defc, scs, scsd, - smgtp, smglp. - * various fixes for install scripts used to support configure - --srcdir and --with-install-prefix. - * correct several mismatches between manpage filename and ".TH" - directives, renaming dft_fgbg.3x to default_colors.3x and - menu_attribs.3x to menu_attributes.3x. - - Portability: - * configure script: - + newer config.guess, config.sub, including changes to support - OS/2 EMX. The configure script for OS/2 EMX still relies on a - patch since there is no (working) support for that platform - in the main autoconf distribution. - + make configure script checks on variables $GCC and $GXX - consistently compare against 'yes' rather than test if they - are nonnull, since either may be set to the corresponding - name of the C or C++ compiler. - + change configure script to use AC_CANONICAL_SYSTEM rather - than AC_CANONICAL_HOST, which means that configure --target - will set a default program-prefix. - + modify the check for big-core to force a couple of memory - accesses, which may work as needed for older/less-capable - machines (if not, there's still the explicit configure - option). - + modify configure test for tcgetattr() to allow for old - implementations, e.g., on BeOS, which only defined it as a - macro. - + add configure check for filesystems (such as OS/2 EMX) which - do not distinguish between upper/lowercase filenames, use - this to fix tags rules in makefiles. - + add MKncurses_def.sh to generate fallback definitions for - ncurses_cfg.h, to quiet gcc -Wundef warnings, modified - ifdef's in code to consistently use "#if" rather than - "#ifdef". - + change most remaining unquoted parameters of test in - configure script to use quotes, for instance fixing a problem - in the --disable-database option. - + modify scripts so that "make install.data" works on OS/2 EMX. - + modify scripts and makefiles so the Ada95 directory builds on - OS/2 EMX. - * library: - + replaced case-statement in _nc_tracebits() for CSIZE with a - table to simplify working around implementations that define - random combinations of the related macros to zero. - + improved OS/2 mouse support by retrying as a 2-button mouse - if code fails to set up a 3-button mouse. - + added private entrypoint _nc_basename(), used to consolidate - related code in progs, as well as accommodating OS/2 EMX - pathnames. - + alter definition of NCURSES_CONST to make it non-empty. - + redefine 'TEXT' in menu.h for AMIGA, since it is reported to - have an (unspecified) symbol conflict. - * programs: - + modified progs/tset.c and tack/sysdep.c to build with sgttyb - interface if neither termio or termios is available. Tested - this with FreeBSD 2.1.5 (which does have termios - but the - sgttyb does work). - - Features of Ncurses - - The ncurses package is fully compatible with SVr4 (System V Release 4) - curses: - * All 257 of the SVr4 calls have been implemented (and are - documented). - * Full support for SVr4 curses features including keyboard mapping, - color, forms-drawing with ACS characters, and automatic - recognition of keypad and function keys. - * An emulation of the SVr4 panels library, supporting a stack of - windows with backing store, is included. - * An emulation of the SVr4 menus library, supporting a uniform but - flexible interface for menu programming, is included. - * An emulation of the SVr4 form library, supporting data collection - through on-screen forms, is included. - * Binary terminfo entries generated by the ncurses tic(1) - implementation are bit-for-bit-compatible with the entry format - SVr4 curses uses. - * The utilities have options to allow you to filter terminfo entries - for use with less capable curses/terminfo versions such as the - HP/UX and AIX ports. + * [1]captoinfo, a termcap conversion tool + * [2]clear, utility for clearing the screen + * [3]infocmp, the terminfo decompiler + * [4]tabs, set tabs on a terminal + * [5]tic, the terminfo compiler + * [6]toe, list (table of) terminfo entries + * [7]tput, utility for retrieving terminal capabilities in shell + scripts + * [8]tset, to initialize the terminal + + Full manual pages are provided for the library and tools. + + The ncurses distribution is available via anonymous FTP at the GNU + distribution site + + [9]ftp://ftp.gnu.org/gnu/ncurses/ . + + It is also available at + + [10]ftp://invisible-island.net/ncurses/ . + +Release Notes + + These notes are for ncurses 6.0, released August 8, 2015. + + This release is designed to be source-compatible with ncurses 5.0 + through 5.9; providing a new application binary interface (ABI). + Although the source can still be configured to support the ncurses 5 + ABI, the intent of the release is to provide extensions which are + generally useful, but binary-incompatible with ncurses 5: + * Extend the cchar_t structure to allow more than 16 colors to be + encoded. + * Modify the encoding of mouse state to make room for a 5th mouse + button. That allows one to use ncurses with a wheel mouse with + xterm or similar X terminal emulators. + + There are, of course, numerous other improvements, including + * fixes made based on the Clang and Coverity static analyzers. + * memory leak fixes using Valgrind + + The release notes mention some bug-fixes, but are focused on new + features and improvements to existing features log since ncurses 5.9 + release. + + While the intent of the release is to provide a new stable ABI, there + are other development activities which are summarized below. + * The original release plan, e.g., for "5.10" was to improve the + MinGW port. Ultimately that was completed (wide-character support, + mouse, etc), but was deferred to focus on termcap support and + performance issues. Also, pinpointing the problems with Console2 + took a while. + * A review of termcap compatibility in 2011 led to several minor + fixes in the library and improvements to utilities. To do this + properly, a review of the various extent termcap implementations + was needed. + The [11]termcap library checker (tctest) (not part of ncurses) was + one result. A followup review of performance using + [12]ncurses-examples in 2014 led to additional improvements. + * Output buffering provided a further, but worthwhile distraction. A + bug report in 2012 regarding the use of signal handlers in + ncurses) pointed out [13]a problem with the use of unsafe + functions for handling SIGTSTP. Other signals could be addressed + with workarounds; repairing SIGTSTP required a different approach. + The solution required changing internal behavior of the library: + how it handles output buffering. + Now ncurses buffers its own output, independently of the standard + output. A few applications relied upon the library's direct reuse + of the standard output buffering; however that is unspecified + behavior and has never been a recommended practice. Identifying + these applications as well as refining the change to permit + low-level applications to work consistently took time. + * Since the introduction of the experimental support for 256 colors + early in [14]2005 (released in [15]ncurses 5.5), there has been + increased user interest. Almost all packagers continue providing + the ncurses ABI 5 which cannot support 256 colors. + * Symbol versioning, or the lack of it in ncurses, is the main + reason why packagers would be reluctant to add a new ncurses ABI. + This release provides the new ABI along with script-generated + lists of versioned symbols which can be used for both ABI 5 and 6 + (with distinct names to keep the two separate). This took time to + development, as reported in [16]Symbol versioning in ncurses. + + Library improvements + + Output buffering + + X/Open curses provides more than one initialization function: + * [17]initscr (the simplest) accepts no parameters. + * [18]newterm accepts parameters for the stream input and output + * [19]setupterm (the low-level function) accepts a parameter for the + file descriptor of the output. + + They are documented in X/Open as if initscr calls newterm using stdout + for output stream, and in turn newterm calls setupterm using + fileno(stdout) for the file descriptor. As long as an implementation + acts as if it does this, it conforms. In practice, implementations do + what is implied. This creates a problem: the low-level setupterm + function's file descriptor is unbuffered, while newterm implies + buffered output. X/Open Curses says that all output is done through + the file descriptor, and does not say how the output stream is + actually used. + + Initially, ncurses used the file descriptor (obtained from the output + stream passed to newterm) for changing the terminal modes, and relied + upon the output parameter of newterm for buffered output. Later (to + avoid using unsafe buffered I/O in signal handlers), ncurses was + modified to use the file descriptor (unbuffered output) when cleaning + up on receipt of a signal. Otherwise (when not handling a signal), it + continued to use the buffered output. + + That approach worked reasonably well and as a side effect, using the + same buffered output as an application might use for printf meant that + no flushing was needed when switching between normal- and + screen-modes. + + There were a couple of problems: + * to get good performance, curses (not only ncurses, but SVr4 curses + in general) set an output buffer using setbuf or similar function. + There is no standard (or portable) way to turn that output buffer + off, and revert to line-buffering. The [20]NCURSES_NO_SETBUF + environment variable did make it optional. + * to handle SIGTSTP (the "stop" signal), ncurses relied upon unsafe + functions. That is, due to the complexity of the feature, it + relied upon reusing existing functions which should not have been + called via the signal handler. + + Conveniently, solving the second problem (by making ncurses do its own + output buffering) also fixed the first one. But there were special + cases to resolve: [21]low-level functions such as mvcur, putp, vidattr + explicitly use the standard output. Those functions were reused + internally, and required modification to distinguish whether they were + used by the high-level or low-level interfaces. + + Finally, there may still be a few programs which should be modified to + improve their portability, e.g., adding an + +fflush(stdout); + + when switching from "[22]shell" mode to "[23]program" (curses) mode. + Those are fairly rare because most programmers have learned not to mix + printf and [24]printw. + + Symbol versioning + + This release introduces symbol-versioning to ncurses because without + it, the change of ABI would be less successful. A lengthy discussion + will be presented in [25]Symbol versioning in ncurses. These notes + summarize what has changed, and what can be done with the new release. + + Symbol-versioning allows the developers of a library to mark each + public symbol (both data and functions) with an identifier denoting + the library name and the version for which it was built. By doing + this, users of the library have a way to help ensure that applications + do not accidentally load an incompatible library. In addition, private + symbols can be hidden entirely. + + This release provides sample files for the four principal + configurations of ncurses libraries: ncurses, ncursesw, ncursest and + ncursestw. Each sample is given in two forms: + + ".map" + These list all public symbols, together with version names. + + ".sym" + These list all public symbols, without version names. + + The sample files are generated by scripts which take into account a + few special cases such as [26]tack to omit many of the ncurses private + symbols (beginning with "_nc_"). Here are counts of globals versus + locals: + + Config Symbols Globals Locals "_nc_" + ncurses 976 796 180 332 + ncursesw 1089 905 184 343 + ncursest 979 804 175 358 + ncursestw 1098 914 184 372 + + Although only four sample configurations are presented, each is formed + by merging symbols from several combinations of configure-script + options, taking into account advice from downstream packagers. Because + they are formed by merging, the sample files may list a symbol which + is not in a given package. That is expected. The samples have been + tested and are working with systems (such as Fedora, FreeBSD and + Debian) which fully support this feature. There are other systems + which do not support the feature, and a few (such as Solaris) which + provide incomplete support. + + The version-naming convention used allows these sample files to build + distinct libraries for ABI 5 and 6. Version names consist of + * configuration name, e.g., "NCURSESW" for the wide-character + libraries + * ABI version (if not 5) + * library name for two special cases which have the same interface + across configurations: "TINFO" and "TIC" + * release version + * patch date (for the release version) + + For example, running nm -D on the libraries in the ncurses6 test + package shows these symbol-versions: + +0000000000000000 A NCURSES6_TIC_5.0.19991023 +0000000000000000 A NCURSES6_TIC_5.1.20000708 +0000000000000000 A NCURSES6_TIC_5.5.20051010 +0000000000000000 A NCURSES6_TIC_5.7.20081102 +0000000000000000 A NCURSES6_TIC_5.9.20150530 +0000000000000000 A NCURSES6_TINFO_5.0.19991023 +0000000000000000 A NCURSES6_TINFO_5.1.20000708 +0000000000000000 A NCURSES6_TINFO_5.2.20001021 +0000000000000000 A NCURSES6_TINFO_5.3.20021019 +0000000000000000 A NCURSES6_TINFO_5.4.20040208 +0000000000000000 A NCURSES6_TINFO_5.5.20051010 +0000000000000000 A NCURSES6_TINFO_5.6.20061217 +0000000000000000 A NCURSES6_TINFO_5.7.20081102 +0000000000000000 A NCURSES6_TINFO_5.8.20110226 +0000000000000000 A NCURSES6_TINFO_5.9.20150530 +0000000000000000 A NCURSESW6_5.1.20000708 +0000000000000000 A NCURSESW6_5.3.20021019 +0000000000000000 A NCURSESW6_5.4.20040208 +0000000000000000 A NCURSESW6_5.5.20051010 +0000000000000000 A NCURSESW6_5.6.20061217 +0000000000000000 A NCURSESW6_5.7.20081102 +0000000000000000 A NCURSESW6_5.8.20110226 +0000000000000000 A NCURSESW6_5.9.20150530 + + As a special case, this release (which makes the final change for ABI + 5) is marked with release version 5.9 and patch date 20150530. + + Miscellaneous + + The new release has several improvements for performance and building. + For instance: + * several files in ncurses- and progs-directories were modified to + allow const data used in internal tables to be put by the linker + into the readonly text segment. + * various improvements were made to building the Ada95 binding, both + in simplifying the generated files as well as improving the way it + uses gnatmake + + There are also new features in the libraries: + * added [27]use_tioctl function + * added [28]wgetdelay to retrieve _delay member of WINDOW if it + happens to be opaque, e.g., in the pthread configuration. + * added [29]A_ITALIC extension. + * added form library extension [30]O_DYNAMIC_JUSTIFY option which + can be used to override the different treatment of justification + for static versus dynamic fields . + * rewrote [31]putwin and [32]getwin, making an extended version + which is capable of reading screen-dumps between the wide/normal + ncurses configurations. These are text files, except for a magic + code at the beginning: + +0 string \210\210 Screen-dump (ncurses) + + * several changes to mouse support include: + + added decoder for xterm SGR 1006 mouse mode. + + added experimental support for "%u" format to terminfo. + + improved behavior of wheel-mice for xterm protocol: noting + that there are only button-presses for buttons "4" and "5", + so there is no need to wait to combine events into + double-clicks . + + There are a few new configure options dealing with library + customization: + * add "--enable-ext-putwin" configure option to turn on the extended + putwin/getwin. By default, this is enabled for ABI 6 and disabled + with ABI 5. + * add "--enable-string-hacks" option to control whether strlcat and + strlcpy may be used. Because ncurses already does the requisite + buffer-limit checks, this feature is mainly of interest to quiet + compiler-warnings on a few systems. + * add configure option "--with-tparm-arg" to allow [33]tparm's + parameters to be something more likely to be the same size as a + pointer, e.g., intptr_t (again, the default is set for ABI 6). + + Program improvements + + Utilities + + Most of the termcap-related changes based on development of [34]tctest + (termcap library checker) are implemented in the tic and infocmp + programs rather than affecting the library. As noted in the + [35]discussion of tctest, ncurses's ability to translate between + terminfo and termcap formats has been improved at different times, but + subject to feedback from "real" termcap users. There are very few of + those. Nowadays, virtually all termcap users are using ncurses (or + NetBSD, with its own terminfo library) and their programs are actually + using terminfo rather than termcap data. + + Still, there are a few. A comment about the translation of the ASCII + NUL character prompted a review: + * Both terminfo and termcap store string capabilities as + NUL-terminated strings. + * In terminfo, a \0 in a terminal description is stored as \200. + * There are no (known) terminals which would behave differently when + sent \0 or \200. + * When translating to terminfo format (or displaying a printable + version of an entry using infocmp), ncurses shows \200 as \0. + * It has done this since 1998 (quoting from the NEWS file): + +[36]980103 +... + + modify _nc_tic_expand() to generate \0 rather than \200. +... + + correct translation of terminfo "^@", to \200, like \0. + + * However, the _nc_tic_expand function (which optionally produces + terminfo or termcap format) did not address this special case for + termcap. Even the later 4.4BSD [37]cgetstr interprets a \0 + literally, ending that string (rather than using the terminfo + improvement). + + As a result of the review, several improvements were made to ncurses + translation to/from termcap format -- and improving the checks made in + tic for consistency of entries. Most of these are not of general + interest, except for two new command-line options for tic and infocmp: + * the "-0" option generates termcap/terminfo source on a single + line. + * the "-K" option provides stricter BSD-compatibility for termcap + output. + + Other user-visible improvements and new features include: + * added "-D" option to tic and infocmp, to show the database + locations that it could use. + * added "-s" option to toe, to sort its output. + * extended "-c" and "-n" options of infocmp to allow comparing more + than two entries. + * modified toe's report when "-a" and "-s" options are combined, to + add a column showing which entries belong to a given database. + * modified the clear program to take into account the "E3" extended + capability to clear the terminal's scrollback buffer. + + Examples + + Along with the library and utilities, many improvements were made to + the [38]ncurses-examples. Some were made to allow building (and + comparison-testing) against NetBSD curses and PDCurses. Both lack some + of the X/Open Curses features, necessitating customization. But this + activity was useful because it showed some remaining performance + issues (which have been resolved in this release). + + These changes were made to verify compatibility or compare performance + of ncurses: + * made workarounds for compiling test-programs with NetBSD curses, + though it lacks some common functions such as [39]use_env. + * added dots_termcap test-program + * added dots_curses test-program, for comparison with the low-level + examples. + * added test_setupterm test-proram to demonstrate normal/error + returns from the setupterm and restartterm functions. + * added "-d", "-e" and "-q" options to the demo_terminfo and + demo_termcap test-programs. + * added "-y" option to demo_termcap and test/demo_terminfo + test-programs to demonstrate behavior with/without extended + capabilities. + * modified demo_termcap and demo_terminfo test-programs to make + their options more directly comparable, and add "-i" option to + specify a terminal description filename to parse for names to + lookup. + * rewrote the tests for [40]mvderwin and test for recursive + [41]mvwin in the movewindow test-program. + + These changes were made to help with the MinGW port: + * added test-screens to the ncurses test-program to show + 256-characters at a time, to help with MinGW port. + * modified the view test-program to load UTF-8 when built with MinGW + by using regular win32 API because the MinGW functions mblen and + mbtowc do not work. + * added "-s" option to the view test-program to allow it to start in + single-step mode, reducing size of trace files when it is used for + debugging MinGW changes. + + These changes were made to verify new extensions in ncurses: + * added [42]form_driver_w entrypoint to wide-character forms + library, as well as form_driver_w test-program. + * modified ncurses test-program's b/B tests to display lines only + for the attributes which a given terminal supports, to make room + for an italics test. + * modified ncurses test-program, adding "-E" and "-T" options to + demonstrate use_env versus use_tioctl. + * modified ncurses test-program's c/C tests to cycle through subsets + of the total number of colors, to better illustrate + 8/16/88/256-colors by providing directly comparable screens. + * modified the ncurses test-program to also show position reports in + 'a' test. + + These changes were made to make the examples more useful: + * added scripts for building dpkg and rpm test-packages + * modified the hanoi test-program to show the minimum number of + moves possible for the given number of tiles. + * modified the knight test-program to show the number of choices + possible for each position in automove option, e.g., to allow user + to follow Warnsdorff's rule to solve the puzzle. + + Terminal database + + This release provides improvements to tic's "-c" checking option, + which was used for example to + * make sgr in several entries agree with other caps. + * correct padding in some entries where earlier versions had + miscounted the number of octal digits. + + There are several new terminal descriptions: + * [43]mlterm is now aliased to mlterm3 + * [44]nsterm is now derived from nsterm-256color + * [45]putty-sco + * [46]teken is FreeBSD's "xterm" console. + * [47]terminator + * [48]terminology + * [49]tmux is derived from screen. + * several screen.XXX entries support the respective variations for + 256 colors. + * [50]simpleterm is now 0.5 + * [51]vte is aliased to vte-2012 + * [52]vt520ansi + + A few entries use extensions (user-defined terminal capabilities): + * E3, used in linux, putty and xterm-basic is tested in the + [53]clear program to erase a terminal's scrollback. + * TS is used in the [54]xterm+sl building block to help deprecate + the misuse of tsl for xterm's title-string. + * XT is used in some terminfo entries to improve usefulness for + other applications than screen, which would like to pretend that + xterm's title is a status-line. + * xm is used in examples [55]xterm-1005 and [56]xterm-1006 to + illustrate a way to make mouse handling more general + + A few terminals support italics and/or dim capabilities. In + particular, screen does not. Documented that, and accommodated the + terminals where this feature works with the A_ITALIC extension. + * konsole, mlterm3 (italics) + * nsterm (dim) + * screen (dim) + * vte (dim, italics) + * xterm (dim, italics) + + Documentation + + As usual, this release + * improves documentation by describing new features, + * attempts to improve the description of features which users have + found confusing + * fills in overlooked descriptions of features which were described + in the [57]NEWS file but treated sketchily in manual pages. + + In addition, the mechanism for producing HTML versions of the + documentation has been improved: + * use an improved version of [58]man2html to generate html manpages. + * regenerated [59]NCURSES-Programming-HOWTO.html to fix some of the + broken html emitted by docbook. + + Interesting bug-fixes + + * Ada95 binding: + + modify makefile rules to ensure that the PIC option is not + used when building a static library + + make Ada95 build-fix for big-endian architectures such as + sparc. This undoes one of the fixes from [60]20110319, which + added an "Unused" member to representation clauses, replacing + that with pragmas to suppress warnings about unused bits. + * Color and attributes: + + parenthesize parameter of COLOR_PAIR and PAIR_NUMBER in + curses.h in case it happens to be a comma-expression. + + improve [61]20021221 workaround for broken acs, handling a + case where that ACS_xxx character is not in the acsc string + but there is a known wide-character which can be used. + + modify [62]init_pair to accept -1's for color value after + [63]assume_default_colors has been called. + + add a check in [64]start_color to limit color-pairs to 256 + when extended colors are not supported. + * Resizing the screen: + + propagate error-returns from wresize, i.e., the internal + increase_size and decrease_size functions through + [65]resize_term. + + add check for zero/negative dimensions for resizeterm and + resize_term. + + modify resizeterm to always push a KEY_RESIZE onto the fifo, + even if screensize is unchanged. Modify library to push a + KEY_RESIZE if there was a SIGWINCH, even if it does not call + resizeterm). These changes eliminate the case where a + SIGWINCH is received, but ERR is returned from wgetch or + wgetnstr because the screen dimensions did not change. + * Low-level interfaces + + fix an old bug in the termcap emulation; "%i" was ignored in + tparm because the parameters to be incremented were already + on the internal stack. + + change "%l" behavior in tparm to push the string length onto + the stack rather than saving the formatted length into the + output buffer. + + modify name-comparison for tgetstr, etc., to accommodate + legacy applications as well as to improve compatbility with + BSD 4.2 termcap implementations (see note for [66]980725). + * High-level interfaces + + modify internal recursion in wgetch which handles cooked mode + to check if the call to wgetnstr returned an error. This can + happen when both nocbreak and nodelay are set, for instance + (see note for [67]960418). + + add a check in internal function waddch_nosync to ensure that + tab characters are treated as control characters; some broken + locales claim they are printable. + + modify menu library to ensure that a menu's top-row is + adjusted as needed to ensure that the current item is on the + screen + + fix special case where double-width character overwrites a + single- width character in the first column. + + Configuration changes + + Major changes + + The ncurses 6.0 configure script makes changes to the default value of + several configure options, depending on the --with-abi-version option + (i.e., whether its value is "5" or "6"): + + --enable-const + Feature introduced in [68]970405 supports the use of const + where X/Open Curses should have, but did not. NetBSD curses + does something similar with const. + + --enable-ext-colors + Extends the cchar_t structure to allow more than 16 colors to + be encoded. This applies only to the wide-character + (--enable-widec) configuration. + + --enable-ext-mouse + Modifies the encoding of mouse state to make room for a 5th + mouse button. That allows one to use ncurses with a wheel mouse + with xterm or similar X terminal emulators. + + --enable-ext-putwin + Modifies the file-format written by putwin to use printable + text rather than binary files, allowing getwin to read screen + dumps written by differently-configured ncurses libraries. The + extended getwin can still read binary screen dumps from the + same configuration of ncurses. This does not change the ABI + (the binary interface seen by calling applications). + + --enable-interop + Modifies the FIELDTYPE structure used for the form library to + make it more generic. + + --enable-lp64 + Allows an application to define _LP64 to declare chtype and + mmask_t as simply "unsigned" rather than the configured types + using the --with-chtype and --with-mmask_t options. + + --enable-sp-funcs + Compile-in support for extended functions which accept a SCREEN + pointer, reducing the need for juggling the global SP value + with [69]set_term and [70]delscreen. + + --with-chtype=uint32_t + Makes chtype explicitly a 32-bit unsigned value. + + --with-mmask_t=uint32_t + Makes mmask_t explicitly a 32-bit unsigned value. + + --with-tparm-arg=intptr_t + X/Open Curses declares [71]tparm using long for each of the + parameters aside from the formatting string, presuming that + long and char* are the same size. This configure option uses + intptr_t which provides a better guarantee of the sizes. + + The configure script no longer checks for antique compilers; c89 is + assumed as a minimum. There are a few features from later revisions + which are used when available. The configure script makes checks to + turn on useful warnings from clang, gcc and icc. You should be able to + build ncurses 6.0 with any of the current (or not so current) C + compilers available in 2015. + + The configure script, by the way, makes changes which do not work with + systems whose /bin/sh is non-POSIX. This mainly affects Solaris (the + other vendor unix systems have followed the POSIX guidelines for the + past twenty years). If you must build on Solaris, its [72]xpg4 + binaries suffice, e.g., + + #!/bin/sh + WHAT=`hostname|sed -e 's/\..*//'` + OUT=configure.out + cat >>$OUT <&1 | tee -a $OUT + + Other major changes to the configure script include: + * ABI 6 is now the default, intending that the existing ABI 5 should + build as before using the "--with-abi-version=5" option. + * added --with-extra-suffix option to help with installing + nonconflicting ncurses6 packages, e.g., avoiding header- and + library-conflicts. + NOTE: as a side-effect, this renames + + adacurses-config to adacurses5-config and + adacursesw-config to adacursesw5-config + * the configure script looks for gnatgcc if the Ada95 binding is + built, in preference to the default gcc/cc. The script also + ensures that the Ada95 binding is built with the level of + optimization as the C libraries. + * the configure script captures define's related to -D_XOPEN_SOURCE + from the configure check and adds those to the *-config and *.pc + files, to simplify use for the wide-character libraries. + + Configuration options + + There are several new (or extended) configure options: + + --disable-db-install + Do not install the terminal database. This is used to omit + features for packages, as done with --without-progs. The option + simplifies building cross-compile support packages. + + --disable-gnat-projects + This option is used for regression testing + + --disable-lib-suffixes + Suppress the "w", "t" or "tw" suffixes which normally would be + added to the library names for the --enable-widec and + --with-pthread options. + + --with-cxx-shared + When --with-shared is set, build libncurses++ as a shared + library. This implicitly relies upon building with gcc/g++, + since other compiler suites may have differences in the way + shared libraries are built. libtool by the way has similar + limitations. + + --with-hashed-db + Extended this configure option to simplify building with + different versions of Berkeley database using FreeBSD ports. + + --with-pc-suffix + If ".pc" files are installed, optionally add a suffix to the + files and corresponding package names to separate unusual + configurations. If no option value is given (or if it is + "none"), no suffix is added. This option is used in the test + package for ncurses6. + + --with-xterm-kbs + Configure xterm's terminfo entries to use either BS (^H, i.e., + ASCII backspace) or DEL (^?, or 127). + + Portability + + MinGW + + Most of the portability-related work since [73]ncurses 5.9 extended + and improved the MinGW port introduced in [74]ncurses 5.8. + + The MinGW port can be readily cross-compiled: + * modified configure script to allow creating dll's for MinGW when + cross-compiling. + * enforced Windows-style path-separator if cross-compiling, + * added scripts for test-builds of cross-compiled packages for + ncurses6 to MinGW. + * added pc-files to the MinGW cross-compiling test-packages. + * added script for building test-packages of binaries cross-compiled + to MinGW using NSIS. + * added nc_mingw.h to installed headers for MinGW port; this is + needed for cross-compiling [75]ncurses-examples. + * added test-packages for cross-compiling ncurses-examples using the + MinGW test-packages. + + The MinGW-specific Windows driver accounts for several changes: + * wide-character display is made usable by replacing MinGW's + non-working wcrtomb and wctomb functions. + * implemented some display features: [76]beep, [77]flash, + [78]curs_set. + * the driver handles repainting on endwin/refresh combination. + * modified treatment of TERM variable for MinGW port to allow + explicit use of the Windows console driver by checking if $TERM is + set to "#win32console" or an abbreviation of that. + * the Windows driver also matches the special TERM value "unknown" + * the driver now returns characters for special keys, (like ansi.sys + does), when keypad mode is off, rather than returning nothing at + all. + * the driver checks a new environment variable [79]NCURSES_CONSOLE2 + to optionally work around a deficiency in Console2 (and its + descendent ConsoleZ) which hang when an application creates a + console buffer. + + Finally, there are other improvements: + * MinGW is one of the configurations where ncurses installs by + default into /usr + * configuration for cross-compiling uses AC_CHECK_TOOLS in + preference to AC_PATH_PROGS when searching for ncurses*-config, + e.g., in Ada95/configure and test/configure. + * extend Windows support to work with MSYS2; + + this works with a scenario where there is an ANSI-escape + handler such as ansicon running in the console window. + + wrap isatty calls with a macro, provide a corresponding set + of support routines to address differences between MinGW and + MSYS2. + * ensure WINVER is defined in makefiles rather than using headers. + * add check for the gnatprep "-T" option. + * work around a bug introduced by [80]gcc 4.8.1 in MinGW which + breaks "trace" feature. + * add a driver-name method to each of the drivers. + + Other ports + + These changes affect certain platforms (ports): + * the configure script knows how to build shared libraries with + DragonFlyBSD and Interix. + * support for AIX shared libraries is improved, tested with AIX 5.3, + 6.1 and 7.1 with both gcc 4.2.4 and cc: + + the shared-library suffix for AIX 5 and 6 is now ".so" + + the -brtl option is used with AIX 5-7; it is needed to link + with the shared libraries. + * the configure --enable-pc-files option takes into account the + [81]PKG_CONFIG_PATH variable. + * the configure option --with-pkg-config-libdir provides control + over the actual directory into which pc-files are installed. + * the build scripts add explicit -ltinfo, etc., to the generated + ".pc" file when ld option "--as-needed" is used, or when ncurses + and tinfo are installed without using rpath. + * the configure script disallows conflicting options + "--with-termlib" and "--enable-term-driver". + * the check for missing c++ compiler to work when no error is + reported, and no variables set is improved (see note for + [82]20021206). + * the misc/gen_edit.sh script selects a "linux" entry which works + with the current kernel rather than assuming it is always + "linux3.0" + * the test/configure script makes it simpler to override names of + curses-related libraries, to help with linking with pdcurses in + MinGW environment. + * the configure-script/ifdef's allow the BSD OLD_TTY feature to be + suppressed if the type of ospeed is configured using the option + --with-ospeed to not be a short. By default, it is a short for + termcap-compatibility. + * the MKlib_gen.sh script works around a recent change in gcc 5 + (released [83]mid-2015) which essentially emits multiple #line + statements for the same position in a file. + * the configure script works with Minix3.2 (see [84]note on + portability) + * OS/2 redux: + + the configure script supports OS/2 kLIBC. + + the --with-lib-prefix option allows configuring for old/new + flavors of OS/2 EMX. + * improved configure-script checks for _XOPEN_SOURCE: + + the definition works starting with Solaris 10. + + the definition is suppressed for IRIX64, since its header + files have a conflict versus _SGI_SOURCE. + _________________________________________________________________ + +Features of ncurses + + The ncurses package is fully upward-compatible with SVr4 (System V + Release 4) curses: + * All of the SVr4 calls have been implemented (and are documented). + * ncurses supports all of the for SVr4 curses features including + keyboard mapping, color, forms-drawing with ACS characters, and + automatic recognition of keypad and function keys. + * ncurses provides these SVr4 add-on libraries (not part of X/Open + Curses): + + the panels library, supporting a stack of windows with + backing store. + + the menus library, supporting a uniform but flexible + interface for menu programming. + + the form library, supporting data collection through + on-screen forms. + * ncurses's terminal database is fully compatible with that used by + SVr4 curses. + + ncurses supports user-defined capabilities which it can see, + but which are hidden from SVr4 curses applications using the + same terminal database. + + It can be optionally configured to match the format used in + related systems such as AIX and Tru64. + + Alternatively, ncurses can be configured to use hashed + databases rather than the directory of files used by SVr4 + curses. + * The ncurses utilities have options to allow you to filter terminfo + entries for use with less capable curses/terminfo versions such as + the HP/UX and AIX ports. The ncurses package also has many useful extensions over SVr4: - * The API is 8-bit clean and base-level conformant with the X/OPEN - curses specification, XSI curses (that is, it implements all BASE - level features, but not all EXTENDED features). Most - EXTENDED-level features not directly concerned with wide-character - support are implemented, including many function calls not - supported under SVr4 curses (but portability of all calls is - documented so you can use the SVr4 subset only). - * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost - corner of the screen if your terminal has an insert-character + * The API is 8-bit clean and base-level conformant with the X/OPEN + curses specification, XSI curses (that is, it implements all BASE + level features, and most EXTENDED features). It includes many + function calls not supported under SVr4 curses (but portability of + all calls is documented so you can use the SVr4 subset only). + * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost + corner of the screen if your terminal has an insert-character capability. * Ada95 and C++ bindings. - * Support for mouse event reporting with X Window xterm and OS/2 - console windows. + * Support for mouse event reporting with X Window xterm and FreeBSD + and OS/2 console windows. * Extended mouse support via Alessandro Rubini's gpm package. - * The function wresize() allows you to resize windows, preserving + * The function wresize allows you to resize windows, preserving their data. - * The function use_default_colors() allows you to use the terminal's + * The function use_default_colors allows you to use the terminal's default colors for the default color pair, achieving the effect of transparent colors. - * The functions keyok() and define_key() allow you to better control - the use of function keys, e.g., disabling the ncurses KEY_MOUSE, - or by defining more than one control sequence to map to a given - key code. - * Support for 16-color terminals, such as aixterm and XFree86 xterm. - * Better cursor-movement optimization. The package now features a + * The functions keyok and define_key allow you to better control the + use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by + defining more than one control sequence to map to a given key + code. + * Support for 256-color terminals, such as modern xterm. + * Support for 16-color terminals, such as aixterm and modern xterm. + * Better cursor-movement optimization. The package now features a cursor-local-movement computation more efficient than either BSD's or System V's. - * Super hardware scrolling support. The screen-update code - incorporates a novel, simple, and cheap algorithm that enables it - to make optimal use of hardware scrolling, line-insertion, and - line-deletion for screen-line movements. This algorithm is more - powerful than the 4.4BSD curses quickch() routine. - * Real support for terminals with the magic-cookie glitch. The - screen-update code will refrain from drawing a highlight if the - magic- cookie unattributed spaces required just before the - beginning and after the end would step on a non-space character. - It will automatically shift highlight boundaries when doing so - would make it possible to draw the highlight without changing the + * Super hardware scrolling support. The screen-update code + incorporates a novel, simple, and cheap algorithm that enables it + to make optimal use of hardware scrolling, line-insertion, and + line-deletion for screen-line movements. This algorithm is more + powerful than the 4.4BSD curses quickch routine. + * Real support for terminals with the magic-cookie glitch. The + screen-update code will refrain from drawing a highlight if the + magic- cookie unattributed spaces required just before the + beginning and after the end would step on a non-space character. + It will automatically shift highlight boundaries when doing so + would make it possible to draw the highlight without changing the visual appearance of the screen. - * It is possible to generate the library with a list of pre-loaded - fallback entries linked to it so that it can serve those terminal - types even when no terminfo tree or termcap file is accessible - (this may be useful for support of screen-oriented programs that + * It is possible to generate the library with a list of pre-loaded + fallback entries linked to it so that it can serve those terminal + types even when no terminfo tree or termcap file is accessible + (this may be useful for support of screen-oriented programs that must run in single-user mode). - * The tic(1)/captoinfo utility provided with ncurses has the ability - to translate many termcaps from the XENIX, IBM and AT&T extension - sets. - * A BSD-like tset(1) utility is provided. + * The [85]tic/[86]captoinfo utility provided with ncurses has the + ability to translate many termcaps from the XENIX, IBM and AT&T + extension sets. + * A BSD-like [87]tset utility is provided. * The ncurses library and utilities will automatically read terminfo - entries from $HOME/.terminfo if it exists, and compile to that - directory if it exists and the user has no write access to the - system directory. This feature makes it easier for users to have - personal terminfo entries without giving up access to the system + entries from $HOME/.terminfo if it exists, and compile to that + directory if it exists and the user has no write access to the + system directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the system terminfo directory. - * You may specify a path of directories to search for compiled - descriptions with the environment variable TERMINFO_DIRS (this - generalizes the feature provided by TERMINFO under stock System + * You may specify a path of directories to search for compiled + descriptions with the environment variable TERMINFO_DIRS (this + generalizes the feature provided by TERMINFO under stock System V.) - * In terminfo source files, use capabilities may refer not just to + * In terminfo source files, use capabilities may refer not just to other entries in the same source file (as in System V) but also to - compiled entries in either the system terminfo directory or the + compiled entries in either the system terminfo directory or the user's $HOME/.terminfo directory. - * A script (capconvert) is provided to help BSD users transition - from termcap to terminfo. It gathers the information in a TERMCAP - environment variable and/or a ~/.termcap local entries file and - converts it to an equivalent local terminfo tree under - $HOME/.terminfo. - * Automatic fallback to the /etc/termcap file can be compiled in - when it is not possible to build a terminfo tree. This feature is - neither fast nor cheap, you don't want to use it unless you have - to, but it's there. - * The table-of-entries utility toe makes it easy for users to see - exactly what terminal types are available on the system. + * The table-of-entries utility [88]toe makes it easy for users to + see exactly what terminal types are available on the system. * The library meets the XSI requirement that every macro entry point - have a corresponding function which may be linked (and will be - prototype-checked) if the macro definition is disabled with + have a corresponding function which may be linked (and will be + prototype-checked) if the macro definition is disabled with #undef. - * An HTML "Introduction to Programming with NCURSES" document - provides a narrative introduction to the curses programming - interface. + * Extensive documentation is provided (see the [89]Additional + Reading section of the [90]ncurses FAQ for online documentation). - State of the Package +Applications using ncurses - Numerous bugs present in earlier versions have been fixed; the library - is far more reliable than it used to be. Bounds checking in many - `dangerous' entry points has been improved. The code is now type-safe - according to gcc -Wall. The library has been checked for malloc leaks - and arena corruption by the Purify memory-allocation tester. + The ncurses distribution includes a selection of test programs + (including a few games). These are available separately as + [91]ncurses-examples - The ncurses code has been tested with a wide variety of applications - including (versions starting with those noted): + The ncurses library has been tested with a wide variety of + applications including: cdk Curses Development Kit - [3]http://www.vexus.ca/CDK.html - [4]http://dickey.his.com/cdk. + + [92]http://invisible-island.net/cdk/ ded directory-editor - [5]http://dickey.his.com/ded. + + [93]http://invisible-island.net/ded/ dialog - the underlying application used in Slackware's setup, and the - basis for similar applications on GNU/Linux. - [6]http://dickey.his.com/dialog. + the underlying application used in Slackware's setup, and the + basis for similar install/configure applications on many + systems. + + [94]http://invisible-island.net/dialog/ lynx - the character-screen WWW browser - [7]http://lynx.isc.org/release. + the text WWW browser - Midnight Commander 4.1 + [95]http://lynx.isc.org/ + + Midnight Commander file manager - [8]www.gnome.org/mc/. + + [96]http://www.midnight-commander.org/ mutt mail utility - [9]http://www.mutt.org. + + [97]http://www.mutt.org/ ncftp file-transfer utility - [10]http://www.ncftp.com. + + [98]http://www.ncftp.com/ nvi - New vi versions 1.50 are able to use ncurses versions 1.9.7 and - later. - [11]http://www.bostic.com/vi/. + New vi uses ncurses. + + [99]https://sites.google.com/a/bostic.com/keithbostic/nvi tin newsreader, supporting color, MIME - [12]http://www.tin.org. - - taper - tape archive utility - [13]http://members.iinet.net.au/~yusuf/taper/. - vh-1.6 - Volks-Hypertext browser for the Jargon File - [14]http://www.bg.debian.org/Packages/unstable/text/vh.html. + [100]http://www.tin.org/ as well as some that use ncurses for the terminfo support alone: minicom - terminal emulator - [15]http://www.pp.clinet.fi/~walker/minicom.html. + terminal emulator for serial modem connections + + [101]http://alioth.debian.org/projects/minicom/ + + mosh + a replacement for ssh. + + [102]https://mosh.mit.edu/ + + tack + terminfo action checker + + [103]http://invisible-island.net/ncurses/tack.html + + tmux + terminal multiplexor + + [104]http://tmux.github.io/ vile - vi-like-emacs - [16]http://dickey.his.com/vile. + vi-like-emacs may be built to use the terminfo, termcap or + curses interfaces. + + [105]http://invisible-island.net/vile/ + + and finally, those which use only the termcap interface: + + emacs + text editor + + [106]http://www.gnu.org/software/emacs/ + + screen + terminal multiplexor + + [107]http://www.gnu.org/software/screen/ + + vim + text editor - The ncurses distribution includes a selection of test programs - (including a few games). + [108]http://www.vim.org/ -Who's Who and What's What +Development activities - The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric - S. Raymond. Ongoing work is being done by [19]Thomas Dickey and - [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the - Free Software Foundation, which holds the copyright on ncurses. - Contact the current maintainers at [22]bug-ncurses@gnu.org. + Zeyd Ben-Halim started ncurses from a previous package pcurses, + written by Pavel Curtis. Eric S. Raymond continued development. + Juergen Pfeifer wrote most of the form and menu libraries. Ongoing + development work is done by [109]Thomas Dickey. Thomas Dickey also + acts as the maintainer for the Free Software Foundation, which holds + the [110]copyright on ncurses. + + Contact the current maintainers at + + [111]bug-ncurses@gnu.org To join the ncurses mailing list, please write email to - bug-ncurses-request@gnu.org containing the line: - subscribe @ + + [112]bug-ncurses-request@gnu.org + + containing the line: + + subscribe @ This list is open to anyone interested in helping with the development and testing of this package. - Beta versions of ncurses and patches to the current release are made - available at [23]ftp://dickey.his.com/ncurses. + Beta versions of ncurses and patches to the current release are made + available at + + [113]ftp://invisible-island.net/ncurses/ . + + There is an archive of the mailing list here: + + [114]http://lists.gnu.org/archive/html/bug-ncurses (also + [115]https) -Future Plans +Related resources - * Extended-level XPG4 conformance, with internationalization - support. - * Ports to more systems, including DOS and Windows. + The release notes make scattered references to these pages, which may + be interesting by themselves: + * [116]man2html + * [117]ncurses licensing + * [118]Symbol versioning in ncurses + * [119]The MinGW port of ncurses + * [120]tack - terminfo action checker + * [121]tar versus portability + * [122]tctest - termcap library checker + * [123]Terminal Database - We need people to help with these projects. If you are interested in - working on them, please join the ncurses list. +Other resources -Other Related Resources + The distribution provides a newer version of the terminfo-format + terminal description file once maintained by [124]Eric Raymond . + Unlike the older version, the termcap and terminfo data are provided + in the same file, and provides several user-definable extensions + beyond the X/Open specification. - The distribution includes and uses a version of the terminfo-format - terminal description file maintained by Eric Raymond. - [24]http://earthspace.net/~esr/terminfo. + You can find lots of information on terminal-related topics not + covered in the terminfo file at [125]Richard Shuford's archive . - You can find lots of information on terminal-related topics not - covered in the terminfo file at [25]Richard Shuford's archive. + * [126]Overview + * [127]Release Notes + + [128]Library improvements + o [129]Output buffering + o [130]Symbol versioning + o [131]Miscellaneous + + [132]Program improvements + o [133]Utilities + o [134]Examples + + [135]Terminal database + + [136]Documentation + + [137]Interesting bug-fixes + + [138]Configuration changes + o [139]Major changes + o [140]Configuration options + + [141]Portability + o [142]MinGW + o [143]Other ports + * [144]Features of ncurses + * [145]Applications using ncurses + * [146]Development activities + * [147]Related resources + * [148]Other resources References - 1. ftp://ftp.gnu.org/pub/gnu/ncurses - 2. ftp://dickey.his.com/ncurses - 3. http://www.vexus.ca/CDK.html - 4. http://dickey.his.com/cdk/cdk.html - 5. http://dickey.his.com/ded/ded.html - 6. http://dickey.his.com/dialog/dialog.html - 7. http://lynx.isc.org/release/ - 8. file://localhost/usr/build/ncurses/ncurses-5.2-20001021/doc/html/www.gnome.org/mc/ - 9. http://www.mutt.org/ - 10. http://www.ncftp.com/ - 11. http://www.bostic.com/vi/ - 12. http://www.tin.org/ - 13. http://members.iinet.net.au/~yusuf/taper/ - 14. http://www.bg.debian.org/Packages/unstable/text/vh.html - 15. http://www.pp.clinet.fi/~walker/minicom.html - 16. http://dickey.his.com/vile/vile.html - 17. mailto:zmbenhal@netcom.com - 18. http://www.ccil.org/~esr/home.html - 19. mailto:dickey@herndon4.his.com - 20. mailto:juergen.pfeifer@gmx.net - 21. mailto:dickey@herndon4.his.com - 22. mailto:bug-ncurses@gnu.org - 23. ftp://dickey.his.com/ncurses - 24. http://earthspace.net/~esr/terminfo - 25. http://www.cs.utk.edu/~shuford/terminal_index.html + 1. http://invisible-island.net/ncurses/man/captoinfo.1m.html + 2. http://invisible-island.net/ncurses/man/clear.1.html + 3. http://invisible-island.net/ncurses/man/infocmp.1m.html + 4. http://invisible-island.net/ncurses/man/tabs.1.html + 5. http://invisible-island.net/ncurses/man/tic.1m.html + 6. http://invisible-island.net/ncurses/man/toe.1m.html + 7. http://invisible-island.net/ncurses/man/tput.1.html + 8. http://invisible-island.net/ncurses/man/tset.1.html + 9. ftp://ftp.gnu.org/gnu/ncurses/ + 10. ftp://invisible-island.net/ncurses/ + 11. http://invisible-island.net/ncurses/tctest.html + 12. http://invisible-island.net/ncurses/ncurses-examples.html + 13. http://lists.gnu.org/archive/html/bug-ncurses/2012-07/msg00029.html + 14. http://invisible-island.net/ncurses/NEWS.html#t20050101 + 15. http://invisible-island.net/ncurses/announce-5.5.html + 16. http://invisible-island.net/ncurses/ncurses-mapsyms.html + 17. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr + 18. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm + 19. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization + 20. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_NO_SETBUF + 21. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html + 22. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode + 23. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode + 24. http://invisible-island.net/ncurses/man/curs_printw.3x.html + 25. http://invisible-island.net/ncurses/ncurses-mapsyms.html + 26. http://invisible-island.net/ncurses/tack.html + 27. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl + 28. http://invisible-island.net/ncurses/man/curs_opaque.3x.html + 29. http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY + 30. http://invisible-island.net/ncurses/man/form_field_opts.3x.html + 31. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin + 32. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin + 33. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output + 34. http://invisible-island.net/ncurses/tctest.html + 35. http://invisible-island.net/ncurses/tctest.html#my-better-translation + 36. http://invisible-island.net/ncurses/NEWS.html#t980103 + 37. https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&view=markup#l784 + 38. http://invisible-island.net/ncurses/ncurses-examples.html + 39. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env + 40. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-derwin + 41. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-mvwin + 42. http://invisible-island.net/ncurses/man/form_driver.3x.html#h3-form_driver_w + 43. http://invisible-island.net/ncurses/terminfo.src.html#toc-_M_L_T_E_R_M + 44. http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm + 45. http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco + 46. http://invisible-island.net/ncurses/terminfo.src.html#tic-teken + 47. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R + 48. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y + 49. http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux + 50. http://invisible-island.net/ncurses/terminfo.src.html#toc-_S_I_M_P_L_E_T_E_R_M + 51. http://invisible-island.net/ncurses/terminfo.src.html#tic-vte + 52. http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi + 53. http://aerie.jexium-island.net/ncurses/man/clear.1.html + 54. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_sl + 55. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1005 + 56. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1006 + 57. http://invisible-island.net/ncurses/NEWS.html + 58. http://invisible-island.net/scripts/man2html.html + 59. http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html + 60. http://invisible-island.net/ncurses/NEWS.html#t20110319 + 61. http://invisible-island.net/ncurses/NEWS.html#t20021221 + 62. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions + 63. http://invisible-island.net/ncurses/man/default_colors.3x.html + 64. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions + 65. http://invisible-island.net/ncurses/man/resizeterm.3x.html + 66. http://invisible-island.net/ncurses/NEWS.html#t980725 + 67. http://invisible-island.net/ncurses/NEWS.html#t960418 + 68. http://invisible-island.net/ncurses/NEWS.html#t970405 + 69. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-set_term + 70. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-delscreen + 71. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output + 72. http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html + 73. http://invisible-island.net/ncurses/announce-5.9.html + 74. http://invisible-island.net/ncurses/announce-5.8.html + 75. http://invisible-island.net/ncurses/ncurses-examples.html + 76. http://invisible-island.net/ncurses/man/curs_beep.3x.html + 77. http://invisible-island.net/ncurses/man/curs_beep.3x.html + 78. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set + 79. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_CONSOLE2 + 80. http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual + 81. http://linux.die.net/man/1/pkg-config + 82. http://invisible-island.net/ncurses/NEWS.html#t20021206 + 83. https://gcc.gnu.org/gcc-5/ + 84. http://invisible-island.net/autoconf/portability-test.html + 85. http://invisible-island.net/ncurses/man/tic.1m.html + 86. http://invisible-island.net/ncurses/man/captoinfo.1m.html + 87. http://invisible-island.net/ncurses/man/tset.1.html + 88. http://invisible-island.net/ncurses/man/toe.1m.html + 89. http://invisible-island.net/ncurses/ncurses.faq.html#additional_reading + 90. http://invisible-island.net/ncurses/ncurses.faq.html + 91. http://invisible-island.net/ncurses/ncurses-examples.html + 92. http://invisible-island.net/cdk/ + 93. http://invisible-island.net/ded/ + 94. http://invisible-island.net/dialog/ + 95. http://lynx.isc.org/ + 96. http://www.midnight-commander.org/ + 97. http://www.mutt.org/ + 98. http://www.ncftp.com/ + 99. https://sites.google.com/a/bostic.com/keithbostic/nvi + 100. http://www.tin.org/ + 101. http://alioth.debian.org/projects/minicom/ + 102. https://mosh.mit.edu/ + 103. http://invisible-island.net/ncurses/tack.html + 104. http://tmux.github.io/ + 105. http://invisible-island.net/vile/ + 106. http://www.gnu.org/software/emacs/ + 107. http://www.gnu.org/software/screen/ + 108. http://www.vim.org/ + 109. mailto:dickey@invisible-island.net + 110. http://invisible-island.net/ncurses/ncurses-license.html + 111. mailto:bug-ncurses@gnu.org + 112. mailto:bug-ncurses-request@gnu.org + 113. ftp://invisible-island.net/ncurses/ + 114. http://lists.gnu.org/archive/html/bug-ncurses + 115. https://lists.gnu.org/archive/html/bug-ncurses + 116. http://invisible-island.net/scripts/man2html.html + 117. http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html + 118. http://invisible-island.net/ncurses/ncurses-mapsyms.html + 119. http://invisible-island.net/ncurses/ncurses-mingw.html + 120. http://invisible-island.net/ncurses/tack.html + 121. http://invisible-island.net/autoconf/portability-tar.html + 122. http://invisible-island.net/ncurses/tctest.html + 123. http://invisible-island.net/ncurses/ncurses.html#download_database + 124. http://www.catb.org/~esr/terminfo/ + 125. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal + 126. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-overview + 127. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-release-notes + 128. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-library + 129. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-setbuf + 130. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-versioning + 131. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-other + 132. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-programs + 133. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-utilities + 134. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-examples + 135. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-database + 136. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-documentation + 137. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-bug-fixes + 138. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-config-config + 139. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-major + 140. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-options + 141. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-portability + 142. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-mingw + 143. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-systems + 144. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-features + 145. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-who-uses + 146. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-development + 147. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-this-stuff + 148. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-other-stuff