X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ANNOUNCE;h=e0603d622394c8420f71cd0465476b18b41749df;hp=8bda60e2f074cc2ab7ca9afa82649525f969f0c5;hb=0af9283ca273c267ee6036c3b88115d9ba6d55a6;hpb=d66080c21038ad4feb2e41a0c4e517d5b4a03ab2 diff --git a/ANNOUNCE b/ANNOUNCE index 8bda60e2..e0603d62 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,4 +1,4 @@ - Announcing ncurses 6.1 + Announcing ncurses 6.2 Overview @@ -17,7 +17,7 @@ Overview * 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. + MacOS. * 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 @@ -26,611 +26,374 @@ Overview * It should work readily on any ANSI/POSIX-conforming unix. The distribution includes the library and support utilities, including - * [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 + * captoinfo, a termcap conversion tool + * clear, utility for clearing the screen + * infocmp, the terminfo decompiler + * tabs, set tabs on a terminal + * tic, the terminfo compiler + * toe, list (table of) terminfo entries + * tput, utility for retrieving terminal capabilities in shell scripts - * [8]tset, to initialize the terminal + * tset, to initialize the terminal Full manual pages are provided for the library and tools. - The ncurses distribution is available at ncurses' [9]homepage: + The ncurses distribution is available at ncurses' homepage: - [10]ftp://ftp.invisible-island.net/ncurses/ or - [11]https://invisible-mirror.net/archives/ncurses/ . + ftp://ftp.invisible-island.net/ncurses/ or + https://invisible-mirror.net/archives/ncurses/ . It is also available via anonymous FTP at the GNU distribution site - [12]ftp://ftp.gnu.org/gnu/ncurses/ . + ftp://ftp.gnu.org/gnu/ncurses/ . Release Notes - These notes are for ncurses 6.1, released January 27, 2018. + These notes are for ncurses 6.2, released February 12, 2020. This release is designed to be source-compatible with ncurses 5.0 - through 6.0; providing extensions to the application binary interface + through 6.1; providing extensions to the 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 to - the ncurses 6 ABI: - * improve integration of tput and tset - * provide support for extended numeric capabilities. + ncurses 5 ABI, the reason for the release is to reflect improvements + to the ncurses 6 ABI and the supporting utility programs. There are, of course, numerous other improvements, listed in this announcement. - The release notes also mention some bug-fixes, but are focused on new - features and improvements to existing features since ncurses 6.0 - release. + The most important bug-fixes/improvements dealt with user-defined + capabilities in terminal descriptions. The release notes also mention + some other bug-fixes, but are focused on new features and improvements + to existing features since ncurses 6.1 release. Library improvements New features - The improved integration of tput and tset made only small changes to - the libraries. However, supporting extended numeric capabilities - required a few changes: - * The TERMINAL structure in is now opaque. Doing that - allowed making the structure larger, to hold the extended numeric - data. - A few applications required changes during development of - ncurses 6.1 because those applications misused the members of that - structure, e.g., directly modifying it rather than using - [13]def_prog_mode. - * Having made TERMINAL opaque (and because none of the library - functions use anything except a pointer to TERMINAL), it was - possible to increase the size of the structure, adding to the end. - Existing applications which were linked to the ncurses 6.0 - high-level (ncurses, ncursesw) and low-level (tinfo, tinfo) - libraries should not require re-linking since the binary interface - did not change, nor did the structure offsets with TERMINAL - change. - A few applications use the inner TERMTYPE structure's offsets to - refer to terminfo capabilities within that structure. Again, those - do not require modification because their offsets within TERMINAL - did not change. - * When configured for wide-characters, i.e., "ncursesw" the TERMINAL - structure is extended. - The new data in TERMINAL holds the same information as TERMTYPE, - but with larger numbers ("int" versus "short"). It is named - TERMTYPE2. - The library uses this structure internally in preference to - TERMTYPE, referring to TERMTYPE only to initialize it for - applications that use the capabilities defined in - * When configured for 8-bit (narrow) characters, the TERMTYPE2 - structure is not used. - * The updated application binary interface is 6.1.20171230 (used for - new [14]versioned symbols), although the interface changes were - developed several months previously. - - The motivation for making this extension came from noticing that - [15]termcap applications could (though not [16]realistically) use - larger numbers than would fit in 16-bits, and the fact that the number - of color pairs for a 256-color xterm could not be expressed in - terminfo (i.e., 32767 versus 65536). Also, a few terminals support - direct-colors, which could use the extension. - - Generally speaking, applications that use internal details of a - library are unsupported. There was exactly one exception for ncurses: - the tack program used the internal details of TERMINAL, because it - provides an ncurses-specific feature for interactively modifying a - terminfo description and writing the updated description to a - text-file. It was possible to not only separate tack from these - [17]internal details of ncurses, but to generalize it so that the - program works with Unix curses (omitting the ncurses-specific - feature). That was released as [18]tack 1.08 in July 2017. - - While making changes to tack to eliminate its dependency upon ncurses - internals, the publicly-visible details of those internals were - reviewed, and some symbols were moved to private header files, while - others were marked explicitly as ncurses internals. Future releases of - ncurses may eliminate some of those symbols (such as those used by - tack 1.07) because they are neither part of the API or the ABI. - - Using the TERMTYPE2 extended numeric capabilities, it is possible to - support both color pair values and color values past 32767. Taking - compatibility into account, developers readily understand that neither - function signatures nor structure offsets change. Also, existing - functions have to operate with the extended numbers. Most of that work - is internal to the library. For the external interfaces, a hybrid - approach was used: - * X/Open Curses defined function prototypes such as wattr_set with - an unused parameter, for "future" use. After 25 years, the future - is here: ncurses uses the parameter to augment color pair values - as described in the [19]manual page. - * Other functions such as those defining color pairs did not have a - corresponding reserved parameter. For those, ncurses defines - extended versions such as init_extended_pair (versus init_pair), - init_extended_color (versus init_color). + There are several new features: + * O_EDGE_INSERT_STAY tells the form library to optionally delay + cursor movement on a field edge/boundary + * O_INPUT_FIELD extension to form library allows a dynamic field to + shrink if the new limit is smaller than the current field size. + * added exit_curses and exit_terminfo to replace internal symbols + for leak-checking. + * added curses_trace, to replace trace(). Additionally, to improve performance other changes (and extensions) are provided in this release: - * Several new functions simplify management of large sets of color - pairs: reset_color_pairs, alloc_pair, find_pair and free_pair. - * New "RGB" extension capability for direct-color support is used to - improve performance of color_content. - * The internal colorpair_t is now a struct, eliminating an internal - 8-bit limit on colors - * Allocation for SCREEN's color-pair table starts small, grows on - demand up to the limit given in the terminal description. - * setcchar and getcchar now treat a negative color-pair as an error. + * mouse decoding now handles shift/control/alt logic when decoding + xterm's 1006 mode + * ncurses now defines a limit for wgetnstr, wgetn_wstr when length + is negative or "too large". + * reordered loop-limit checks in winsnstr in case the string has no + terminating null and only the number of characters is used. + * there is now no buffer-size limit when reading the $TERMCAP + variable. + * the $TERMCAP variable may be interpreted as a fallback to a + terminfo entry + * mvcur now decides whether to use hard-tabs, using xt, tbc and hts + as clues. + * extended colors are improved by modifying an internal call to + vid_puts to pass extended color pairs e.g., from tty_update.c and + lib_mvcur.c + * the initialization functions now avoid relying upon persistent + data for the result from getenv + * scrolling is improved: + + a limit check in newline_forces_scroll handles the case where + the row is inside scroll-margins, but not at the end. + + improved loop limits in _nc_scroll_window handle a case where + the scrolled data is a pad which is taller than the window. Other improvements - These are new or revised features: - * modify c++/etip.h.in to accommodate deprecation of throw and - throws in c++17 - * add new function unfocus_current_field - * add option to preserve leading whitespace in form fields - * add a macro for is_linetouched and adjust the function's return - value to make it possible for most applications to check for an - error-return. - * add build-time utility report_offsets to help show when the - various configurations of tinfo library are compatible or not. + These are revised features: + * used "const" in some prototypes rather than NCURSES_CONST where + X/Open Curses was updated to do this, e.g., wscanw, newterm, the + terminfo interface. Also use "const" for consistency in the + termcap interface, which was withdrawn by X/Open Curses in Issue 5 + (2007). As of Issue 7, X/Open Curses still lacks "const" for + certain return values, e.g., keyname. + * modified wbkgd and wbkgrnd to improve compatibility with SVr4 + curses, changing the way the window rendition is updated when the + background character is modified + * improved terminfo write/read by modifying the fourth item of the + extended header to denote the number of valid strings in the + extended string table (see term(5)). + * modified the initialization checks for mouse so that the + xterm+sm+1006 block will work with terminal descriptions not + mentioning xterm. These were done to limit or ultimately deprecate features: - * drop two symbols obsoleted in 2004: _nc_check_termtype, and - _nc_resolve_uses - * move _nc_tracebits, _tracedump and _tracemouse to curses.priv.h, - since they are not part of the suggested ABI6. - * mark some structs in form/menu/panel libraries as potentially - opaque without modifying API/ABI. - * ifdef'd header-file definition of mouse_trafo with - NCURSES_NOMACROS - * remove initialization-check for calling napms in the term-driver - configuration; none is needed. - * modify trace to avoid overwriting existing file + * deprecated safe-sprintf, since the vsnprintf function, which does + what was needed, was standardized long ago. + * marked vwprintw and vwscanw as deprecated; recommend using + vw_printw and vw_scanw, respectively. + * added deprecation warnings for internal functions called by older + versions of tack. + * removed unused _nc_import_termtype2 function. These are improvements to existing features: - * modify make_hash to allow building with address-sanitizer, - assuming that --disable-leaks is configured. - * move SCREEN field for use_tioctl data before the ncursesw fields, - and limit that to the sp-funcs configuration to improve termlib - compatibility - * modify db-iterator: - + ignore zero-length files in db-iterator; these are useful for - instance to suppress $HOME/.terminfo when not wanted. - + modify update_getenv to ensure that environment variables - which are not initially set will be checked later if an - application happens to set them - * modify _nc_outc_wrapper to use the standard output if the screen - was not initialized, rather than returning an error. - * improve checks for low-level terminfo functions when the terminal - has not been initialized. - * modify set_curterm to update ttytype[] data used by longname/p> - * modify _nc_get_screensize to allow for use_env and use_tioctl - state to be per-screen when sp-funcs are configured, better - matching the behavior when using the term-driver configuration. - * remove an early-return from _nc_do_color, which can interfere with - data needed by bkgd when ncurses is configured with extended - colors - * incorporate A_COLOR mask into COLOR_PAIR, in case user application - provides an out-of-range pair number - * modify logic for endwin-state to be able to detect the case where - the screen was never initialized, using that to trigger a flush of - ncurses' buffer for mvcur, e.g., in the sample program dots_mvcur - for the term-driver configuration. + * check parameter of set_escdelay, return ERR if negative. + * check parameter of set_tabsize, return ERR if not greater than + zero + * correct a status-check in _nc_read_tic_entry() so that if reading + a hex/b64 $TERMINFO, and the $TERM does not match, fall-through to + the compiled-in search list. + * amend check for repeat_char to handle a case where setlocale() was + called after initscr + * move macro for is_linetouched inside NCURSES_NOMACROS ifndef. + * use _nc_copy_termtype2 rather than direct assignment in setupterm, + in case it is called repeatedly using fallback terminfo + descriptions + * improve workaround for Solaris wcwidth versus line-drawing + characters + * add checks in repair_subwindows to keep the current position and + scroll-margins inside the resized subwindow. + * correct a buffer-limit in write_entry.c for systems that use + caseless filenames. + * improved build-time utility report_offsets: + + add categories, e.g., "w" for wide-character, "t" for threads + to make the report more readable. Reorganized the structures + reported to make the categories more apparent. + + add NCURSES_GLOBALS and NCURSES_PRESCREEN to report to show + how similar the different libtinfo configurations are. + * modified some header files to ensure that those include necessary + files except for the previously-documented cases + * added some traces in initialization to show whether a fallback + entry is used. + * made minor optimization to reduce calls to _nc_reserve_pairs These are corrections to existing features: - * fixes for writing extended color pairs in putwin. - * modify no-leaks code for lib_cur_term.c to account for the tgetent - cache. - * amend handling of the repeat_char capability in EmitRange to avoid - scope creep: translate the character to the alternate character - set when the alternate character set is enabled, and do not use - repeat_char for characters past 255. - * improve wide-character implementation of myADDNSTR in - frm_driver.c, which was inconsistent with the normal - implementation. - * modify winnstr and winchnstr to return error if the output pointer - is null, as well as adding a null pointer check of the window - pointer for better compatibility with other implementations. - * modify setupterm to save original tty-modes so that erasechar - works as expected. Also modify _nc_setupscreen to avoid redundant - calls to get original tty-modes. - * modify wattr_set and wattr_get to return ERR if win-parameter is - null, as documented. - * correct order of initialization for traces in use_env and - use_tioctl versus first _tracef calls. - * correct parameters for copywin call in _nc_Synchronize_Attributes - * flush the standard output in _nc_flush for the case where SP is - zero, e.g., when called via putp. This fixes a scenario where - "tput flash" did not work after changes in 20130112. - * amend internal use of tputs to consistently use the number of - lines affected, e.g., for insert/delete character operations. - While merging terminfo source early in 1995, several descriptions - used the "*" proportional delay for these operations, prompting a - change in doupdate. - * correct return-value of extended putwin. - * double-width multibyte characters were not counted properly in - winsnstr and wins_nwstr. - * amend fix for _nc_ripoffline from 20091031 to make test/ditto.c - work in threaded configuration. - * modify _nc_viscbuf2 and _tracecchar_t2 to trace wide-characters as - a whole rather than their multibyte equivalents. - * minor fix in wadd_wchnstr to ensure that each cell has nonzero - width. - * move PUTC_INIT calls next to wcrtomb calls, to avoid carry-over of - error status when processing Unicode values which are not mapped. - * add missing assignment in lib_getch.c to make notimeout work + * fix a special case in PutAttrChar where a cell is marked as + alternate-character set, but the terminal does not actually + support the given graphic character. This would happen in an older + terminal such as vt52, which lacks most line-drawing capability. + * corrected flag for "seq" method of db 1.8.5 interface, needed by + toe on some of the BSDs. + * modify comparison in make_hash.c to correct a special case in + collision handling for Caps-hpux11 + * add extended_slk_color{,_sp} symbols to the appropriate + package/*.{map,sym} files + * modify lib_setup to avoid calling pthread_self() without first + verifying that the address is valid, i.e., for weak symbols + * add a couple of broken-linker symbols to the list of versioned + symbols to help with link-time optimization versus weak symbols. Program improvements - While reviewing user feedback, it became apparent that the differences - between [20]reset (an alias for tset) and "tput reset" were confusing: - * one ([21]tset) updated the terminal modes, but used only part of - the terminfo capabilities for initialization, while - * the other ([22]tput) used all of the terminal capabilities while - neglecting the terminal modes. - - On further investigation, it turned out that the differences were - largely an accident due to the way those programs had evolved. - - This release eliminates the unnecessary differences, using the same - approach for tput's init (initialization), reset and clear operations - as the separate [23]reset and [24]clear programs. Doing this does not - change the command-line options; existing scripts are unaffected. - - These are the user-visible changes for the three programs (tput, tset - and clear): - * add the terminal-mode parts of "reset" (aka tset) to the "tput - reset" command, making the two almost the same except for - window-size. - * improve tput's check for being called as "init" or "reset" to - allow for transformed names. - * add "clear" as a possible link/alias to tput. - * amend changes for tput to reset tty modes to "sane" if the program - is run as "reset", like tset. Likewise, ensure that tset sends - either reset- or init-strings. - * add -x option to clear/tput to make the E3 extension optional - * add functionality of "tset -w" to tput, like the "-c" feature this - is not optional in tput. - * add options -T and -V to clear command for compatibility with - tput. - * drop long-obsolete "-n" option from tset. - * modify tset's assignment to TERM in its output to reflect the name - by which the terminal description is found, rather than the - primary name. That was an unnecessary part from the initial - conversion of tset from termcap to terminfo. The termcap library - in 4.3BSD did this to avoid using the short 2-character name - * remove a restriction in tput's support for termcap names which - omitted capabilities normally not shown in termcap translations - * add usage message to clear command - * improve usage messages for tset and tput. - - Other user-visible improvements and new features include: - * modify tic/infocmp display of numeric values to use hexadecimal - when they are "close" to a power of two, making the result more - readable. - * add "-W" option to tic/infocmp to force long strings to wrap. - + This is in addition to the "-w" option which attempts to fit - capabilities into a given line-length. - + If "-f" option splits line, do not further split it with - "-W". - + Begin a new line when adding "use=" after a wrapped line. - * add "-q" option to infocmp to suppress the "Reconstructed from" - comment from the header, and a corresponding option to tic to - suppress all comments from the "tic -I" output. - * Sorted options in usage message for infocmp, to make it simpler to - see unused letters. - * Updated usage message for tic, adding "-0" option. - * add infocmp/tic "-Q" option, which allows one to dump the compiled - form of the terminal entry, in hexadecimal or base64: - + A "b64:" prefix in the TERMINFO variable tells the terminfo - reader to use base64 according to RFC-3548 as well as - RFC-4648 url/filename-safe format. - + A "hex:" prefix tells the terminfo reader to accept - hexadecimal data as generated by "infocmp -0qQ1". - - Other less-visible improvements and new features include: - * modify utility headers such as tic.h to make it clearer which are - externals that are used by tack. - * add "reset" to list of programs whose names might change in - manpages due to program-transformation configure options. - * modify "-T" option of clear and tput to call use_tioctl to obtain - the operating system's notion of the screensize if possible. - * add check in tput for init/reset operands to ensure those use a - terminal. - * modify programs clear, tabs, tput and tset to pass the actual tty - file descriptor to setupterm rather than the standard output or - error, making padding work. - * change tset's initialization to allow it to get settings from the - standard input as well as /dev/tty, to be more effective when - output or error are redirected. - * amend check in tput, tabs and clear to allow those to use the - database-only features in cron if a "-T" option gives a suitable - terminal name. - * improve error message from tset/reset when both stderr/stdout are - redirected to a file or pipe. - - Several of the less apparent features deal with translation of - terminfo to termcap (and the reverse), with corresponding checks by - tic: - * modify check in fmt_entry to handle a cancelled reset string. Make - similar fixes in other parts of dump_entry.c and tput.c - * correct read of terminfo entry in which all strings are absent or - explicitly cancelled. Before this fix, the result was that all - were treated as only absent. - * modify infocmp to suppress mixture of absent/cancelled - capabilities that would only show as "NULL, NULL", unless the "-q" - option is used, e.g., to show "-, @" or "@, -". - * correct a warning from tic about keys which are the same, to skip - over missing/cancelled values. - * add check in tic for use of bold, etc., video attributes in the - color capabilities, accounting whether the feature is listed in - ncv. - * add check in tic for unnecessary use of "2" to denote a shifted - special key. - * improve check in tic for delays by also warning about beep/flash - when a delay is not embedded, or if those use the VT100 reverse - video escape without using a delay. - * improve checks in trim_sgr0, comp_parse.c and parse_entry.c, for - cancelled string capabilities. - * add check in tic for some syntax errors of delays, as well as use - of proportional delays for non-line capabilities. - * add check in tic for conflict between ritm, rmso, rmul versus - sgr0. - * add check in _nc_parse_entry for invalid entry name, setting the - name to "invalid" to avoid problems storing entries. - * improve _nc_tparm_analyze, using that to extend the checks made by - tic for reporting inconsistencies between the expected number of - parameters for a capability and the actual. - * remove tic warning about "^?" in string capabilities, which was - marked as an extension; however all Unix implementations support - this and X/Open Curses does not address it. On the other hand, - [25]BSD termcap did not support this feature (until the - [26]mid-1990s). - in _nc_infotocap, added a check to ensure that terminfo "^?" is - not written to termcap. - * modify sscanf calls in _nc_infotocap for patterns "%{number}%+%c" - and "%'char'%+%c" to check that the final character is really "c", - avoiding a case in icl6404 which cannot be converted to termcap. - * in _nc_tic_expand and _nc_infotocap, improved string-length check - when deciding whether to use "^X" or "\xxx" format for control - characters, to make the output of tic/infocmp more predictable. - * limited termcap "%d" width to 2 digits on input, and use "%2" in - preference to "%02" on output. - * correct terminfo/termcap conversion of "%02" and "%03" into "%2" - and "%3"; the result repeated the last character. + Several improvements were made to the utility programs: - Examples + clear - Along with the library and utilities, many improvements were made to - the [27]ncurses-examples. - - These changes were made to demonstrate new extensions in ncurses: - * add demo_new_pair program, to demonstrate [28]alloc_pair, - [29]find_pair and [30]free_pair functions. - This program iterates over the possible color combinations, - allocating or initializing color pairs. For best results, choose - screen-width dividing evenly into the number of colors. e.g., - - 32x64,32x128 256 colors - 24x44,24x88 88 colors - 32x64,24x128 16 colors - - * add extended_color program, like the older color_set program, but - using the extended color functions, with and without the - SP-functions interface. - * add picsmap program to fill in some testing issues not met by - dots, using this as the third example in a comparison of the - [31]ncurses versus slang libraries. - The program can directly read X bitmap and pixmap files, - displaying a picture. It can read other image files using - ImageMagick's convert program to translate the image into text. - For 16-, 88- and 256-color terminal descriptions, picsmap can load - a palette file which tells it which color palette entries to use. - For direct-colors, the terminal descriptions use the RGB extension - capability. + + improved logic for clearing with the E3 extension, in case + the terminal scrolls content onto its saved-lines before + actually clearing the display, by clearing the saved-lines + after clearing the display - There are other new example programs and a few scripts: - * add dots_xcurses program to illustrate a different approach used - for extended colors which can be contrasted with dots_curses. - * add list_keys program show function keys for one or more terminal - descriptions. It uses ncurses's convention of modifiers for - special keys, based on xterm. - * add padview program, to compare pads with direct updates in the - view program. - * add sp_tinfo program to exercise the SP-functions extension of the - low-level terminfo library. - * add test-programs for termattrs and term_attrs functions. - * add test_sgr program to exercise all combinations of the sgr - capability. - * add tput-colorcube demo script, imitating xterm's 88- and - 256-color scripts using tput. - * add tput-initc script to demonstrate how tput may be used to - initialize a color palette from a data file. + infocmp + + + omit filtering of "OTxx" names which are used for obsolete + capabilities, when the output is sorted by long-names. This + change helps when making a table of the short/long capability + names. + + tic + + + added check for consistent alternate character set + capabilities. + + added check for paired indn/rin. + + added check for terminals with parm_dch vs parm_ich. + + added check for the case where setf/setb are given using + different strings, but provide identical results to + setaf/setab. + + corrected check for ich1. + + changed a too-large terminal entry from a fatal error to a + warning. + + toe + + + ignores any hex/b64 $TERMINFO value in the list of terminfo + databases. + + tset + + + replace check in reset command for obsolete "pt" capability + using tbc and hts capabilities as clues + + modify reset to allow for tabstops at intervals other than 8. + + change reset's behavior for margins to simply clear + soft-margins if possible, rather than clearing and then + setting them according to the terminal's width. + + tput + + + add "x" to getopt string so that "tput -x clear" works. + + Several changes were made to the generated ncurses*config scripts and + the analogous ".pc" files to reduce differences between the + configurations they report: + * modified the ncurse*-config and pc-files to more closely match for + the -I and -l options. + * filtered out linker-specs from the --libs report. + * amended the ncurses*-config and pc-files to take into account the + rpath hack which differed between those files. + * modified generated ncurses*config and ncurses.pc, ncursesw.pc, + etc., to list helper libraries such as gpm for static linking. + + Examples + + Along with the library and utilities, improvements were made to the + ncurses-examples. Most of this activity aimed at improving the + test-packages. A few changes are more generally useful, e.g., for the + main ncurses test-program, and for analyzing traces using the + tracemunch script: + * improve recovery from error when reading command-character in + test/ncurses.c, showing the relevant error message and not exiting + on EINTR. + * improve tracemunch, by keeping track of TERMINAL* values, and if + tracing was first turned on after initialization, attempt to show + distinct screen, window and terminal names anyway. + * modify tracemunch to accept filename parameters in addition to use + as a pipe/filter. + * update tracemunch to work with perl 5.26.2, which changed the + rules for escaping regular expressions. + * add some checks in tracemunch for undefined variables. + * modify TurnOn/TurnOff macros (in lib_vidattr.c and lib_vid_attr.c) + to avoid expansion of "CUR" in trace. + + There are other new demo/test programs and reusable examples: + + color_content + Demonstrate the color_content and extended_color_content + functions. + + demo_tabs + A simple demo of tabs in curses. + + dump_window + A portable curses screen-dump, used to compare ncurses screen + contents with Solaris. + + pair_content + Demonstrate the pair_content and extended_pair_content + functions. + + report_hashing + Check hash-tables used for terminfo and termcap names. + + parse_rgb + Sample implementation of the ncurses RGB extension from + user_caps.5, used in picsmap and savescreen programs. A variety of improvements were made to existing programs, both new features as well as options added to make the set of programs more consistent. - - The ncurses program is the largest; a proportionately large number of - changes were made to it: - * modify a/A screens to make exiting on an escape character depend - on the start of keypad and timeout modes, to allow better testing - of function-keys. - add "t" toggle for notimeout function. - * modify layout of b/B screens to allow for additional annotation on - the right margin; some terminals with partial support did not - display well. - * modify c/C screens to allow for extended color pairs. - add z/Z zoom feature to make extended color pairs easier to test. - modify test-screens to take advantage of wide screens, reducing - the number of lines used for 88- and 256-colors. - * modify "d" edit-color screen to optionally read xterm color - palette directly from terminal, as well as handling KEY_RESIZE and - screen-repainting with control/L and control/R. - * add examples to "F" screen for WACS_D_PLUS and WACS_T_PLUS. - * improve "g" screen, correcting ifdef which made the legend not - reflect changes to keypad- and scroll-modes. Added check for - return-value of putwin. - * make "s" test easier to understand which subtests are available - add a corresponding "S" wide-character overlap test-screen. - * add "v" screen to show baudrate and other values. - - These changes were made to the other examples: - * modify blue program to use Unicode values for card-glyphs when - available, as well as improving the check for CP437 and CP850. - * improve demo_menus program, allowing mouse-click on the - menu-headers to switch the active menu. This requires a new - extension option O_MOUSE_MENU to tell the menu driver to put mouse - events which do not apply to the active menu back into the queue - so that the application can handle the event. - * correct logic in demo_terminfo program for "-f" option - * modify ditto program to allow $XTERM_PROG environment variable to - override "xterm" as the name of the program to run in the threaded - configuration. - * add several options to the "dots" test-programs. - * modify filter program: - + illustrate an alternative to getnstr, that polls for input - while updating a clock on the right margin as well as - responding to window size-changes. - + adapt logic used in [32]dialog [33]"--keep-tite" option for - filter program as the "-a" option. When set, filter attempts - to suppress the alternate screen. - * modify knight program to provide the "slow" solution for small - screens using "R", noting that Warnsdorf's method is easily done - with "a". - * modify the savescreen program to add test patterns that exercise - 88-, 256-, etc., colors. - * add options to test_arrays, for selecting termcap vs terminfo, - etc. - * modify the view program: - + expand tabs using the ncurses library rather than in the - test-program. - + eliminate the "-n" option by simply reading the whole file. - + implement page up/down commands. - + remove the very old SIGWINCH example; just use KEY_RESIZE. - * improve animation in xmas program by adding a time-delay in - blinkit. - * modify several test-programs which call use_default_colors to - consistently do this only if the "-d" option is given. - * modify the install-rule for ncurses-examples to put the data files - in the data directory, e.g., /usr/share/ncurses-examples. - * modify several test programs to use new popup_msgs function, - adapted from the help-screen used in the edit_field program. - * modify test data for xterm palettes to use the newer - color4/color12 values. - * improve the tracemunch script: - + show screenXX pointers and thread identifiers as names. - + chang address-parameters of add_wch, color_content and - pair_content to dummy parameters. + * add "-l" option to test/background, to dump screen contents in a + form that lets different curses implementations be compared. + * add "@" command to test/ncurses F-test, to allow rapid jump to + different character pages. + * added enum, regex examples to test/demo_forms + * amend Scaled256() macro in test/picsmap.c to cover the full range + 0..1000 + * corrected pathname used in Ada95 sample programs for explain.txt, + to work with test-packages, and used an awk script to split the + resulting pathname when it would be too long for a single line. + * ignore interrupted system-call in test/ncurses's command-line, + e.g., if the terminal were resized. + * improved ifdef's for TABSIZE variable, to help with AIX/HPUX + ports. Terminal database There are several new terminal descriptions: - dumb-emacs-ansi, dvtm, dvtm-256color, fbterm, iterm2, linux-m1 - minitel entries, putty-noapp, viewdata, and vt100+4bsd - building-block. - - xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title - building blocks and xterm+direct, xterm+indirect, xterm-direct. - from [34]xterm patch #331. - - several other "-direct" descriptions to address the differences of - other terminal emulators versus xterm-direct. + alacritty, domterm, kitty, mintty, mintty-direct, ms-terminal, + n7900, nsterm-build309, nsterm-direct, screen5, ti703, ti707, + ti703-w, ti707-w vscode, vscode-direct, xterm-mono, xterm.js There are many changes to existing terminal descriptions. Some were updates to several descriptions: - * use xterm+sm+1006 in several terminal descriptions which were - validated as supporting the extended mouse feature for their - respective terminal emulators. - * corrected sgr/sgr0 strings in a few cases reported by tic, making - those correspond to the non-sgr settings where they differ, but - otherwise use ECMA-48 consistently. - * add 0.1sec mandatory delay to flash capabilities using the VT100 - reverse-video control + * use ansi+rep in a dozen places + * add rs1 to konsole, mlterm + * improve several flash capabilities with trailing mandatory delays + * drop ich1 from rxvt-basic, Eterm and mlterm to improve + compatibility with old non-curses programs + * add/use xterm+keypad in xterm-new + * use xterm+sl-twm for consistency, nine places + * improve xm example in xterm+x11mouse and xterm+sm_1006. while others affected specific descriptions. These were retested, to - take into account new/undocumented changes by their developers: + take into account changes by their developers: - iterm, minitel, st, viewdata, nsterm + terminator, st - while these are specific fixes based on user reports, or warnings from - tic: + while these are specific fixes based on reviewing documentation, user + reports, or warnings from tic: - [35]ansi building blocks + adds200: - + restored rmir/smir in ansi+idc to better match original - ansiterm+idc, add alias ansiterm + + fix typo - [36]icl6402 + gnome-256color - + corrected missing comma-separator between string capabilities - in icl6402 and m2-nam + + base entry on "gnome", not "vte", for consistency - [37]interix + interix - + updated using tack and SFU with Windows 7 Ultimate. - + used ^? for kdch1 + + trim unnecessary setf/setb - [38]linux + linux-16color - + made linux3.0 entry the default linux entry - + modify linux2.6 entry to improve line-drawing so that the - linux3.0 entry can be used in non-UTF-8 mode - + omitted selection of ISO-8859-1 for G0 in enacs capability - from linux2.6 entry, to avoid conflict with the user-defined - mapping. The reset feature uses ISO-8859-1 in any case. - + modify flash capability for linux and wyse entries to put the - delay between the reverse/normal escapes rather than after - + modify linux-16color to not mask dim, standout or reverse - with the ncv capability + + accommodate Linux console driver incompatibility introduced + in early 2018 - [39]pccon entries + nsterm-256color: - + fixed some inconsistencies in the pccon* entries - + add bold to pccon+sgr+acs and pccon-base - + add keys f12-f124 to pccon+keys + + add nsterm-build309 to replace nsterm-256color, assigning the + latter as an alias of nsterm, to make mouse work with + nsterm-256color - [40]tmux + regent40: - + corrected sgr string, which used screen's "standout" code - rather than the standard code. - + add settings corresponding to xterm-keys option to reflect - upcoming change to make that option "on" by default - + uncanceled Ms + + renumber function-keys to match manual - [41]vt100 + regent60: - + modify vt100 rs2 string to reset vt52 mode and scrolling - regions - + corrected rs2 string for vt100-nam - + made minor fixes for vt100+4bsd, e.g., delay in sgr for - consistency + + add cd (clr_eos) + + corrected acsc + + add shifted function-keys - [42]vte + tvi950: - + moved SGR 24 and 27 from vte-2014 to vte-2012 - + add a few capabilities fixed in recent VTE development + + added function-key definitions to agree with Televideo 950 + manual + + corrected acsc + + remove bogus kf0 + + add bel - [43]xterm + tvi955: - + add rep to xterm-new, available since [44]late 1996. - + modify xterm+256color and xterm+256setaf to use correct - number of color pairs. - + modify rs1 for xterm-16color, xterm-88color and - xterm-256color to reset palette using oc string as in linux - entry. - + add rs1 capability to xterm-256color - + add oc capability to xterm+256color, allowing palette reset - for xterm - + add op to xterm+256setaf - + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs - to match [45]xterm #272, reflecting packager's changes - + used ANSI reply for u8 in xterm-new, to reflect vt220-style - responses that could be returned. - + made xterm-pcolor sgr consistent with other capabilities + + fix typo + + vi200: + + + add acsc string, including right/down-arrow + + wy50: + + + corrected acsc + + wy50 and wy60: + + + add shifted function-keys as kF1 to kF16 + + xterm+x11hilite: + + + eliminate unused p5 parameter. A few entries use extensions (user-defined terminal capabilities): - * add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic - * used RGB capability in new *-direct entries to denote direct-color - feature. + * use xterm+sm+1006 (aka "SGR 1006 mouse") for konsole-base and + putty + * add Smol/Rmol user-defined capability to tmux and vte-2018 + * add Smulx user-defined capability to tmux, vte-2018 Documentation @@ -639,273 +402,279 @@ Release Notes * attempts to improve the description of features which users have found confusing * fills in overlooked descriptions of features which were described - in the [46]NEWS file but treated sketchily in manual pages. - - In particular, - * Since the underlying features for [47]tset, [48]tput, and - [49]clear have been better integrated, the documentation now - includes information on how those tools evolved. - In addition to explaining the improved integration of the tools, - the manual pages made it easier to see how the tools are similar - and how they are different. - * The addch manual page has additional information on - [50]portability and differences from other implementations. - * The discussion of color-pairs in the attributes manual page is - improved in its [51]history section. - * The documentation of the chtype, cchar_t types and the attribute - values which can be stored in those types, in particular the - [52]history and [53]portability sections of the attributes manual - page, has been improved. - * improve discussion of [54]portability in the mouse manual. - * The pad manual page has a section on the [55]origin and - portability of pads. - * Differences between SVr4 and X/Open Curses soft-keys are discussed - in a new section on [56]portability. - * There are updated/improved notes on portability in the - [57]resizeterm and [58]wresize manual pages. + in the NEWS file but treated sketchily in manual pages. In addition to providing background information to explain these features and show how they evolved, there are corrections, clarifications, etc.: - * add note in the [59]addch manual about line-drawing when it - depends upon UTF-8. - * improve discussion of line-drawing characters in the [60]add_wch - manual. - * explain in [61]clear's manual page that it writes to the standard - output. - * improve description of [62]endwin. - * improve discussion of field validation in the [63]form driver - manual page. - * clarify the use of wint_t vs wchar_t in [64]get_wstr manual page. - * clarify in the [65]getch manual that the keypad mode affects an - application's ability to read KEY_MOUSE codes, but does not affect - KEY_RESIZE. - trim some obsolete/incorrect wording about EINTR from the getch - manual page - improve manual pages for [66]getch and [67]get_wch to point out - that they might return user-defined values which have no - predefined names in - * improve description of the -R option in the [68]infocmp manual - page - * clarify in the [69]resizeterm manual page how KEY_RESIZE is pushed - onto the input stream. - * document return value of [70]use_extended_names - * document differences in [71]ESCDELAY versus AIX's implementation - in the variables manual page. - * The _nc_free_tinfo function is now documented in the - [72]memory-leaks manual page, because it could be used in tack for - memory-leak checking. - * add a note to the [73]tic manual page about -W versus -f options. - * improve terminfo manual description of [74]terminfo syntax. - improve terminfo manual page discussion of [75]control- and - graphics- characters. - improve [76]color-handling section in terminfo manual page - * clarify description in [77]tput manual page regarding support for - termcap names - update [78]tput manual page to reflect changes to manipulate - terminal modes by sharing functions with tset. - * clarify in manual pages that the optional verbose option level of - [79]tic and [80]infocmp is available only when ncurses is - configured for tracing. - * improve manual page description of [81]tset/reset versus - window-size. - * improve description of [82]tgoto parameters - - There are new manual pages: - * [83]user_caps documents the terminfo extensions used by ncurses. - * [84]scr_dump documents the screen-dump format. + * Corrections: + + correct error-returns listed in manual pages for a few form + functions + + corrected prototypes in several manpages using script to + extract those in compilable form. + + fix typo in term.5, improve explanation of format + * Clarify in manual pages that vwprintw and vwscanw are obsolete. + They have not been part of X/Open Curses since 2007. + * New/improved history and portability sections: + + curs_addch.3x gives some background for ACS symbols. + + curs_getcchar.3x explains a difference between ncurses and + X/Open Curses. + + curs_getstr.3x gives historical/portability background for + the length parameter of wgetnstr. + + curs_slk.3x lists a few differences between SVr4 curses and + X/Open Curses for soft-keys. + + curs_terminfo.3x explains that the initial implementation of + terminfo in SVr2 was mostly replaced by other developers in + SVr3. + + infocmp.1 explains that the initial version of terminfo had + no tool for decompiling descriptions. That came later, with + SVr3, with a different developer. + + tabs.1 tells more than you wanted to know about the tool. + + tic.1 explains that the initial version of terminfo had a + rudimentary tool (based on termcap) for compiling entries. + The tool used with Unix was developed by others for SVr3. + + toe.1 explains the origin of this tool. + * Improvements for user_caps.5: + + mention meml, memu and box1 + + expanded description of XM + + add a clarification regarding the RGB capability. + + mention user_caps.5 in the tic and infocmp manual pages. + * Other improvements: + + curs_add_wch.3x adds note about Unicode terminology for the + line-drawing characters. + + curs_color.3x improves discussion of error returns and + extensions. + + curs_mouse.3x explains how the kmous and XM capabilities are + used for xterm-mouse input. + + curs_refresh.3x improves documentation regarding the virtual + and physical screens. + + curs_util.3x mentions a difference between SVr4 and X/Open + Curses for unctrl.h + + curs_variables.3x improves description of the init_tabs + capability and TABSIZE variable. + + ncurses.3x improves documentation regarding feature-test + macros in curses.h + + resizeterm.3x about top-level windows which touch the + screen's borders. + + tput.1 clarifies how tput determines the terminal size. + + There are no new manual pages (all of the manual page updates are to + existing pages). Some of the improvements are more subtle, relating to the way the - information is presented: - * Made minor fixes to manpage NAME/SYNOPSIS sections to consistently - use rule that either all functions which are prototyped in - SYNOPSIS are listed in the NAME section, or the manual-page name - is the sole item listed in the NAME section. The latter is used to - reduce clutter, e.g., for the top-level library manual pages as - well as for certain feature-pages such as [85]SP-funcs and - [86]threading. - * improve manual pages for utilities with respect to POSIX versus - X/Open Curses. - * improve organization of the [87]attributes and [88]color manual - pages. + information is presented. For instance, the generated terminfo.5 file + uses a different table layout, allowing it to use space on wide + terminals more effectively. Interesting bug-fixes - * modify toe to not exit if unable to read a terminal description, - e.g., if there is a permission problem. - * correct 20100515 change for weak signals versus sigprocmask - * work around Ada tool-breakage in Debian 9 and later by invoking - gprconfig to specify the C compiler to be used by gnatmake, and - conditionally suppressing Library_Options line for static - libraries. - * There were, as well, several bug-fixes to handle illegal input for - tic. Because those did not correspond to useful terminal - descriptions, most users are unaffected. + While there were many bugs fixed during development of ncurses 6.2, + only a few (the reason for this release) were both important and + interesting. Most of the bug-fixes were for local issues which did not + affect compatibility across releases. Since those are detailed in the + NEWS file no elaboration is needed here. + + The interesting bugs were in tic/infocmp's handling of user-defined + capabilities. These were not recent bugs. Initially it was a simple + problem: + * The user-defined capabilities can be any type (boolean, number or + string), but once given a type all uses of the name must conform + to that type--unless some special support for a particular + multi-typed name is built into ncurses. + * One of simpleterm's contributors copied some definitions for using + tmux's user-defined capabilities in late in 2016. + +diff --git a/st.info b/st.info +@@ -185,7 +185,10 @@ st| simpleterm, + tsl=\E]0;, + xenl, + vpa=\E[%i%p1%dd, +- ++# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1) ++ Se, ++ Ss, ++ Tc, + + st-256color| simpleterm with 256 colors, + use=st, + + * Later, in (referring to a version from mid-2017), a user asked to + have it updated in ncurses. + * However, it had an error from the change in late 2016. The + terminal description made what tmux expected to be string actually + a boolean. + Over the years, there were problems with each of simpleterm's + terminal descriptions. I repaired those, and usually dealt with + the problem. + * The difference in this case was that when compiling the terminal + database, tic may have in memory the definitions for more than one + terminal description (so that it can resolve "use=" clauses). + Seeing two different types for the same name, in certain + situations it would incorrectly merge the symbol tables for the + two terminal descriptions. + * On simpleterm's side, their bug was finally fixed in late 2019, + three years after the bug was created. + + For ncurses, the elapsed time to fix this bug was less than three + years. Someone reported a problem with the terminal description a few + weeks after releasing ncurses 6.1 (in tmux #1264), and the terminal + description was updated that week (ncurses patch 20180224): + +20180224 + + modify _nc_resolve_uses2() to detect incompatible types when merging + a "use=" clause of extended capabilities. The problem was seen in a + defective terminfo integrated from simpleterm sources in 20171111, + compounded by repair in 20180121. + + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD + + The larger part of that change added a check to prevent a simple merge + of terminal descriptions where the same user-defined name was used + with different types. But it raised some questions: + * Was there a reliable way to manage terminal descriptions which + used the same extended name in different ways? + * Should ncurses provide a registry of well-known extended names, + with their types? + + Since the correction to terminfo.src could have been readily adopted + by packagers, there was nothing more to be done from ncurses' + standpoint on that part. But improving ncurses to prevent issues like + that is the reason for making a release. + + Nothing more (constructive) was mentioned with regard to simpleterm. + But a few problems were found in the handling of user-defined + capabilities: + * Forward-references to user-defined capabilities in a "use=" clause + did not allocate new data for each use. In tic, successive + compilation of terminal entries could add user-defined + capabilities to the wrong terminal entry. + This was not noticed before, since xterm's terminal descriptions + were the main users of the feature, and almost all of the uses of + the building-blocks which contained user-defined capabilities were + backward-references. + * There is one (documented) case where ncurses 6.1 supports a + user-defined capability that could be any type (i.e., "RGB"). The + check added in February 2018 to guard against mismatches did not + handle all of the combinations needed. + + Both of these issues dated from the original implementation of + user-defined capabilities. Fixing them does not change the terminal + database, but a older tic without the fixes will not be able to handle + terminfo sources which rely upon those fixes. Starting in June 2019, + the download link for the terminfo source file was capped at that + date. The development sources have an up-to-date copy of the file, for + people with a legitimate need for it. + + The "-c" (check) option of tic is not very useful if it cannot offer + advice on parameters needed for user-defined capabilities. The various + Caps files were reorganized to reduce redundancy, and in the common + portion (Caps-ncurses), a registry of user-defined capabilities is + provided for use by tic. While users can still define their own custom + capabilities, tic will not offer any advice when their parameters do + not match. + + In ncurses 6.2, tic makes a special check to allow any type for RGB, + but its being able to do this relies upon fixes made in the ncurses + library in mid-2019. Configuration changes Major changes - This release provides a new binary format for terminal descriptions - that use extended numeric capabilities. Applications built with the - wide-character ncursesw library can use these extended numbers. - * This includes utilities such as tic and infocmp, because (as noted - in [89]New features), the feature relies upon an extension to the - low-level tinfo library. - * A few software packagers use a configuration option of ncurses - which allows the low-level tinfo library to be shared between the - high-level ncurses and ncursesw libraries. This new feature was - designed to work in that configuration as well. - - Other applications (i.e., using the 8-bit ncurses library) which read - the extended terminal descriptions see those numeric capabilities set - to the maximum value for a signed 16-bit number. - - Older versions of ncurses' tic accept out-of-range numeric - capabilities, storing those as the maximum value for a signed 16-bit - number. Other implementations of curses (mentioned in the discussion - of [90]picsmap) give zero for these out-of-range capabilities. + There are no major changes. Several new options were added to ease + integration of packages with systems using different versions of GNAT + and ncurses. Also, improvements were made to configure checks. Configuration options - These changes provide support for tack 1.08, released in [91]July - 2017: - * add --without-tack configure option to refine --with-progs - configure option. Normally tack is built outside the ncurses tree, - but a few packagers combine it during the build. If term_entry.h - is installed, there is no advantage to in-tree builds. - * adjust configure-script to define HAVE_CURSES_DATA_BOOLNAMES - symbol needed for tack 1.08 when built in-tree. Rather than - relying upon internal "_nc_" functions, tack now uses the boolean, - number and string capability name-arrays provided by ncurses and - SVr4 Unix curses. It still uses term_entry.h for the definitions - of the extended capability arrays. - * add dependency upon ncurses_cfg.h to tic's header-files; any - program using tic-library will have to supply this file. Legacy - tack versions supply this file; ongoing tack development has - dropped the dependency upon tic-library and new releases will not - be affected. - - Other changes to the configure-script and generated files include - * add configure options to disable checks for form, menu and panel - libraries so that ncurses-examples can be built with non-SVr4 - curses implementations. - * add configure option --enable-opaque-curses for ncurses library - and similar options for the other libraries. - * add configure option --disable-wattr-macros for use in cases where - one wants to use the same headers for ncurses5/ncurses6 - development, by suppressing the wattr* macros which differ due to - the introduction of extended colors - * modify configure macro for shared-library rules to use -Wl,-rpath - rather than -rpath to work around a bug in scons - * improve ncurses-examples' configure script to define as needed - NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED does - not work. Also modified the test program to ensure that if - building with ncurses, that the cchar_t type is checked, since - that is normally (since [92]20111030) ifdef'd depending on this - test. - * modify configure script to handle the case where tic-library is - renamed, but the --with-debug option is used by itself without - normal or shared libraries - * modify editing script which generates resulting.map to work with - the clang configuration on recent FreeBSD, which gives an error on - an empty "local" section. - * improve configure check for setting the WILDCARD_SYMS variable; on - ppc64 the variable is in the Data section rather than Text. - * correct result of configure option --without-fallbacks, which - caused FALLBACK_LIST to be set to "no" - * modify --with-pkg-config-libdir option to make it possible to - install ".pc" files even if pkg-config is not found. Limit this - change, to suppress the actual install if it is not overridden to - a valid directory at install time. - * disallow "no" as a possible value for --with-shlib-version option, - overlooked in cleanup-changes for [93]20000708. + There are a few new/modified configure options: + + --with-config-suffix + helps work around a filename conflict with Debian packages + versus test-packages. + + --with-ada-libname + allows one to rename the "AdaCurses" library (at least one + packager prefers a lowercase name). + + --with-fallbacks + now ensures there is a value, and adds the fallback information + to top-level Makefile summary. + + --with-pcre2 + check for pcre-posix library to help with MinGW port. + + --with-tic-path and + + --with-infocmp-path + help work around problems building fallback source using + pre-6.0 tic/infocmp. + + --with-versioned-syms + option value can now be a relative pathname. Portability Many of the portability changes are implemented via the configure script: - * improve configure script's CF_CC_ENV_FLAGS macro to allow for - compiler wrappers such as ccache. This change moves only the - preprocessor, optimization and warning flags to CPPFLAGS and - CFLAGS, leaving the residue in CC. That happens to work for gcc's - various "model" options, but may require tuning for other - compilers. - * modify ncurses-examples' configure script to use pkg-config for - the extra form/menu/panel libraries, to be more consistent with - the handling of the curses/ncurses library. - * add configuration checks to build with [94]NetBSD curses, which - for example lacks [95]use_env. - * change ncurses-examples to use attr_t vs chtype to follow X/Open - documentation more closely since Solaris xpg4-curses uses - different values for WA_xxx vs A_xxx that rely on attr_t being an - unsigned short. Tru64 aka OSF1, HPUX, AIX did as ncurses does, - equating the two sets. - * modify several test programs to reflect that ncurses honors - existing signal handlers in initscr, while other implementations - do not. - * add configure check for openpty to ncurses-examples' configure - script, for ditto. - * improve check for working poll function by using posix_openpt as a - fallback in case there is no valid terminal on the standard input - * modify ncurses-examples' configure script to check for pthread - dependency of ncursest or ncursestw library when building the - ncurses examples, e.g., in case weak symbols are used. - * add checks in ncurses-examples' configure script for some - functions neither in 4.3BSD curses, nor based on X/Open Curses: - + modify a loop limit in firework.c to work around absense of - limit checks in some libraries. - + fill the last row of a window with "?" in firstlast if waddch - does not return ERR on the lower-right corner. - * build-fixes for the Portland Group (PGI) compilers - + accept whitespace in sed expression for generating expanded.c - + modify configure check that g++ compiler warnings are not - used. - + add configure check for -fPIC option needed for shared - libraries. - * modify configure script for clang as used on FreeBSD, to work - around clang's differences in exit codes vs gcc. - * fixes for configure/build using clang on OSX - + do not redefine "inline" in ncurses_cfg.h; this was - originally to solve a problem with gcc/g++, but is aggravated - by clang's misuse of symbols to pretend it is gcc. - + add braces to configure script to prevent unwanted addition - of "-lstdc++" option to the CXXLIBS symbol. - + improve/update test-program used for checking existence of - stdc++ library. - + if $CXXLIBS is set, the linkage test uses that in addition to - $LIBS. - * fixes for OS/2: - + use button instead of kbuf[0] in EMX-specific part of - lib_mouse.c - + support building with libtool on OS/2 - + use stdc++ library with OS/2 kLIBC - + clear configure script's cf_XOPEN_SOURCE for OS/2, to work - with its header files - * add "newer" baudrate symbols to the [96]baudrate function in the - ncurses library as well as to a corresponding table in tset. - * modify ncurses-examples savescreen to work with AIX and HPUX. - * define WIN32_LEAN_AND_MEAN for MinGW port, making builds faster. - * add a configure check for wcwidth versus the ncurses line-drawing - characters, to use in special-casing systems such as Solaris. - Solaris, however, requires a special case that maps Unicode - line-drawing characters into the acsc string for non-Unicode - locales. Solaris also has a misconfigured wcwidth which marks all - of the line drawing characters as double-width. - * string-hacks (non-standard): - + fix configure script to record when strlcat is found on - OpenBSD. - + add --enable-string-hacks option to ncurses-examples' - configure script. - + completed string-hacks for sprintf, etc., including the - ncurses-examples programs. - + make --enable-string-hacks option work with Debian by - checking for the "bsd" library and its associated - "" header. - * workaround for Debian's antique/unmaintained version of mawk: - + see Debian #65617, which was fixed in mawk's upstream - releases in [97]2009. - + related fixes when building link_test. + * ignore $TERMINFO as a default value in configure script if it came + from the infocmp -Q option. + * distinguish gcc from icc and clang when the --enable-warnings + option is not used, to avoid unnecessary warnings about + unrecognized inline options + * consistently prepend new libraries as they are found during + configuration, rather than relying upon the linker to resolve + order dependencies of libraries. + * modified configure scripts to reduce relinking/ranlib during + library install : + + use "install -p" when available, to avoid need for ranlib of + static libraries. + + scripts which use "--disable-relink;" add a 1-second sleep to + work around tools which use whole-second timestamps, e.g., in + utime rather than the actual file system resolution. + * add configure check for getenv to work around implementation shown + in Emscripten which overwrites the previous return value on each + call. + Use that to optionally suppress START_TRACE macro, whose call to + getenv may not work properly + * change target configure level for _XOPEN_SOURCE to 600 to address + use of vsscanf and setenv. + * reduce use of _GNU_SOURCE for current glibc where _DEFAULT_SOURCE + combines with _XOPEN_SOURCE + Allow for Cygwin's newlib when checking for the _DEFAULT_SOURCE + symbol. + MidnightBSD is now checked for the _XOPEN_SOURCE-related + definitions. + * If the check for va_copy or __va_copy fails, + + configure now tries copying the pointers for va_list, or as + an array. + + alternatively, it checks for __builtin_va_copy(), which could + be used with AIX xlc in c89 mode. + * several changes to support a port to Ultrix 3.1: + + check if "b" binary feature of fopen works + + check for missing feature of locale.h + + add fallback for strstr() in test-programs + + add fallback for STDOUT_FILENO in test-programs + * The test/configure script (used for ncurses-examples) is improved: + + work around non-ncurses termcap.h file, e.g., in Slackware. + + check for TABSIZE variable. + + checks for the X11/Intrinsic.h header, accommodate recent + MacOS changes which largely emptied /usr/include. + + Here are some of the other portability fixes: + * added dummy "check" rule in top-level and test-Makefile to + simplify building test-packages for ArchLinux. + * dropped library-dependency on psapi for MinGW port, since + win_driver.c defines PSAPI_VERSION to 2, making it use + GetProcessImageFileName from kernel32.dll + * made build-fixes for configuration using --program-suffix with + Ada95, noticed with MacOS but applicable to other platforms + without libpanelw, etc. + * modified ncurses/Makefile.in to fix a case where Debian/testing + changes to the ld --as-needed configuration broke ncurses-examples + test packages. + * used _WIN32/_WIN64 in preference to __MINGW32__/__MINGW64__ + symbols to simplify building with Microsoft Visual C++, since the + former are defined in both compiler configurations. _________________________________________________________________ Features of ncurses @@ -982,10 +751,10 @@ Features of ncurses 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 [98]tic/[99]captoinfo utility provided with ncurses has the - ability to translate many termcaps from the XENIX, IBM and AT&T - extension sets. - * A BSD-like [100]tset utility is provided. + * The tic/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 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 @@ -1000,20 +769,20 @@ Features of ncurses other entries in the same source file (as in System V) but also to compiled entries in either the system terminfo directory or the user's $HOME/.terminfo directory. - * The table-of-entries utility [101]toe makes it easy for users to - see exactly what terminal types are available on the system. + * The table-of-entries utility 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 #undef. - * Extensive documentation is provided (see the [102]Additional - Reading section of the [103]ncurses FAQ for online documentation). + * Extensive documentation is provided (see the Additional Reading + section of the ncurses FAQ for online documentation). Applications using ncurses The ncurses distribution includes a selection of test programs (including a few games). These are available separately as - [104]ncurses-examples + ncurses-examples The ncurses library has been tested with a wide variety of applications including: @@ -1021,127 +790,131 @@ Applications using ncurses aptitude FrontEnd to Apt, the debian package manager - [105]https://wiki.debian.org/Aptitude + https://wiki.debian.org/Aptitude cdk Curses Development Kit - [106]https://invisible-island.net/cdk/ + https://invisible-island.net/cdk/ ded directory-editor - [107]https://invisible-island.net/ded/ + https://invisible-island.net/ded/ dialog the underlying application used in Slackware's setup, and the basis for similar install/configure applications on many systems. - [108]https://invisible-island.net/dialog/ + https://invisible-island.net/dialog/ lynx the text WWW browser - [109]https://lynx.invisible-island.net/ + https://lynx.invisible-island.net/ mutt mail utility - [110]http://www.mutt.org/ + http://www.mutt.org/ ncftp file-transfer utility - [111]https://www.ncftp.com/ + https://www.ncftp.com/ nvi New vi uses ncurses. - [112]https://sites.google.com/a/bostic.com/keithbostic/vi + https://sites.google.com/a/bostic.com/keithbostic/vi ranger A console file manager with VI key bindings in Python. - [113]https://ranger.github.io/ + https://ranger.github.io/ tin newsreader, supporting color, MIME - [114]http://www.tin.org/ + http://www.tin.org/ vifm File manager with vi like keybindings - [115]https://vifm.info/ + https://vifm.info/ as well as some that use ncurses for the terminfo support alone: minicom terminal emulator for serial modem connections - [116]https://alioth.debian.org/projects/minicom/ + https://alioth.debian.org/projects/minicom/ mosh a replacement for ssh. - [117]https://mosh.mit.edu/ + https://mosh.mit.edu/ tack terminfo action checker - [118]https://invisible-island.net/ncurses/tack.html + https://invisible-island.net/ncurses/tack.html tmux terminal multiplexor - [119]https://github.com/tmux/tmux/wiki + https://github.com/tmux/tmux/wiki vile vi-like-emacs may be built to use the terminfo, termcap or curses interfaces. - [120]https://invisible-island.net/vile/ + https://invisible-island.net/vile/ and finally, those which use only the termcap interface: emacs text editor - [121]https://www.gnu.org/software/emacs/ + https://www.gnu.org/software/emacs/ less The most commonly used pager (a program that displays text files). - [122]http://www.greenwoodsoftware.com/less/ + http://www.greenwoodsoftware.com/less/ screen terminal multiplexor - [123]https://www.gnu.org/software/screen/ + https://www.gnu.org/software/screen/ vim text editor - [124]https://www.vim.org/ + https://www.vim.org/ Development activities 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 [125]Thomas Dickey. Thomas Dickey also - acts as the maintainer for the Free Software Foundation, which holds - the [126]copyright on ncurses. + Juergen Pfeifer wrote most of the form and menu libraries. + + Ongoing development work is done by Thomas E. Dickey. Thomas E. Dickey + has acted as the maintainer for the Free Software Foundation, which + holds a copyright on ncurses for releases 4.2 through 6.1. Following + the release of ncurses 6.1, effective as of release 6.2, copyright for + ncurses reverted to Thomas E. Dickey (see the ncurses FAQ for + additional information). Contact the current maintainers at - [127]bug-ncurses@gnu.org + bug-ncurses@gnu.org To join the ncurses mailing list, please write email to - [128]bug-ncurses-request@gnu.org + bug-ncurses-request@gnu.org containing the line: @@ -1150,219 +923,60 @@ Development activities 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 + Beta versions of ncurses are made available at + + ftp://ftp.invisible-island.net/ncurses/current/ and + https://invisible-mirror.net/archives/ncurses/current/ . + + Patches to the current release are made available at - [129]ftp://ftp.invisible-island.net/ncurses/ and - [130]https://invisible-mirror.net/archives/ncurses/ . + ftp://ftp.invisible-island.net/ncurses/6.1/ and + https://invisible-mirror.net/archives/ncurses/6.1/ . There is an archive of the mailing list here: - [131]http://lists.gnu.org/archive/html/bug-ncurses (also - [132]https) + http://lists.gnu.org/archive/html/bug-ncurses (also https) Related resources The release notes make scattered references to these pages, which may be interesting by themselves: - * [133]ncurses licensing - * [134]Symbol versioning in ncurses - * [135]Comments on ncurses versus slang (S-Lang) - * [136]tack - terminfo action checker - * [137]tctest - termcap library checker - * [138]Terminal Database + * ncurses licensing + * Symbol versioning in ncurses + * Comments on ncurses versus slang (S-Lang) + * tack - terminfo action checker + * tctest - termcap library checker + * Terminal Database Other resources The distribution provides a newer version of the terminfo-format - terminal description file once maintained by [139]Eric Raymond . - Unlike the older version, the termcap and terminfo data are provided - in the same file, which also provides several user-definable - extensions beyond the X/Open specification. + terminal description file once maintained by Eric Raymond . Unlike the + older version, the termcap and terminfo data are provided in the same + file, which also provides several user-definable extensions beyond the + X/Open specification. You can find lots of information on terminal-related topics not - covered in the terminfo file at [140]Richard Shuford's archive . - - * [141]Overview - * [142]Release Notes - + [143]Library improvements - o [144]New features - o [145]Other improvements - + [146]Program improvements - o [147]Utilities - o [148]Examples - + [149]Terminal database - + [150]Documentation - + [151]Interesting bug-fixes - + [152]Configuration changes - o [153]Major changes - o [154]Configuration options - + [155]Portability - * [156]Features of ncurses - * [157]Applications using ncurses - * [158]Development activities - * [159]Related resources - * [160]Other resources - -References - - 1. https://invisible-island.net/ncurses/man/captoinfo.1m.html - 2. https://invisible-island.net/ncurses/man/clear.1.html - 3. https://invisible-island.net/ncurses/man/infocmp.1m.html - 4. https://invisible-island.net/ncurses/man/tabs.1.html - 5. https://invisible-island.net/ncurses/man/tic.1m.html - 6. https://invisible-island.net/ncurses/man/toe.1m.html - 7. https://invisible-island.net/ncurses/man/tput.1.html - 8. https://invisible-island.net/ncurses/man/tset.1.html - 9. https://invisible-island.net/ncurses/ - 10. ftp://ftp.invisible-island.net/ncurses/ - 11. https://invisible-mirror.net/archives/ncurses/ - 12. ftp://ftp.gnu.org/gnu/ncurses/ - 13. https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode - 14. https://invisible-island.net/ncurses/ncurses-mapsyms.html - 15. https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps - 16. https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers - 17. https://invisible-island.net/ncurses/tack.html#portable - 18. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726 - 19. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS - 20. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization - 21. https://invisible-island.net/ncurses/man/tset.1.html - 22. https://invisible-island.net/ncurses/man/tput.1.html - 23. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization - 24. https://invisible-island.net/ncurses/man/clear.1.html - 25. https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question - 26. https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question - 27. https://invisible-island.net/ncurses/ncurses-examples.html - 28. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair - 29. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair - 30. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair - 31. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap - 32. https://invisible-island.net/dialog/ - 33. https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options - 34. https://invisible-island.net/xterm/xterm.log.html#xterm_331 - 35. https://invisible-island.net/ncurses/terminfo.src.html#toc-_A_N_S_I__S_Y_S__I_S_O_6429__E_C_M_A-48__Capabilities - 36. https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404 - 37. https://invisible-island.net/ncurses/terminfo.src.html#tic-interix - 38. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles - 39. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles - 40. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux - 41. https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles - 42. https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_ - 43. https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M - 44. https://invisible-island.net/xterm/xterm.log.html#xterm_32 - 45. https://invisible-island.net/xterm/xterm.log.html#xterm_272 - 46. https://invisible-island.net/ncurses/NEWS.html - 47. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY - 48. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY - 49. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY - 50. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY - 51. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY - 52. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY - 53. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY - 54. https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY - 55. https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY - 56. https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY - 57. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY - 58. https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY - 59. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols - 60. https://invisible-island.net/ncurses/man/curs_add_wch.3x.html - 61. https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION - 62. https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin - 63. https://invisible-island.net/ncurses/man/form_driver.3x.html - 64. https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE - 65. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes - 66. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode - 67. https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION - 68. https://invisible-island.net/ncurses/man/infocmp.1m.html - 69. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES - 70. https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE - 71. https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY - 72. https://invisible-island.net/ncurses/man/curs_memleaks.3x.html - 73. https://invisible-island.net/ncurses/man/tic.1m.html - 74. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax - 75. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics - 76. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling - 77. https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY - 78. https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases - 79. https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS - 80. https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options - 81. https://invisible-island.net/ncurses/man/tset.1.html - 82. https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES - 83. https://invisible-island.net/ncurses/man/user_caps.5.html - 84. https://invisible-island.net/ncurses/man/scr_dump.5.html - 85. https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html - 86. https://invisible-island.net/ncurses/man/curs_threads.3x.html - 87. https://invisible-island.net/ncurses/man/curs_attr.3x.html - 88. file:///ncurses/man/curs_color.3x.html - 89. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library - 90. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap - 91. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726 - 92. https://invisible-island.net/ncurses/NEWS.html#t20111030 - 93. https://invisible-island.net/ncurses/NEWS.html#t20000708 - 94. https://invisible-island.net/ncurses/ncurses-netbsd.html - 95. https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env - 96. https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate - 97. https://invisible-island.net/mawk/CHANGES.html#t20090727 - 98. https://invisible-island.net/ncurses/man/tic.1m.html - 99. https://invisible-island.net/ncurses/man/captoinfo.1m.html - 100. https://invisible-island.net/ncurses/man/tset.1.html - 101. https://invisible-island.net/ncurses/man/toe.1m.html - 102. https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading - 103. https://invisible-island.net/ncurses/ncurses.faq.html - 104. https://invisible-island.net/ncurses/ncurses-examples.html - 105. https://wiki.debian.org/Aptitude - 106. https://invisible-island.net/cdk/ - 107. https://invisible-island.net/ded/ - 108. https://invisible-island.net/dialog/ - 109. https://lynx.invisible-island.net/ - 110. http://www.mutt.org/ - 111. https://www.ncftp.com/ - 112. https://sites.google.com/a/bostic.com/keithbostic/vi - 113. https://ranger.github.io/ - 114. http://www.tin.org/ - 115. https://vifm.info/ - 116. https://alioth.debian.org/projects/minicom/ - 117. https://mosh.mit.edu/ - 118. https://invisible-island.net/ncurses/tack.html - 119. https://github.com/tmux/tmux/wiki - 120. https://invisible-island.net/vile/ - 121. https://www.gnu.org/software/emacs/ - 122. http://www.greenwoodsoftware.com/less/ - 123. https://www.gnu.org/software/screen/ - 124. https://www.vim.org/ - 125. mailto:dickey@invisible-island.net - 126. https://invisible-island.net/ncurses/ncurses-license.html - 127. mailto:bug-ncurses@gnu.org - 128. mailto:bug-ncurses-request@gnu.org - 129. ftp://ftp.invisible-island.net/ncurses/ - 130. https://invisible-mirror.net/archives/ncurses/ - 131. http://lists.gnu.org/archive/html/bug-ncurses - 132. https://lists.gnu.org/archive/html/bug-ncurses - 133. https://invisible-island.net/ncurses/ncurses-license.html - 134. https://invisible-island.net/ncurses/ncurses-mapsyms.html - 135. https://invisible-island.net/ncurses/ncurses-slang.html - 136. https://invisible-island.net/ncurses/tack.html - 137. https://invisible-island.net/ncurses/tctest.html - 138. https://invisible-island.net/ncurses/ncurses.html#download_database - 139. http://www.catb.org/~esr/terminfo/ - 140. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal - 141. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-overview - 142. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-release-notes - 143. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-library - 144. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library - 145. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-fixes-library - 146. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-programs - 147. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-utilities - 148. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-examples - 149. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-database - 150. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-documentation - 151. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-bug-fixes - 152. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-config-config - 153. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-major - 154. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-options - 155. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-portability - 156. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-features - 157. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-who-uses - 158. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-development - 159. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-this-stuff - 160. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-other-stuff + covered in the terminfo file at Richard Shuford's archive . The + collection of computer manuals at bitsavers.org has also been useful. + + * Overview + * Release Notes + + Library improvements + o New features + o Other improvements + + Program improvements + o Utilities + o Examples + + Terminal database + + Documentation + + Interesting bug-fixes + + Configuration changes + o Major changes + o Configuration options + + Portability + * Features of ncurses + * Applications using ncurses + * Development activities + * Related resources + * Other resources