1*e1865124SBaptiste Daroussin Announcing ncurses 6.2 2aae38d10SBaptiste Daroussin 3aae38d10SBaptiste DaroussinOverview 40e3d5408SPeter Wemm 50e3d5408SPeter Wemm The ncurses (new curses) library is a free software emulation of 6aae38d10SBaptiste Daroussin curses in System V Release 4.0 (SVr4), and more. It uses terminfo 7aae38d10SBaptiste Daroussin format, supports pads and color and multiple highlights and forms 8aae38d10SBaptiste Daroussin characters and function-key mapping, and has all the other SVr4-curses 9aae38d10SBaptiste Daroussin enhancements over BSD curses. SVr4 curses became the basis of X/Open 10aae38d10SBaptiste Daroussin Curses. 110e3d5408SPeter Wemm 120e3d5408SPeter Wemm In mid-June 1995, the maintainer of 4.4BSD curses declared that he 13aae38d10SBaptiste Daroussin considered 4.4BSD curses obsolete, and encouraged the keepers of unix 144a1a9510SRong-En Fan releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. 150e3d5408SPeter Wemm 16aae38d10SBaptiste Daroussin Since 1995, ncurses has been ported to many systems: 17aae38d10SBaptiste Daroussin * It is used in almost every system based on the Linux kernel (aside 18aae38d10SBaptiste Daroussin from some embedded applications). 19aae38d10SBaptiste Daroussin * It is used as the system curses library on OpenBSD, FreeBSD and 20*e1865124SBaptiste Daroussin MacOS. 21aae38d10SBaptiste Daroussin * It is used in environments such as Cygwin and MinGW. The first of 22aae38d10SBaptiste Daroussin these was EMX on OS/2 Warp. 23aae38d10SBaptiste Daroussin * It is used (though usually not as the system curses) on all of the 24aae38d10SBaptiste Daroussin vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, 25aae38d10SBaptiste Daroussin Tru64. 26aae38d10SBaptiste Daroussin * It should work readily on any ANSI/POSIX-conforming unix. 270e3d5408SPeter Wemm 280e3d5408SPeter Wemm The distribution includes the library and support utilities, including 29*e1865124SBaptiste Daroussin * captoinfo, a termcap conversion tool 30*e1865124SBaptiste Daroussin * clear, utility for clearing the screen 31*e1865124SBaptiste Daroussin * infocmp, the terminfo decompiler 32*e1865124SBaptiste Daroussin * tabs, set tabs on a terminal 33*e1865124SBaptiste Daroussin * tic, the terminfo compiler 34*e1865124SBaptiste Daroussin * toe, list (table of) terminfo entries 35*e1865124SBaptiste Daroussin * tput, utility for retrieving terminal capabilities in shell 36aae38d10SBaptiste Daroussin scripts 37*e1865124SBaptiste Daroussin * tset, to initialize the terminal 380e3d5408SPeter Wemm 39aae38d10SBaptiste Daroussin Full manual pages are provided for the library and tools. 40aae38d10SBaptiste Daroussin 41*e1865124SBaptiste Daroussin The ncurses distribution is available at ncurses' homepage: 42aae38d10SBaptiste Daroussin 43*e1865124SBaptiste Daroussin ftp://ftp.invisible-island.net/ncurses/ or 44*e1865124SBaptiste Daroussin https://invisible-mirror.net/archives/ncurses/ . 45aae38d10SBaptiste Daroussin 46aae38d10SBaptiste Daroussin It is also available via anonymous FTP at the GNU distribution site 47aae38d10SBaptiste Daroussin 48*e1865124SBaptiste Daroussin ftp://ftp.gnu.org/gnu/ncurses/ . 490e3d5408SPeter Wemm 500e3d5408SPeter WemmRelease Notes 510e3d5408SPeter Wemm 52*e1865124SBaptiste Daroussin These notes are for ncurses 6.2, released February 12, 2020. 530e3d5408SPeter Wemm 54aae38d10SBaptiste Daroussin This release is designed to be source-compatible with ncurses 5.0 55*e1865124SBaptiste Daroussin through 6.1; providing extensions to the application binary interface 56aae38d10SBaptiste Daroussin (ABI). Although the source can still be configured to support the 57*e1865124SBaptiste Daroussin ncurses 5 ABI, the reason for the release is to reflect improvements 58*e1865124SBaptiste Daroussin to the ncurses 6 ABI and the supporting utility programs. 590e3d5408SPeter Wemm 60aae38d10SBaptiste Daroussin There are, of course, numerous other improvements, listed in this 61aae38d10SBaptiste Daroussin announcement. 620e3d5408SPeter Wemm 63*e1865124SBaptiste Daroussin The most important bug-fixes/improvements dealt with user-defined 64*e1865124SBaptiste Daroussin capabilities in terminal descriptions. The release notes also mention 65*e1865124SBaptiste Daroussin some other bug-fixes, but are focused on new features and improvements 66*e1865124SBaptiste Daroussin to existing features since ncurses 6.1 release. 670e3d5408SPeter Wemm 68aae38d10SBaptiste Daroussin Library improvements 69aae38d10SBaptiste Daroussin 70aae38d10SBaptiste Daroussin New features 71aae38d10SBaptiste Daroussin 72*e1865124SBaptiste Daroussin There are several new features: 73*e1865124SBaptiste Daroussin * O_EDGE_INSERT_STAY tells the form library to optionally delay 74*e1865124SBaptiste Daroussin cursor movement on a field edge/boundary 75*e1865124SBaptiste Daroussin * O_INPUT_FIELD extension to form library allows a dynamic field to 76*e1865124SBaptiste Daroussin shrink if the new limit is smaller than the current field size. 77*e1865124SBaptiste Daroussin * added exit_curses and exit_terminfo to replace internal symbols 78*e1865124SBaptiste Daroussin for leak-checking. 79*e1865124SBaptiste Daroussin * added curses_trace, to replace trace(). 80aae38d10SBaptiste Daroussin 81aae38d10SBaptiste Daroussin Additionally, to improve performance other changes (and extensions) 82aae38d10SBaptiste Daroussin are provided in this release: 83*e1865124SBaptiste Daroussin * mouse decoding now handles shift/control/alt logic when decoding 84*e1865124SBaptiste Daroussin xterm's 1006 mode 85*e1865124SBaptiste Daroussin * ncurses now defines a limit for wgetnstr, wgetn_wstr when length 86*e1865124SBaptiste Daroussin is negative or "too large". 87*e1865124SBaptiste Daroussin * reordered loop-limit checks in winsnstr in case the string has no 88*e1865124SBaptiste Daroussin terminating null and only the number of characters is used. 89*e1865124SBaptiste Daroussin * there is now no buffer-size limit when reading the $TERMCAP 90*e1865124SBaptiste Daroussin variable. 91*e1865124SBaptiste Daroussin * the $TERMCAP variable may be interpreted as a fallback to a 92*e1865124SBaptiste Daroussin terminfo entry 93*e1865124SBaptiste Daroussin * mvcur now decides whether to use hard-tabs, using xt, tbc and hts 94*e1865124SBaptiste Daroussin as clues. 95*e1865124SBaptiste Daroussin * extended colors are improved by modifying an internal call to 96*e1865124SBaptiste Daroussin vid_puts to pass extended color pairs e.g., from tty_update.c and 97*e1865124SBaptiste Daroussin lib_mvcur.c 98*e1865124SBaptiste Daroussin * the initialization functions now avoid relying upon persistent 99*e1865124SBaptiste Daroussin data for the result from getenv 100*e1865124SBaptiste Daroussin * scrolling is improved: 101*e1865124SBaptiste Daroussin + a limit check in newline_forces_scroll handles the case where 102*e1865124SBaptiste Daroussin the row is inside scroll-margins, but not at the end. 103*e1865124SBaptiste Daroussin + improved loop limits in _nc_scroll_window handle a case where 104*e1865124SBaptiste Daroussin the scrolled data is a pad which is taller than the window. 105aae38d10SBaptiste Daroussin 106aae38d10SBaptiste Daroussin Other improvements 107aae38d10SBaptiste Daroussin 108*e1865124SBaptiste Daroussin These are revised features: 109*e1865124SBaptiste Daroussin * used "const" in some prototypes rather than NCURSES_CONST where 110*e1865124SBaptiste Daroussin X/Open Curses was updated to do this, e.g., wscanw, newterm, the 111*e1865124SBaptiste Daroussin terminfo interface. Also use "const" for consistency in the 112*e1865124SBaptiste Daroussin termcap interface, which was withdrawn by X/Open Curses in Issue 5 113*e1865124SBaptiste Daroussin (2007). As of Issue 7, X/Open Curses still lacks "const" for 114*e1865124SBaptiste Daroussin certain return values, e.g., keyname. 115*e1865124SBaptiste Daroussin * modified wbkgd and wbkgrnd to improve compatibility with SVr4 116*e1865124SBaptiste Daroussin curses, changing the way the window rendition is updated when the 117*e1865124SBaptiste Daroussin background character is modified 118*e1865124SBaptiste Daroussin * improved terminfo write/read by modifying the fourth item of the 119*e1865124SBaptiste Daroussin extended header to denote the number of valid strings in the 120*e1865124SBaptiste Daroussin extended string table (see term(5)). 121*e1865124SBaptiste Daroussin * modified the initialization checks for mouse so that the 122*e1865124SBaptiste Daroussin xterm+sm+1006 block will work with terminal descriptions not 123*e1865124SBaptiste Daroussin mentioning xterm. 124aae38d10SBaptiste Daroussin 125aae38d10SBaptiste Daroussin These were done to limit or ultimately deprecate features: 126*e1865124SBaptiste Daroussin * deprecated safe-sprintf, since the vsnprintf function, which does 127*e1865124SBaptiste Daroussin what was needed, was standardized long ago. 128*e1865124SBaptiste Daroussin * marked vwprintw and vwscanw as deprecated; recommend using 129*e1865124SBaptiste Daroussin vw_printw and vw_scanw, respectively. 130*e1865124SBaptiste Daroussin * added deprecation warnings for internal functions called by older 131*e1865124SBaptiste Daroussin versions of tack. 132*e1865124SBaptiste Daroussin * removed unused _nc_import_termtype2 function. 133aae38d10SBaptiste Daroussin 134aae38d10SBaptiste Daroussin These are improvements to existing features: 135*e1865124SBaptiste Daroussin * check parameter of set_escdelay, return ERR if negative. 136*e1865124SBaptiste Daroussin * check parameter of set_tabsize, return ERR if not greater than 137*e1865124SBaptiste Daroussin zero 138*e1865124SBaptiste Daroussin * correct a status-check in _nc_read_tic_entry() so that if reading 139*e1865124SBaptiste Daroussin a hex/b64 $TERMINFO, and the $TERM does not match, fall-through to 140*e1865124SBaptiste Daroussin the compiled-in search list. 141*e1865124SBaptiste Daroussin * amend check for repeat_char to handle a case where setlocale() was 142*e1865124SBaptiste Daroussin called after initscr 143*e1865124SBaptiste Daroussin * move macro for is_linetouched inside NCURSES_NOMACROS ifndef. 144*e1865124SBaptiste Daroussin * use _nc_copy_termtype2 rather than direct assignment in setupterm, 145*e1865124SBaptiste Daroussin in case it is called repeatedly using fallback terminfo 146*e1865124SBaptiste Daroussin descriptions 147*e1865124SBaptiste Daroussin * improve workaround for Solaris wcwidth versus line-drawing 148*e1865124SBaptiste Daroussin characters 149*e1865124SBaptiste Daroussin * add checks in repair_subwindows to keep the current position and 150*e1865124SBaptiste Daroussin scroll-margins inside the resized subwindow. 151*e1865124SBaptiste Daroussin * correct a buffer-limit in write_entry.c for systems that use 152*e1865124SBaptiste Daroussin caseless filenames. 153*e1865124SBaptiste Daroussin * improved build-time utility report_offsets: 154*e1865124SBaptiste Daroussin + add categories, e.g., "w" for wide-character, "t" for threads 155*e1865124SBaptiste Daroussin to make the report more readable. Reorganized the structures 156*e1865124SBaptiste Daroussin reported to make the categories more apparent. 157*e1865124SBaptiste Daroussin + add NCURSES_GLOBALS and NCURSES_PRESCREEN to report to show 158*e1865124SBaptiste Daroussin how similar the different libtinfo configurations are. 159*e1865124SBaptiste Daroussin * modified some header files to ensure that those include necessary 160*e1865124SBaptiste Daroussin files except for the previously-documented cases 161*e1865124SBaptiste Daroussin * added some traces in initialization to show whether a fallback 162*e1865124SBaptiste Daroussin entry is used. 163*e1865124SBaptiste Daroussin * made minor optimization to reduce calls to _nc_reserve_pairs 164aae38d10SBaptiste Daroussin 165aae38d10SBaptiste Daroussin These are corrections to existing features: 166*e1865124SBaptiste Daroussin * fix a special case in PutAttrChar where a cell is marked as 167*e1865124SBaptiste Daroussin alternate-character set, but the terminal does not actually 168*e1865124SBaptiste Daroussin support the given graphic character. This would happen in an older 169*e1865124SBaptiste Daroussin terminal such as vt52, which lacks most line-drawing capability. 170*e1865124SBaptiste Daroussin * corrected flag for "seq" method of db 1.8.5 interface, needed by 171*e1865124SBaptiste Daroussin toe on some of the BSDs. 172*e1865124SBaptiste Daroussin * modify comparison in make_hash.c to correct a special case in 173*e1865124SBaptiste Daroussin collision handling for Caps-hpux11 174*e1865124SBaptiste Daroussin * add extended_slk_color{,_sp} symbols to the appropriate 175*e1865124SBaptiste Daroussin package/*.{map,sym} files 176*e1865124SBaptiste Daroussin * modify lib_setup to avoid calling pthread_self() without first 177*e1865124SBaptiste Daroussin verifying that the address is valid, i.e., for weak symbols 178*e1865124SBaptiste Daroussin * add a couple of broken-linker symbols to the list of versioned 179*e1865124SBaptiste Daroussin symbols to help with link-time optimization versus weak symbols. 180aae38d10SBaptiste Daroussin 181aae38d10SBaptiste Daroussin Program improvements 182aae38d10SBaptiste Daroussin 183*e1865124SBaptiste Daroussin Several improvements were made to the utility programs: 184aae38d10SBaptiste Daroussin 185*e1865124SBaptiste Daroussin clear 186aae38d10SBaptiste Daroussin 187*e1865124SBaptiste Daroussin + improved logic for clearing with the E3 extension, in case 188*e1865124SBaptiste Daroussin the terminal scrolls content onto its saved-lines before 189*e1865124SBaptiste Daroussin actually clearing the display, by clearing the saved-lines 190*e1865124SBaptiste Daroussin after clearing the display 191aae38d10SBaptiste Daroussin 192*e1865124SBaptiste Daroussin infocmp 193aae38d10SBaptiste Daroussin 194*e1865124SBaptiste Daroussin + omit filtering of "OTxx" names which are used for obsolete 195*e1865124SBaptiste Daroussin capabilities, when the output is sorted by long-names. This 196*e1865124SBaptiste Daroussin change helps when making a table of the short/long capability 197*e1865124SBaptiste Daroussin names. 198aae38d10SBaptiste Daroussin 199*e1865124SBaptiste Daroussin tic 200aae38d10SBaptiste Daroussin 201*e1865124SBaptiste Daroussin + added check for consistent alternate character set 202*e1865124SBaptiste Daroussin capabilities. 203*e1865124SBaptiste Daroussin + added check for paired indn/rin. 204*e1865124SBaptiste Daroussin + added check for terminals with parm_dch vs parm_ich. 205*e1865124SBaptiste Daroussin + added check for the case where setf/setb are given using 206*e1865124SBaptiste Daroussin different strings, but provide identical results to 207*e1865124SBaptiste Daroussin setaf/setab. 208*e1865124SBaptiste Daroussin + corrected check for ich1. 209*e1865124SBaptiste Daroussin + changed a too-large terminal entry from a fatal error to a 210*e1865124SBaptiste Daroussin warning. 211*e1865124SBaptiste Daroussin 212*e1865124SBaptiste Daroussin toe 213*e1865124SBaptiste Daroussin 214*e1865124SBaptiste Daroussin + ignores any hex/b64 $TERMINFO value in the list of terminfo 215*e1865124SBaptiste Daroussin databases. 216*e1865124SBaptiste Daroussin 217*e1865124SBaptiste Daroussin tset 218*e1865124SBaptiste Daroussin 219*e1865124SBaptiste Daroussin + replace check in reset command for obsolete "pt" capability 220*e1865124SBaptiste Daroussin using tbc and hts capabilities as clues 221*e1865124SBaptiste Daroussin + modify reset to allow for tabstops at intervals other than 8. 222*e1865124SBaptiste Daroussin + change reset's behavior for margins to simply clear 223*e1865124SBaptiste Daroussin soft-margins if possible, rather than clearing and then 224*e1865124SBaptiste Daroussin setting them according to the terminal's width. 225*e1865124SBaptiste Daroussin 226*e1865124SBaptiste Daroussin tput 227*e1865124SBaptiste Daroussin 228*e1865124SBaptiste Daroussin + add "x" to getopt string so that "tput -x clear" works. 229*e1865124SBaptiste Daroussin 230*e1865124SBaptiste Daroussin Several changes were made to the generated ncurses*config scripts and 231*e1865124SBaptiste Daroussin the analogous ".pc" files to reduce differences between the 232*e1865124SBaptiste Daroussin configurations they report: 233*e1865124SBaptiste Daroussin * modified the ncurse*-config and pc-files to more closely match for 234*e1865124SBaptiste Daroussin the -I and -l options. 235*e1865124SBaptiste Daroussin * filtered out linker-specs from the --libs report. 236*e1865124SBaptiste Daroussin * amended the ncurses*-config and pc-files to take into account the 237*e1865124SBaptiste Daroussin rpath hack which differed between those files. 238*e1865124SBaptiste Daroussin * modified generated ncurses*config and ncurses.pc, ncursesw.pc, 239*e1865124SBaptiste Daroussin etc., to list helper libraries such as gpm for static linking. 240aae38d10SBaptiste Daroussin 241aae38d10SBaptiste Daroussin Examples 242aae38d10SBaptiste Daroussin 243*e1865124SBaptiste Daroussin Along with the library and utilities, improvements were made to the 244*e1865124SBaptiste Daroussin ncurses-examples. Most of this activity aimed at improving the 245*e1865124SBaptiste Daroussin test-packages. A few changes are more generally useful, e.g., for the 246*e1865124SBaptiste Daroussin main ncurses test-program, and for analyzing traces using the 247*e1865124SBaptiste Daroussin tracemunch script: 248*e1865124SBaptiste Daroussin * improve recovery from error when reading command-character in 249*e1865124SBaptiste Daroussin test/ncurses.c, showing the relevant error message and not exiting 250*e1865124SBaptiste Daroussin on EINTR. 251*e1865124SBaptiste Daroussin * improve tracemunch, by keeping track of TERMINAL* values, and if 252*e1865124SBaptiste Daroussin tracing was first turned on after initialization, attempt to show 253*e1865124SBaptiste Daroussin distinct screen, window and terminal names anyway. 254*e1865124SBaptiste Daroussin * modify tracemunch to accept filename parameters in addition to use 255*e1865124SBaptiste Daroussin as a pipe/filter. 256*e1865124SBaptiste Daroussin * update tracemunch to work with perl 5.26.2, which changed the 257*e1865124SBaptiste Daroussin rules for escaping regular expressions. 258*e1865124SBaptiste Daroussin * add some checks in tracemunch for undefined variables. 259*e1865124SBaptiste Daroussin * modify TurnOn/TurnOff macros (in lib_vidattr.c and lib_vid_attr.c) 260*e1865124SBaptiste Daroussin to avoid expansion of "CUR" in trace. 261aae38d10SBaptiste Daroussin 262*e1865124SBaptiste Daroussin There are other new demo/test programs and reusable examples: 263aae38d10SBaptiste Daroussin 264*e1865124SBaptiste Daroussin color_content 265*e1865124SBaptiste Daroussin Demonstrate the color_content and extended_color_content 266*e1865124SBaptiste Daroussin functions. 267aae38d10SBaptiste Daroussin 268*e1865124SBaptiste Daroussin demo_tabs 269*e1865124SBaptiste Daroussin A simple demo of tabs in curses. 270aae38d10SBaptiste Daroussin 271*e1865124SBaptiste Daroussin dump_window 272*e1865124SBaptiste Daroussin A portable curses screen-dump, used to compare ncurses screen 273*e1865124SBaptiste Daroussin contents with Solaris. 274*e1865124SBaptiste Daroussin 275*e1865124SBaptiste Daroussin pair_content 276*e1865124SBaptiste Daroussin Demonstrate the pair_content and extended_pair_content 277*e1865124SBaptiste Daroussin functions. 278*e1865124SBaptiste Daroussin 279*e1865124SBaptiste Daroussin report_hashing 280*e1865124SBaptiste Daroussin Check hash-tables used for terminfo and termcap names. 281*e1865124SBaptiste Daroussin 282*e1865124SBaptiste Daroussin parse_rgb 283*e1865124SBaptiste Daroussin Sample implementation of the ncurses RGB extension from 284*e1865124SBaptiste Daroussin user_caps.5, used in picsmap and savescreen programs. 285aae38d10SBaptiste Daroussin 286aae38d10SBaptiste Daroussin A variety of improvements were made to existing programs, both new 287aae38d10SBaptiste Daroussin features as well as options added to make the set of programs more 288aae38d10SBaptiste Daroussin consistent. 289*e1865124SBaptiste Daroussin * add "-l" option to test/background, to dump screen contents in a 290*e1865124SBaptiste Daroussin form that lets different curses implementations be compared. 291*e1865124SBaptiste Daroussin * add "@" command to test/ncurses F-test, to allow rapid jump to 292*e1865124SBaptiste Daroussin different character pages. 293*e1865124SBaptiste Daroussin * added enum, regex examples to test/demo_forms 294*e1865124SBaptiste Daroussin * amend Scaled256() macro in test/picsmap.c to cover the full range 295*e1865124SBaptiste Daroussin 0..1000 296*e1865124SBaptiste Daroussin * corrected pathname used in Ada95 sample programs for explain.txt, 297*e1865124SBaptiste Daroussin to work with test-packages, and used an awk script to split the 298*e1865124SBaptiste Daroussin resulting pathname when it would be too long for a single line. 299*e1865124SBaptiste Daroussin * ignore interrupted system-call in test/ncurses's command-line, 300*e1865124SBaptiste Daroussin e.g., if the terminal were resized. 301*e1865124SBaptiste Daroussin * improved ifdef's for TABSIZE variable, to help with AIX/HPUX 302*e1865124SBaptiste Daroussin ports. 303aae38d10SBaptiste Daroussin 304aae38d10SBaptiste Daroussin Terminal database 305aae38d10SBaptiste Daroussin 306aae38d10SBaptiste Daroussin There are several new terminal descriptions: 307aae38d10SBaptiste Daroussin 308*e1865124SBaptiste Daroussin alacritty, domterm, kitty, mintty, mintty-direct, ms-terminal, 309*e1865124SBaptiste Daroussin n7900, nsterm-build309, nsterm-direct, screen5, ti703, ti707, 310*e1865124SBaptiste Daroussin ti703-w, ti707-w vscode, vscode-direct, xterm-mono, xterm.js 311aae38d10SBaptiste Daroussin 312aae38d10SBaptiste Daroussin There are many changes to existing terminal descriptions. Some were 313aae38d10SBaptiste Daroussin updates to several descriptions: 314*e1865124SBaptiste Daroussin * use ansi+rep in a dozen places 315*e1865124SBaptiste Daroussin * add rs1 to konsole, mlterm 316*e1865124SBaptiste Daroussin * improve several flash capabilities with trailing mandatory delays 317*e1865124SBaptiste Daroussin * drop ich1 from rxvt-basic, Eterm and mlterm to improve 318*e1865124SBaptiste Daroussin compatibility with old non-curses programs 319*e1865124SBaptiste Daroussin * add/use xterm+keypad in xterm-new 320*e1865124SBaptiste Daroussin * use xterm+sl-twm for consistency, nine places 321*e1865124SBaptiste Daroussin * improve xm example in xterm+x11mouse and xterm+sm_1006. 322aae38d10SBaptiste Daroussin 323aae38d10SBaptiste Daroussin while others affected specific descriptions. These were retested, to 324*e1865124SBaptiste Daroussin take into account changes by their developers: 325aae38d10SBaptiste Daroussin 326*e1865124SBaptiste Daroussin terminator, st 327aae38d10SBaptiste Daroussin 328*e1865124SBaptiste Daroussin while these are specific fixes based on reviewing documentation, user 329*e1865124SBaptiste Daroussin reports, or warnings from tic: 330aae38d10SBaptiste Daroussin 331*e1865124SBaptiste Daroussin adds200: 332aae38d10SBaptiste Daroussin 333*e1865124SBaptiste Daroussin + fix typo 334aae38d10SBaptiste Daroussin 335*e1865124SBaptiste Daroussin gnome-256color 336aae38d10SBaptiste Daroussin 337*e1865124SBaptiste Daroussin + base entry on "gnome", not "vte", for consistency 338aae38d10SBaptiste Daroussin 339*e1865124SBaptiste Daroussin interix 340aae38d10SBaptiste Daroussin 341*e1865124SBaptiste Daroussin + trim unnecessary setf/setb 342aae38d10SBaptiste Daroussin 343*e1865124SBaptiste Daroussin linux-16color 344aae38d10SBaptiste Daroussin 345*e1865124SBaptiste Daroussin + accommodate Linux console driver incompatibility introduced 346*e1865124SBaptiste Daroussin in early 2018 347aae38d10SBaptiste Daroussin 348*e1865124SBaptiste Daroussin nsterm-256color: 349aae38d10SBaptiste Daroussin 350*e1865124SBaptiste Daroussin + add nsterm-build309 to replace nsterm-256color, assigning the 351*e1865124SBaptiste Daroussin latter as an alias of nsterm, to make mouse work with 352*e1865124SBaptiste Daroussin nsterm-256color 353aae38d10SBaptiste Daroussin 354*e1865124SBaptiste Daroussin regent40: 355aae38d10SBaptiste Daroussin 356*e1865124SBaptiste Daroussin + renumber function-keys to match manual 357aae38d10SBaptiste Daroussin 358*e1865124SBaptiste Daroussin regent60: 359aae38d10SBaptiste Daroussin 360*e1865124SBaptiste Daroussin + add cd (clr_eos) 361*e1865124SBaptiste Daroussin + corrected acsc 362*e1865124SBaptiste Daroussin + add shifted function-keys 363aae38d10SBaptiste Daroussin 364*e1865124SBaptiste Daroussin tvi950: 365aae38d10SBaptiste Daroussin 366*e1865124SBaptiste Daroussin + added function-key definitions to agree with Televideo 950 367*e1865124SBaptiste Daroussin manual 368*e1865124SBaptiste Daroussin + corrected acsc 369*e1865124SBaptiste Daroussin + remove bogus kf0 370*e1865124SBaptiste Daroussin + add bel 371aae38d10SBaptiste Daroussin 372*e1865124SBaptiste Daroussin tvi955: 373aae38d10SBaptiste Daroussin 374*e1865124SBaptiste Daroussin + fix typo 375*e1865124SBaptiste Daroussin 376*e1865124SBaptiste Daroussin vi200: 377*e1865124SBaptiste Daroussin 378*e1865124SBaptiste Daroussin + add acsc string, including right/down-arrow 379*e1865124SBaptiste Daroussin 380*e1865124SBaptiste Daroussin wy50: 381*e1865124SBaptiste Daroussin 382*e1865124SBaptiste Daroussin + corrected acsc 383*e1865124SBaptiste Daroussin 384*e1865124SBaptiste Daroussin wy50 and wy60: 385*e1865124SBaptiste Daroussin 386*e1865124SBaptiste Daroussin + add shifted function-keys as kF1 to kF16 387*e1865124SBaptiste Daroussin 388*e1865124SBaptiste Daroussin xterm+x11hilite: 389*e1865124SBaptiste Daroussin 390*e1865124SBaptiste Daroussin + eliminate unused p5 parameter. 391aae38d10SBaptiste Daroussin 392aae38d10SBaptiste Daroussin A few entries use extensions (user-defined terminal capabilities): 393*e1865124SBaptiste Daroussin * use xterm+sm+1006 (aka "SGR 1006 mouse") for konsole-base and 394*e1865124SBaptiste Daroussin putty 395*e1865124SBaptiste Daroussin * add Smol/Rmol user-defined capability to tmux and vte-2018 396*e1865124SBaptiste Daroussin * add Smulx user-defined capability to tmux, vte-2018 397aae38d10SBaptiste Daroussin 398aae38d10SBaptiste Daroussin Documentation 399aae38d10SBaptiste Daroussin 400aae38d10SBaptiste Daroussin As usual, this release 401aae38d10SBaptiste Daroussin * improves documentation by describing new features, 402aae38d10SBaptiste Daroussin * attempts to improve the description of features which users have 403aae38d10SBaptiste Daroussin found confusing 404aae38d10SBaptiste Daroussin * fills in overlooked descriptions of features which were described 405*e1865124SBaptiste Daroussin in the NEWS file but treated sketchily in manual pages. 406aae38d10SBaptiste Daroussin 407aae38d10SBaptiste Daroussin In addition to providing background information to explain these 408aae38d10SBaptiste Daroussin features and show how they evolved, there are corrections, 409aae38d10SBaptiste Daroussin clarifications, etc.: 410*e1865124SBaptiste Daroussin * Corrections: 411*e1865124SBaptiste Daroussin + correct error-returns listed in manual pages for a few form 412*e1865124SBaptiste Daroussin functions 413*e1865124SBaptiste Daroussin + corrected prototypes in several manpages using script to 414*e1865124SBaptiste Daroussin extract those in compilable form. 415*e1865124SBaptiste Daroussin + fix typo in term.5, improve explanation of format 416*e1865124SBaptiste Daroussin * Clarify in manual pages that vwprintw and vwscanw are obsolete. 417*e1865124SBaptiste Daroussin They have not been part of X/Open Curses since 2007. 418*e1865124SBaptiste Daroussin * New/improved history and portability sections: 419*e1865124SBaptiste Daroussin + curs_addch.3x gives some background for ACS symbols. 420*e1865124SBaptiste Daroussin + curs_getcchar.3x explains a difference between ncurses and 421*e1865124SBaptiste Daroussin X/Open Curses. 422*e1865124SBaptiste Daroussin + curs_getstr.3x gives historical/portability background for 423*e1865124SBaptiste Daroussin the length parameter of wgetnstr. 424*e1865124SBaptiste Daroussin + curs_slk.3x lists a few differences between SVr4 curses and 425*e1865124SBaptiste Daroussin X/Open Curses for soft-keys. 426*e1865124SBaptiste Daroussin + curs_terminfo.3x explains that the initial implementation of 427*e1865124SBaptiste Daroussin terminfo in SVr2 was mostly replaced by other developers in 428*e1865124SBaptiste Daroussin SVr3. 429*e1865124SBaptiste Daroussin + infocmp.1 explains that the initial version of terminfo had 430*e1865124SBaptiste Daroussin no tool for decompiling descriptions. That came later, with 431*e1865124SBaptiste Daroussin SVr3, with a different developer. 432*e1865124SBaptiste Daroussin + tabs.1 tells more than you wanted to know about the tool. 433*e1865124SBaptiste Daroussin + tic.1 explains that the initial version of terminfo had a 434*e1865124SBaptiste Daroussin rudimentary tool (based on termcap) for compiling entries. 435*e1865124SBaptiste Daroussin The tool used with Unix was developed by others for SVr3. 436*e1865124SBaptiste Daroussin + toe.1 explains the origin of this tool. 437*e1865124SBaptiste Daroussin * Improvements for user_caps.5: 438*e1865124SBaptiste Daroussin + mention meml, memu and box1 439*e1865124SBaptiste Daroussin + expanded description of XM 440*e1865124SBaptiste Daroussin + add a clarification regarding the RGB capability. 441*e1865124SBaptiste Daroussin + mention user_caps.5 in the tic and infocmp manual pages. 442*e1865124SBaptiste Daroussin * Other improvements: 443*e1865124SBaptiste Daroussin + curs_add_wch.3x adds note about Unicode terminology for the 444*e1865124SBaptiste Daroussin line-drawing characters. 445*e1865124SBaptiste Daroussin + curs_color.3x improves discussion of error returns and 446*e1865124SBaptiste Daroussin extensions. 447*e1865124SBaptiste Daroussin + curs_mouse.3x explains how the kmous and XM capabilities are 448*e1865124SBaptiste Daroussin used for xterm-mouse input. 449*e1865124SBaptiste Daroussin + curs_refresh.3x improves documentation regarding the virtual 450*e1865124SBaptiste Daroussin and physical screens. 451*e1865124SBaptiste Daroussin + curs_util.3x mentions a difference between SVr4 and X/Open 452*e1865124SBaptiste Daroussin Curses for unctrl.h 453*e1865124SBaptiste Daroussin + curs_variables.3x improves description of the init_tabs 454*e1865124SBaptiste Daroussin capability and TABSIZE variable. 455*e1865124SBaptiste Daroussin + ncurses.3x improves documentation regarding feature-test 456*e1865124SBaptiste Daroussin macros in curses.h 457*e1865124SBaptiste Daroussin + resizeterm.3x about top-level windows which touch the 458*e1865124SBaptiste Daroussin screen's borders. 459*e1865124SBaptiste Daroussin + tput.1 clarifies how tput determines the terminal size. 460aae38d10SBaptiste Daroussin 461*e1865124SBaptiste Daroussin There are no new manual pages (all of the manual page updates are to 462*e1865124SBaptiste Daroussin existing pages). 463aae38d10SBaptiste Daroussin 464aae38d10SBaptiste Daroussin Some of the improvements are more subtle, relating to the way the 465*e1865124SBaptiste Daroussin information is presented. For instance, the generated terminfo.5 file 466*e1865124SBaptiste Daroussin uses a different table layout, allowing it to use space on wide 467*e1865124SBaptiste Daroussin terminals more effectively. 468aae38d10SBaptiste Daroussin 469aae38d10SBaptiste Daroussin Interesting bug-fixes 470aae38d10SBaptiste Daroussin 471*e1865124SBaptiste Daroussin While there were many bugs fixed during development of ncurses 6.2, 472*e1865124SBaptiste Daroussin only a few (the reason for this release) were both important and 473*e1865124SBaptiste Daroussin interesting. Most of the bug-fixes were for local issues which did not 474*e1865124SBaptiste Daroussin affect compatibility across releases. Since those are detailed in the 475*e1865124SBaptiste Daroussin NEWS file no elaboration is needed here. 476*e1865124SBaptiste Daroussin 477*e1865124SBaptiste Daroussin The interesting bugs were in tic/infocmp's handling of user-defined 478*e1865124SBaptiste Daroussin capabilities. These were not recent bugs. Initially it was a simple 479*e1865124SBaptiste Daroussin problem: 480*e1865124SBaptiste Daroussin * The user-defined capabilities can be any type (boolean, number or 481*e1865124SBaptiste Daroussin string), but once given a type all uses of the name must conform 482*e1865124SBaptiste Daroussin to that type--unless some special support for a particular 483*e1865124SBaptiste Daroussin multi-typed name is built into ncurses. 484*e1865124SBaptiste Daroussin * One of simpleterm's contributors copied some definitions for using 485*e1865124SBaptiste Daroussin tmux's user-defined capabilities in late in 2016. 486*e1865124SBaptiste Daroussin 487*e1865124SBaptiste Daroussindiff --git a/st.info b/st.info 488*e1865124SBaptiste Daroussin@@ -185,7 +185,10 @@ st| simpleterm, 489*e1865124SBaptiste Daroussin tsl=\E]0;, 490*e1865124SBaptiste Daroussin xenl, 491*e1865124SBaptiste Daroussin vpa=\E[%i%p1%dd, 492*e1865124SBaptiste Daroussin- 493*e1865124SBaptiste Daroussin+# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1) 494*e1865124SBaptiste Daroussin+ Se, 495*e1865124SBaptiste Daroussin+ Ss, 496*e1865124SBaptiste Daroussin+ Tc, 497*e1865124SBaptiste Daroussin 498*e1865124SBaptiste Daroussin st-256color| simpleterm with 256 colors, 499*e1865124SBaptiste Daroussin use=st, 500*e1865124SBaptiste Daroussin 501*e1865124SBaptiste Daroussin * Later, in (referring to a version from mid-2017), a user asked to 502*e1865124SBaptiste Daroussin have it updated in ncurses. 503*e1865124SBaptiste Daroussin * However, it had an error from the change in late 2016. The 504*e1865124SBaptiste Daroussin terminal description made what tmux expected to be string actually 505*e1865124SBaptiste Daroussin a boolean. 506*e1865124SBaptiste Daroussin Over the years, there were problems with each of simpleterm's 507*e1865124SBaptiste Daroussin terminal descriptions. I repaired those, and usually dealt with 508*e1865124SBaptiste Daroussin the problem. 509*e1865124SBaptiste Daroussin * The difference in this case was that when compiling the terminal 510*e1865124SBaptiste Daroussin database, tic may have in memory the definitions for more than one 511*e1865124SBaptiste Daroussin terminal description (so that it can resolve "use=" clauses). 512*e1865124SBaptiste Daroussin Seeing two different types for the same name, in certain 513*e1865124SBaptiste Daroussin situations it would incorrectly merge the symbol tables for the 514*e1865124SBaptiste Daroussin two terminal descriptions. 515*e1865124SBaptiste Daroussin * On simpleterm's side, their bug was finally fixed in late 2019, 516*e1865124SBaptiste Daroussin three years after the bug was created. 517*e1865124SBaptiste Daroussin 518*e1865124SBaptiste Daroussin For ncurses, the elapsed time to fix this bug was less than three 519*e1865124SBaptiste Daroussin years. Someone reported a problem with the terminal description a few 520*e1865124SBaptiste Daroussin weeks after releasing ncurses 6.1 (in tmux #1264), and the terminal 521*e1865124SBaptiste Daroussin description was updated that week (ncurses patch 20180224): 522*e1865124SBaptiste Daroussin 523*e1865124SBaptiste Daroussin20180224 524*e1865124SBaptiste Daroussin + modify _nc_resolve_uses2() to detect incompatible types when merging 525*e1865124SBaptiste Daroussin a "use=" clause of extended capabilities. The problem was seen in a 526*e1865124SBaptiste Daroussin defective terminfo integrated from simpleterm sources in 20171111, 527*e1865124SBaptiste Daroussin compounded by repair in 20180121. 528*e1865124SBaptiste Daroussin + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD 529*e1865124SBaptiste Daroussin 530*e1865124SBaptiste Daroussin The larger part of that change added a check to prevent a simple merge 531*e1865124SBaptiste Daroussin of terminal descriptions where the same user-defined name was used 532*e1865124SBaptiste Daroussin with different types. But it raised some questions: 533*e1865124SBaptiste Daroussin * Was there a reliable way to manage terminal descriptions which 534*e1865124SBaptiste Daroussin used the same extended name in different ways? 535*e1865124SBaptiste Daroussin * Should ncurses provide a registry of well-known extended names, 536*e1865124SBaptiste Daroussin with their types? 537*e1865124SBaptiste Daroussin 538*e1865124SBaptiste Daroussin Since the correction to terminfo.src could have been readily adopted 539*e1865124SBaptiste Daroussin by packagers, there was nothing more to be done from ncurses' 540*e1865124SBaptiste Daroussin standpoint on that part. But improving ncurses to prevent issues like 541*e1865124SBaptiste Daroussin that is the reason for making a release. 542*e1865124SBaptiste Daroussin 543*e1865124SBaptiste Daroussin Nothing more (constructive) was mentioned with regard to simpleterm. 544*e1865124SBaptiste Daroussin But a few problems were found in the handling of user-defined 545*e1865124SBaptiste Daroussin capabilities: 546*e1865124SBaptiste Daroussin * Forward-references to user-defined capabilities in a "use=" clause 547*e1865124SBaptiste Daroussin did not allocate new data for each use. In tic, successive 548*e1865124SBaptiste Daroussin compilation of terminal entries could add user-defined 549*e1865124SBaptiste Daroussin capabilities to the wrong terminal entry. 550*e1865124SBaptiste Daroussin This was not noticed before, since xterm's terminal descriptions 551*e1865124SBaptiste Daroussin were the main users of the feature, and almost all of the uses of 552*e1865124SBaptiste Daroussin the building-blocks which contained user-defined capabilities were 553*e1865124SBaptiste Daroussin backward-references. 554*e1865124SBaptiste Daroussin * There is one (documented) case where ncurses 6.1 supports a 555*e1865124SBaptiste Daroussin user-defined capability that could be any type (i.e., "RGB"). The 556*e1865124SBaptiste Daroussin check added in February 2018 to guard against mismatches did not 557*e1865124SBaptiste Daroussin handle all of the combinations needed. 558*e1865124SBaptiste Daroussin 559*e1865124SBaptiste Daroussin Both of these issues dated from the original implementation of 560*e1865124SBaptiste Daroussin user-defined capabilities. Fixing them does not change the terminal 561*e1865124SBaptiste Daroussin database, but a older tic without the fixes will not be able to handle 562*e1865124SBaptiste Daroussin terminfo sources which rely upon those fixes. Starting in June 2019, 563*e1865124SBaptiste Daroussin the download link for the terminfo source file was capped at that 564*e1865124SBaptiste Daroussin date. The development sources have an up-to-date copy of the file, for 565*e1865124SBaptiste Daroussin people with a legitimate need for it. 566*e1865124SBaptiste Daroussin 567*e1865124SBaptiste Daroussin The "-c" (check) option of tic is not very useful if it cannot offer 568*e1865124SBaptiste Daroussin advice on parameters needed for user-defined capabilities. The various 569*e1865124SBaptiste Daroussin Caps files were reorganized to reduce redundancy, and in the common 570*e1865124SBaptiste Daroussin portion (Caps-ncurses), a registry of user-defined capabilities is 571*e1865124SBaptiste Daroussin provided for use by tic. While users can still define their own custom 572*e1865124SBaptiste Daroussin capabilities, tic will not offer any advice when their parameters do 573*e1865124SBaptiste Daroussin not match. 574*e1865124SBaptiste Daroussin 575*e1865124SBaptiste Daroussin In ncurses 6.2, tic makes a special check to allow any type for RGB, 576*e1865124SBaptiste Daroussin but its being able to do this relies upon fixes made in the ncurses 577*e1865124SBaptiste Daroussin library in mid-2019. 578aae38d10SBaptiste Daroussin 579aae38d10SBaptiste Daroussin Configuration changes 580aae38d10SBaptiste Daroussin 581aae38d10SBaptiste Daroussin Major changes 582aae38d10SBaptiste Daroussin 583*e1865124SBaptiste Daroussin There are no major changes. Several new options were added to ease 584*e1865124SBaptiste Daroussin integration of packages with systems using different versions of GNAT 585*e1865124SBaptiste Daroussin and ncurses. Also, improvements were made to configure checks. 586aae38d10SBaptiste Daroussin 587aae38d10SBaptiste Daroussin Configuration options 588aae38d10SBaptiste Daroussin 589*e1865124SBaptiste Daroussin There are a few new/modified configure options: 590aae38d10SBaptiste Daroussin 591*e1865124SBaptiste Daroussin --with-config-suffix 592*e1865124SBaptiste Daroussin helps work around a filename conflict with Debian packages 593*e1865124SBaptiste Daroussin versus test-packages. 594*e1865124SBaptiste Daroussin 595*e1865124SBaptiste Daroussin --with-ada-libname 596*e1865124SBaptiste Daroussin allows one to rename the "AdaCurses" library (at least one 597*e1865124SBaptiste Daroussin packager prefers a lowercase name). 598*e1865124SBaptiste Daroussin 599*e1865124SBaptiste Daroussin --with-fallbacks 600*e1865124SBaptiste Daroussin now ensures there is a value, and adds the fallback information 601*e1865124SBaptiste Daroussin to top-level Makefile summary. 602*e1865124SBaptiste Daroussin 603*e1865124SBaptiste Daroussin --with-pcre2 604*e1865124SBaptiste Daroussin check for pcre-posix library to help with MinGW port. 605*e1865124SBaptiste Daroussin 606*e1865124SBaptiste Daroussin --with-tic-path and 607*e1865124SBaptiste Daroussin 608*e1865124SBaptiste Daroussin --with-infocmp-path 609*e1865124SBaptiste Daroussin help work around problems building fallback source using 610*e1865124SBaptiste Daroussin pre-6.0 tic/infocmp. 611*e1865124SBaptiste Daroussin 612*e1865124SBaptiste Daroussin --with-versioned-syms 613*e1865124SBaptiste Daroussin option value can now be a relative pathname. 614aae38d10SBaptiste Daroussin 615aae38d10SBaptiste Daroussin Portability 616aae38d10SBaptiste Daroussin 617aae38d10SBaptiste Daroussin Many of the portability changes are implemented via the configure 618aae38d10SBaptiste Daroussin script: 619*e1865124SBaptiste Daroussin * ignore $TERMINFO as a default value in configure script if it came 620*e1865124SBaptiste Daroussin from the infocmp -Q option. 621*e1865124SBaptiste Daroussin * distinguish gcc from icc and clang when the --enable-warnings 622*e1865124SBaptiste Daroussin option is not used, to avoid unnecessary warnings about 623*e1865124SBaptiste Daroussin unrecognized inline options 624*e1865124SBaptiste Daroussin * consistently prepend new libraries as they are found during 625*e1865124SBaptiste Daroussin configuration, rather than relying upon the linker to resolve 626*e1865124SBaptiste Daroussin order dependencies of libraries. 627*e1865124SBaptiste Daroussin * modified configure scripts to reduce relinking/ranlib during 628*e1865124SBaptiste Daroussin library install : 629*e1865124SBaptiste Daroussin + use "install -p" when available, to avoid need for ranlib of 630*e1865124SBaptiste Daroussin static libraries. 631*e1865124SBaptiste Daroussin + scripts which use "--disable-relink;" add a 1-second sleep to 632*e1865124SBaptiste Daroussin work around tools which use whole-second timestamps, e.g., in 633*e1865124SBaptiste Daroussin utime rather than the actual file system resolution. 634*e1865124SBaptiste Daroussin * add configure check for getenv to work around implementation shown 635*e1865124SBaptiste Daroussin in Emscripten which overwrites the previous return value on each 636*e1865124SBaptiste Daroussin call. 637*e1865124SBaptiste Daroussin Use that to optionally suppress START_TRACE macro, whose call to 638*e1865124SBaptiste Daroussin getenv may not work properly 639*e1865124SBaptiste Daroussin * change target configure level for _XOPEN_SOURCE to 600 to address 640*e1865124SBaptiste Daroussin use of vsscanf and setenv. 641*e1865124SBaptiste Daroussin * reduce use of _GNU_SOURCE for current glibc where _DEFAULT_SOURCE 642*e1865124SBaptiste Daroussin combines with _XOPEN_SOURCE 643*e1865124SBaptiste Daroussin Allow for Cygwin's newlib when checking for the _DEFAULT_SOURCE 644*e1865124SBaptiste Daroussin symbol. 645*e1865124SBaptiste Daroussin MidnightBSD is now checked for the _XOPEN_SOURCE-related 646*e1865124SBaptiste Daroussin definitions. 647*e1865124SBaptiste Daroussin * If the check for va_copy or __va_copy fails, 648*e1865124SBaptiste Daroussin + configure now tries copying the pointers for va_list, or as 649*e1865124SBaptiste Daroussin an array. 650*e1865124SBaptiste Daroussin + alternatively, it checks for __builtin_va_copy(), which could 651*e1865124SBaptiste Daroussin be used with AIX xlc in c89 mode. 652*e1865124SBaptiste Daroussin * several changes to support a port to Ultrix 3.1: 653*e1865124SBaptiste Daroussin + check if "b" binary feature of fopen works 654*e1865124SBaptiste Daroussin + check for missing feature of locale.h 655*e1865124SBaptiste Daroussin + add fallback for strstr() in test-programs 656*e1865124SBaptiste Daroussin + add fallback for STDOUT_FILENO in test-programs 657*e1865124SBaptiste Daroussin * The test/configure script (used for ncurses-examples) is improved: 658*e1865124SBaptiste Daroussin + work around non-ncurses termcap.h file, e.g., in Slackware. 659*e1865124SBaptiste Daroussin + check for TABSIZE variable. 660*e1865124SBaptiste Daroussin + checks for the X11/Intrinsic.h header, accommodate recent 661*e1865124SBaptiste Daroussin MacOS changes which largely emptied /usr/include. 662*e1865124SBaptiste Daroussin 663*e1865124SBaptiste Daroussin Here are some of the other portability fixes: 664*e1865124SBaptiste Daroussin * added dummy "check" rule in top-level and test-Makefile to 665*e1865124SBaptiste Daroussin simplify building test-packages for ArchLinux. 666*e1865124SBaptiste Daroussin * dropped library-dependency on psapi for MinGW port, since 667*e1865124SBaptiste Daroussin win_driver.c defines PSAPI_VERSION to 2, making it use 668*e1865124SBaptiste Daroussin GetProcessImageFileName from kernel32.dll 669*e1865124SBaptiste Daroussin * made build-fixes for configuration using --program-suffix with 670*e1865124SBaptiste Daroussin Ada95, noticed with MacOS but applicable to other platforms 671*e1865124SBaptiste Daroussin without libpanelw, etc. 672*e1865124SBaptiste Daroussin * modified ncurses/Makefile.in to fix a case where Debian/testing 673*e1865124SBaptiste Daroussin changes to the ld --as-needed configuration broke ncurses-examples 674*e1865124SBaptiste Daroussin test packages. 675*e1865124SBaptiste Daroussin * used _WIN32/_WIN64 in preference to __MINGW32__/__MINGW64__ 676*e1865124SBaptiste Daroussin symbols to simplify building with Microsoft Visual C++, since the 677*e1865124SBaptiste Daroussin former are defined in both compiler configurations. 678aae38d10SBaptiste Daroussin _________________________________________________________________ 679aae38d10SBaptiste Daroussin 680aae38d10SBaptiste DaroussinFeatures of ncurses 681aae38d10SBaptiste Daroussin 682aae38d10SBaptiste Daroussin The ncurses package is fully upward-compatible with SVr4 (System V 683aae38d10SBaptiste Daroussin Release 4) curses: 684aae38d10SBaptiste Daroussin * All of the SVr4 calls have been implemented (and are documented). 685aae38d10SBaptiste Daroussin * ncurses supports all of the for SVr4 curses features including 686aae38d10SBaptiste Daroussin keyboard mapping, color, forms-drawing with ACS characters, and 687aae38d10SBaptiste Daroussin automatic recognition of keypad and function keys. 688aae38d10SBaptiste Daroussin * ncurses provides these SVr4 add-on libraries (not part of X/Open 689aae38d10SBaptiste Daroussin Curses): 690aae38d10SBaptiste Daroussin + the panels library, supporting a stack of windows with 691aae38d10SBaptiste Daroussin backing store. 692aae38d10SBaptiste Daroussin + the menus library, supporting a uniform but flexible 693aae38d10SBaptiste Daroussin interface for menu programming. 694aae38d10SBaptiste Daroussin + the form library, supporting data collection through 695aae38d10SBaptiste Daroussin on-screen forms. 696aae38d10SBaptiste Daroussin * ncurses's terminal database is fully compatible with that used by 697aae38d10SBaptiste Daroussin SVr4 curses. 698aae38d10SBaptiste Daroussin + ncurses supports user-defined capabilities which it can see, 699aae38d10SBaptiste Daroussin but which are hidden from SVr4 curses applications using the 700aae38d10SBaptiste Daroussin same terminal database. 701aae38d10SBaptiste Daroussin + It can be optionally configured to match the format used in 702aae38d10SBaptiste Daroussin related systems such as AIX and Tru64. 703aae38d10SBaptiste Daroussin + Alternatively, ncurses can be configured to use hashed 704aae38d10SBaptiste Daroussin databases rather than the directory of files used by SVr4 705aae38d10SBaptiste Daroussin curses. 706aae38d10SBaptiste Daroussin * The ncurses utilities have options to allow you to filter terminfo 707aae38d10SBaptiste Daroussin entries for use with less capable curses/terminfo versions such as 708aae38d10SBaptiste Daroussin the HP/UX and AIX ports. 7090e3d5408SPeter Wemm 7100e3d5408SPeter Wemm The ncurses package also has many useful extensions over SVr4: 7110e3d5408SPeter Wemm * The API is 8-bit clean and base-level conformant with the X/OPEN 7120e3d5408SPeter Wemm curses specification, XSI curses (that is, it implements all BASE 7134a1a9510SRong-En Fan level features, and most EXTENDED features). It includes many 7144a1a9510SRong-En Fan function calls not supported under SVr4 curses (but portability of 7154a1a9510SRong-En Fan all calls is documented so you can use the SVr4 subset only). 7161759abf3SPeter Wemm * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost 7170e3d5408SPeter Wemm corner of the screen if your terminal has an insert-character 7180e3d5408SPeter Wemm capability. 7190e3d5408SPeter Wemm * Ada95 and C++ bindings. 7204a1a9510SRong-En Fan * Support for mouse event reporting with X Window xterm and FreeBSD 7214a1a9510SRong-En Fan and OS/2 console windows. 7220e3d5408SPeter Wemm * Extended mouse support via Alessandro Rubini's gpm package. 72306bfebdeSXin LI * The function wresize allows you to resize windows, preserving 7240e3d5408SPeter Wemm their data. 72506bfebdeSXin LI * The function use_default_colors allows you to use the terminal's 7260e3d5408SPeter Wemm default colors for the default color pair, achieving the effect of 7270e3d5408SPeter Wemm transparent colors. 72806bfebdeSXin LI * The functions keyok and define_key allow you to better control the 72906bfebdeSXin LI use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by 73006bfebdeSXin LI defining more than one control sequence to map to a given key 73106bfebdeSXin LI code. 732aae38d10SBaptiste Daroussin * Support for 256-color terminals, such as modern xterm. 7334a1a9510SRong-En Fan * Support for 16-color terminals, such as aixterm and modern xterm. 7340e3d5408SPeter Wemm * Better cursor-movement optimization. The package now features a 7350e3d5408SPeter Wemm cursor-local-movement computation more efficient than either BSD's 7360e3d5408SPeter Wemm or System V's. 7370e3d5408SPeter Wemm * Super hardware scrolling support. The screen-update code 7380e3d5408SPeter Wemm incorporates a novel, simple, and cheap algorithm that enables it 7390e3d5408SPeter Wemm to make optimal use of hardware scrolling, line-insertion, and 7400e3d5408SPeter Wemm line-deletion for screen-line movements. This algorithm is more 74106bfebdeSXin LI powerful than the 4.4BSD curses quickch routine. 7420e3d5408SPeter Wemm * Real support for terminals with the magic-cookie glitch. The 7430e3d5408SPeter Wemm screen-update code will refrain from drawing a highlight if the 7440e3d5408SPeter Wemm magic- cookie unattributed spaces required just before the 7450e3d5408SPeter Wemm beginning and after the end would step on a non-space character. 7460e3d5408SPeter Wemm It will automatically shift highlight boundaries when doing so 7470e3d5408SPeter Wemm would make it possible to draw the highlight without changing the 7480e3d5408SPeter Wemm visual appearance of the screen. 7490e3d5408SPeter Wemm * It is possible to generate the library with a list of pre-loaded 7500e3d5408SPeter Wemm fallback entries linked to it so that it can serve those terminal 7510e3d5408SPeter Wemm types even when no terminfo tree or termcap file is accessible 7520e3d5408SPeter Wemm (this may be useful for support of screen-oriented programs that 7530e3d5408SPeter Wemm must run in single-user mode). 754*e1865124SBaptiste Daroussin * The tic/captoinfo utility provided with ncurses has the ability to 755*e1865124SBaptiste Daroussin translate many termcaps from the XENIX, IBM and AT&T extension 756*e1865124SBaptiste Daroussin sets. 757*e1865124SBaptiste Daroussin * A BSD-like tset utility is provided. 7580e3d5408SPeter Wemm * The ncurses library and utilities will automatically read terminfo 7590e3d5408SPeter Wemm entries from $HOME/.terminfo if it exists, and compile to that 7600e3d5408SPeter Wemm directory if it exists and the user has no write access to the 7610e3d5408SPeter Wemm system directory. This feature makes it easier for users to have 7620e3d5408SPeter Wemm personal terminfo entries without giving up access to the system 7630e3d5408SPeter Wemm terminfo directory. 7640e3d5408SPeter Wemm * You may specify a path of directories to search for compiled 7650e3d5408SPeter Wemm descriptions with the environment variable TERMINFO_DIRS (this 7660e3d5408SPeter Wemm generalizes the feature provided by TERMINFO under stock System 7670e3d5408SPeter Wemm V.) 7680e3d5408SPeter Wemm * In terminfo source files, use capabilities may refer not just to 7690e3d5408SPeter Wemm other entries in the same source file (as in System V) but also to 7700e3d5408SPeter Wemm compiled entries in either the system terminfo directory or the 7710e3d5408SPeter Wemm user's $HOME/.terminfo directory. 772*e1865124SBaptiste Daroussin * The table-of-entries utility toe makes it easy for users to see 773*e1865124SBaptiste Daroussin exactly what terminal types are available on the system. 7740e3d5408SPeter Wemm * The library meets the XSI requirement that every macro entry point 7750e3d5408SPeter Wemm have a corresponding function which may be linked (and will be 7760e3d5408SPeter Wemm prototype-checked) if the macro definition is disabled with 7770e3d5408SPeter Wemm #undef. 778*e1865124SBaptiste Daroussin * Extensive documentation is provided (see the Additional Reading 779*e1865124SBaptiste Daroussin section of the ncurses FAQ for online documentation). 7800e3d5408SPeter Wemm 781aae38d10SBaptiste DaroussinApplications using ncurses 7820e3d5408SPeter Wemm 783aae38d10SBaptiste Daroussin The ncurses distribution includes a selection of test programs 784aae38d10SBaptiste Daroussin (including a few games). These are available separately as 785*e1865124SBaptiste Daroussin ncurses-examples 7860e3d5408SPeter Wemm 787aae38d10SBaptiste Daroussin The ncurses library has been tested with a wide variety of 788aae38d10SBaptiste Daroussin applications including: 789aae38d10SBaptiste Daroussin 790aae38d10SBaptiste Daroussin aptitude 791aae38d10SBaptiste Daroussin FrontEnd to Apt, the debian package manager 792aae38d10SBaptiste Daroussin 793*e1865124SBaptiste Daroussin https://wiki.debian.org/Aptitude 7940e3d5408SPeter Wemm 7951759abf3SPeter Wemm cdk 79615589c42SPeter Wemm Curses Development Kit 797aae38d10SBaptiste Daroussin 798*e1865124SBaptiste Daroussin https://invisible-island.net/cdk/ 7991759abf3SPeter Wemm 8000e3d5408SPeter Wemm ded 80115589c42SPeter Wemm directory-editor 802aae38d10SBaptiste Daroussin 803*e1865124SBaptiste Daroussin https://invisible-island.net/ded/ 8040e3d5408SPeter Wemm 8050e3d5408SPeter Wemm dialog 8060e3d5408SPeter Wemm the underlying application used in Slackware's setup, and the 807aae38d10SBaptiste Daroussin basis for similar install/configure applications on many 808aae38d10SBaptiste Daroussin systems. 809aae38d10SBaptiste Daroussin 810*e1865124SBaptiste Daroussin https://invisible-island.net/dialog/ 8110e3d5408SPeter Wemm 8121759abf3SPeter Wemm lynx 813aae38d10SBaptiste Daroussin the text WWW browser 8140e3d5408SPeter Wemm 815*e1865124SBaptiste Daroussin https://lynx.invisible-island.net/ 8160e3d5408SPeter Wemm 8171759abf3SPeter Wemm mutt 8180e3d5408SPeter Wemm mail utility 819aae38d10SBaptiste Daroussin 820*e1865124SBaptiste Daroussin http://www.mutt.org/ 8210e3d5408SPeter Wemm 8221759abf3SPeter Wemm ncftp 8230e3d5408SPeter Wemm file-transfer utility 824aae38d10SBaptiste Daroussin 825*e1865124SBaptiste Daroussin https://www.ncftp.com/ 8260e3d5408SPeter Wemm 8270e3d5408SPeter Wemm nvi 828aae38d10SBaptiste Daroussin New vi uses ncurses. 8294a1a9510SRong-En Fan 830*e1865124SBaptiste Daroussin https://sites.google.com/a/bostic.com/keithbostic/vi 831aae38d10SBaptiste Daroussin 832aae38d10SBaptiste Daroussin ranger 833aae38d10SBaptiste Daroussin A console file manager with VI key bindings in Python. 834aae38d10SBaptiste Daroussin 835*e1865124SBaptiste Daroussin https://ranger.github.io/ 8360e3d5408SPeter Wemm 8371759abf3SPeter Wemm tin 838aae38d10SBaptiste Daroussin newsreader, supporting color, MIME 839aae38d10SBaptiste Daroussin 840*e1865124SBaptiste Daroussin http://www.tin.org/ 841aae38d10SBaptiste Daroussin 842aae38d10SBaptiste Daroussin vifm 843aae38d10SBaptiste Daroussin File manager with vi like keybindings 844aae38d10SBaptiste Daroussin 845*e1865124SBaptiste Daroussin https://vifm.info/ 8460e3d5408SPeter Wemm 8470e3d5408SPeter Wemm as well as some that use ncurses for the terminfo support alone: 8480e3d5408SPeter Wemm 8491759abf3SPeter Wemm minicom 850aae38d10SBaptiste Daroussin terminal emulator for serial modem connections 851aae38d10SBaptiste Daroussin 852*e1865124SBaptiste Daroussin https://alioth.debian.org/projects/minicom/ 853aae38d10SBaptiste Daroussin 854aae38d10SBaptiste Daroussin mosh 855aae38d10SBaptiste Daroussin a replacement for ssh. 856aae38d10SBaptiste Daroussin 857*e1865124SBaptiste Daroussin https://mosh.mit.edu/ 858aae38d10SBaptiste Daroussin 859aae38d10SBaptiste Daroussin tack 860aae38d10SBaptiste Daroussin terminfo action checker 861aae38d10SBaptiste Daroussin 862*e1865124SBaptiste Daroussin https://invisible-island.net/ncurses/tack.html 863aae38d10SBaptiste Daroussin 864aae38d10SBaptiste Daroussin tmux 865aae38d10SBaptiste Daroussin terminal multiplexor 866aae38d10SBaptiste Daroussin 867*e1865124SBaptiste Daroussin https://github.com/tmux/tmux/wiki 8680e3d5408SPeter Wemm 8690e3d5408SPeter Wemm vile 870aae38d10SBaptiste Daroussin vi-like-emacs may be built to use the terminfo, termcap or 871aae38d10SBaptiste Daroussin curses interfaces. 8720e3d5408SPeter Wemm 873*e1865124SBaptiste Daroussin https://invisible-island.net/vile/ 8740e3d5408SPeter Wemm 875aae38d10SBaptiste Daroussin and finally, those which use only the termcap interface: 8760e3d5408SPeter Wemm 877aae38d10SBaptiste Daroussin emacs 878aae38d10SBaptiste Daroussin text editor 879aae38d10SBaptiste Daroussin 880*e1865124SBaptiste Daroussin https://www.gnu.org/software/emacs/ 881aae38d10SBaptiste Daroussin 882aae38d10SBaptiste Daroussin less 883aae38d10SBaptiste Daroussin The most commonly used pager (a program that displays text 884aae38d10SBaptiste Daroussin files). 885aae38d10SBaptiste Daroussin 886*e1865124SBaptiste Daroussin http://www.greenwoodsoftware.com/less/ 887aae38d10SBaptiste Daroussin 888aae38d10SBaptiste Daroussin screen 889aae38d10SBaptiste Daroussin terminal multiplexor 890aae38d10SBaptiste Daroussin 891*e1865124SBaptiste Daroussin https://www.gnu.org/software/screen/ 892aae38d10SBaptiste Daroussin 893aae38d10SBaptiste Daroussin vim 894aae38d10SBaptiste Daroussin text editor 895aae38d10SBaptiste Daroussin 896*e1865124SBaptiste Daroussin https://www.vim.org/ 897aae38d10SBaptiste Daroussin 898aae38d10SBaptiste DaroussinDevelopment activities 899aae38d10SBaptiste Daroussin 900aae38d10SBaptiste Daroussin Zeyd Ben-Halim started ncurses from a previous package pcurses, 901aae38d10SBaptiste Daroussin written by Pavel Curtis. Eric S. Raymond continued development. 902*e1865124SBaptiste Daroussin Juergen Pfeifer wrote most of the form and menu libraries. 903*e1865124SBaptiste Daroussin 904*e1865124SBaptiste Daroussin Ongoing development work is done by Thomas E. Dickey. Thomas E. Dickey 905*e1865124SBaptiste Daroussin has acted as the maintainer for the Free Software Foundation, which 906*e1865124SBaptiste Daroussin holds a copyright on ncurses for releases 4.2 through 6.1. Following 907*e1865124SBaptiste Daroussin the release of ncurses 6.1, effective as of release 6.2, copyright for 908*e1865124SBaptiste Daroussin ncurses reverted to Thomas E. Dickey (see the ncurses FAQ for 909*e1865124SBaptiste Daroussin additional information). 910aae38d10SBaptiste Daroussin 911aae38d10SBaptiste Daroussin Contact the current maintainers at 912aae38d10SBaptiste Daroussin 913*e1865124SBaptiste Daroussin bug-ncurses@gnu.org 9140e3d5408SPeter Wemm 9150e3d5408SPeter Wemm To join the ncurses mailing list, please write email to 916aae38d10SBaptiste Daroussin 917*e1865124SBaptiste Daroussin bug-ncurses-request@gnu.org 918aae38d10SBaptiste Daroussin 919aae38d10SBaptiste Daroussin containing the line: 920aae38d10SBaptiste Daroussin 9210e3d5408SPeter Wemm subscribe <name>@<host.domain> 9220e3d5408SPeter Wemm 9230e3d5408SPeter Wemm This list is open to anyone interested in helping with the development 9240e3d5408SPeter Wemm and testing of this package. 9250e3d5408SPeter Wemm 926*e1865124SBaptiste Daroussin Beta versions of ncurses are made available at 9270e3d5408SPeter Wemm 928*e1865124SBaptiste Daroussin ftp://ftp.invisible-island.net/ncurses/current/ and 929*e1865124SBaptiste Daroussin https://invisible-mirror.net/archives/ncurses/current/ . 930*e1865124SBaptiste Daroussin 931*e1865124SBaptiste Daroussin Patches to the current release are made available at 932*e1865124SBaptiste Daroussin 933*e1865124SBaptiste Daroussin ftp://ftp.invisible-island.net/ncurses/6.1/ and 934*e1865124SBaptiste Daroussin https://invisible-mirror.net/archives/ncurses/6.1/ . 9350e3d5408SPeter Wemm 936aae38d10SBaptiste Daroussin There is an archive of the mailing list here: 9370e3d5408SPeter Wemm 938*e1865124SBaptiste Daroussin http://lists.gnu.org/archive/html/bug-ncurses (also https) 9390e3d5408SPeter Wemm 940aae38d10SBaptiste DaroussinRelated resources 941aae38d10SBaptiste Daroussin 942aae38d10SBaptiste Daroussin The release notes make scattered references to these pages, which may 943aae38d10SBaptiste Daroussin be interesting by themselves: 944*e1865124SBaptiste Daroussin * ncurses licensing 945*e1865124SBaptiste Daroussin * Symbol versioning in ncurses 946*e1865124SBaptiste Daroussin * Comments on ncurses versus slang (S-Lang) 947*e1865124SBaptiste Daroussin * tack - terminfo action checker 948*e1865124SBaptiste Daroussin * tctest - termcap library checker 949*e1865124SBaptiste Daroussin * Terminal Database 950aae38d10SBaptiste Daroussin 951aae38d10SBaptiste DaroussinOther resources 9520e3d5408SPeter Wemm 9534a1a9510SRong-En Fan The distribution provides a newer version of the terminfo-format 954*e1865124SBaptiste Daroussin terminal description file once maintained by Eric Raymond . Unlike the 955*e1865124SBaptiste Daroussin older version, the termcap and terminfo data are provided in the same 956*e1865124SBaptiste Daroussin file, which also provides several user-definable extensions beyond the 957*e1865124SBaptiste Daroussin X/Open specification. 9580e3d5408SPeter Wemm 9590e3d5408SPeter Wemm You can find lots of information on terminal-related topics not 960*e1865124SBaptiste Daroussin covered in the terminfo file at Richard Shuford's archive . The 961*e1865124SBaptiste Daroussin collection of computer manuals at bitsavers.org has also been useful. 962aae38d10SBaptiste Daroussin 963*e1865124SBaptiste Daroussin * Overview 964*e1865124SBaptiste Daroussin * Release Notes 965*e1865124SBaptiste Daroussin + Library improvements 966*e1865124SBaptiste Daroussin o New features 967*e1865124SBaptiste Daroussin o Other improvements 968*e1865124SBaptiste Daroussin + Program improvements 969*e1865124SBaptiste Daroussin o Utilities 970*e1865124SBaptiste Daroussin o Examples 971*e1865124SBaptiste Daroussin + Terminal database 972*e1865124SBaptiste Daroussin + Documentation 973*e1865124SBaptiste Daroussin + Interesting bug-fixes 974*e1865124SBaptiste Daroussin + Configuration changes 975*e1865124SBaptiste Daroussin o Major changes 976*e1865124SBaptiste Daroussin o Configuration options 977*e1865124SBaptiste Daroussin + Portability 978*e1865124SBaptiste Daroussin * Features of ncurses 979*e1865124SBaptiste Daroussin * Applications using ncurses 980*e1865124SBaptiste Daroussin * Development activities 981*e1865124SBaptiste Daroussin * Related resources 982*e1865124SBaptiste Daroussin * Other resources 983