Ncurses Changelog

What's new in Ncurses 5.7

Dec 2, 2008
  • Interface changes:
  • generate linkable stubs for some macros: getattrs
  • New features and improvements:
  • library:
  • new flavor of the ncurses library provides rudimentary support for POSIX threads. Several functions are reentrant, but most require either a window-level or screen-level mutex. (This is API-compatible, but not ABI-compatible with the normal library).
  • add NCURSES_OPAQUE symbol to curses.h, will use to make structs opaque in selected configurations.
  • add NCURSES_EXT_FUNCS and NCURSES_EXT_COLORS symbols to curses.h to make it simpler to tell if the extended functions and/or colors are declared.
  • add wresize to C++ binding
  • eliminate fixed-buffer vsprintf calls in C++ binding.
  • add several functions to C++ binding which wrap C functions that pass a WINDOW* parameter.
  • adapt mouse-handling code from menu library in form-library
  • improve tracing for form library, showing created forms, fields, etc.
  • make $NCURSES_NO_PADDING feature work for termcap interface .
  • add check to trace-file open, if the given name is a directory, add ".log" to the name and try again.
  • several new manpages: curs_legacy.3x, curs_memleaks.3x, curs_opaque.3x and curs_threads.3x
  • programs:
  • modified three test-programs to demonstrate the threading support in this version: ditto, rain, worm.
  • several new test-programs: demo_panels, dots_mvcur, inch_wide, inchs, key_name, key_names, savescreen, savescreen.sh test_arrays, test_get_wstr, test_getstr, test_instr, test_inwstr and test_opaque.
  • add adacurses-config to the Ada95 install.
  • modify tic -f option to format spaces as s to prevent them from being lost when that is read back in unformatted strings.
  • The tack program is now distributed separately from ncurses.
  • terminal database:
  • added entries:
  • Eterm-256color, Eterm-88color and rxvt-88color
  • aterm
  • konsole-256color
  • mrxvt
  • screen.mlterm
  • screen.rxvt
  • teraterm4.59 is now the primary primary teraterm entry, renamed original to teraterm2.3
  • 9term terminal
  • Newbury Data entries
  • updated/improved entries:
  • gnome to version 2.22.3
  • h19, z100
  • konsole to version 1.6.6
  • mlterm, mlterm+pcfkeys
  • xterm, and building-blocks for function-keys to xterm patch #230.
  • Major bug fixes:
  • add logic to tic for cancelling strings in user-defined capabilities (this is needed for current konsole terminfo entry).
  • modify mk-1st.awk so the generated makefile rules for linking or installing shared libraries do not first remove the library, in case it is in use, e.g., libncurses.so by /bin/sh.
  • correct check for notimeout in wgetch.
  • fix a sign-extension bug in infocmp's repair_acsc function.
  • change winnstr to stop at the end of the line.
  • make Ada95 demo_panels example work.
  • fix for adding a non-spacing character at the beginning of a line.
  • fill in extended-color pair to make colors work for wide-characters using extended-colors.
  • improve refresh of window on top of multi-column characters, taking into account split characters on left/right window boundaries.
  • modify win_wchnstr to ensure that only a base cell is returned for each multi-column character.
  • improve waddch and winsch handling of EILSEQ from mbrtowc by using unctrl to display illegal bytes rather than trying to append further bytes to make up a valid sequence.
  • restore curs_set state after endwin/refresh
  • modify keyname to use "^X" form only if meta has been called, or if keyname is called without initializing curses, e.g., via initscr or newterm.
  • modify unctrl to check codes in 128-255 range versus isprint. If they are not printable, and locale was set, use a "M-" or "~" sequence.
  • improve resizeterm by moving ripped-off lines, and repainting the soft-keys.
  • modify form library to accept control characters such as newline in set_field_buffer, which is compatible with Solaris.
  • use NCURSES_MOUSE_MASK in definition of BUTTON_RELEASE, etc., to make those work properly with the --enable-ext-mouse configuration
  • correct some functions in Ada95 binding which were using return value from C where none was returned.
  • reviewed/fixed issues reported by Coverity and Klocwork tools.
  • Portability:
  • configure/build issues:
  • build-fixes for LynxOS
  • modify shared-library rules to allow FreeBSD 3.x to use rpath.
  • build-fix for FreeBSD "contemporary" TTY interface.
  • build-fixes for AIX with libtool.
  • build-fixes for Darwin and libtool.
  • modify BeOS-specific ifdef's to build on Haiku.
  • corrected gcc options for building shared libraries on Solaris and IRIX64.
  • change shared-library configuration for OpenBSD, make rpath work.
  • build-fixes for using libutf8, e.g., on OpenBSD 3.7
  • add "-e" option in ncurses/Makefile.in when generating source-files to force earlier exit if the build environment fails unexpectedly.
  • add support for shared libraries for QNX.
  • change delimiter in MKlib_gen.sh from '%' to '@', to avoid substitution by IBM xlc to '#' as part of its extensions to digraphs.
  • library:
  • rewrite wrapper for wcrtomb, making it work on Solaris. This is used in the form library to determine the length of the buffer needed by field_buffer.
  • add/use configure script macro CF_SIG_ATOMIC_T, use the corresponding type for data manipulated by signal handlers.
  • set locale in misc/ncurses-config.in since it uses a range
  • disable GPM mouse support when $TERM does not happen to contain "linux", since Gpm_Open no longer limits its assertion to terminals that it might handle, e.g., within "screen" in xterm.
  • reset mouse file-descriptor when unloading GPM library.
  • test programs:
  • update test programs to build/work with various UNIX curses for comparisons.

New in Ncurses 5.6 (Oct 1, 2008)

  • generate linkable stubs for some macros: getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx, getpary, getpary, and (for libncursesw) wgetbkgrnd
  • support hashed databases for the terminal descriptions. This uses the Berkeley database, has been tested for several versions on different platforms.
  • add use_legacy_coding() function to support lynx's font-switching feature.
  • add extension nofilter(), to cancel a prior filter() call.
  • add/install a package config script, e.g., ncurses5-config or ncursesw5-config, according to configuration options.
  • provide ifdef for NCURSES_NOMACROS which suppresses most macro definitions from curses.h, i.e., where a macro is defined to override a function to improve performance.
  • make ifdef's consistent in curses.h for the extended colors so the header file can be used for the normal curses library. The header file installed for extended colors is a variation of the wide-character configuration.
  • improve tgetstr() by making the return value point into the user's buffer, if provided.
  • add ifdef's allowing ncurses to be built with tparm() using either varargs (the existing status), or using a fixed-parameter list (to match X/Open).
  • widen the test for xterm kmous a little to allow for other strings than "E[M", e.g., for xterm-sco functionality in xterm.
  • modify wgetnstr() to return KEY_RESIZE if a sigwinch occurs.
  • move prototypes for wide-character trace functions from curses.tail to curses.wide to avoid accidental reference to those if _XOPEN_SOURCE_EXTENDED is defined without ensuring that is included.
  • change the way shared libraries (other than libtool) are installed. Rather than copying the build-tree's libraries, link the shared objects into the install directory. This makes the --with-rpath option work except with $(DESTDIR).
  • several improvements for rendering in hpterm. These are only available if the library is configured using --enable-xmc-glitch.
  • Add NCURSES_NO_HARD_TABS and NCURSES_NO_MAGIC_COOKIE environment variables to allow runtime suppression of the related hard-tabs and xmc-glitch features.
  • programs:
  • add new test programs: chgat.c, demo_altkeys.c, echochar.c, foldkeys.c, movewindow.c, redraw.c, (noting that existing test programs also were modified to test additional features).
  • modify tack to test extended capability function-key strings.
  • modify toe to access termcap data, e.g., via cgetent() functions, or as a text file if those are not available.
  • improve infocmp/tic -f option formatting.
  • add toe -a option, to show all databases. This uses new private interfaces in the ncurses library for iterating through the list of databases.
  • modify MKfallback.sh to use tic -x when constructing fallback tables to allow extended capabilities to be retrieved from a fallback entry.
  • terminal database
  • add terminfo entries for xfce terminal (xfce) and multi gnome terminal (mgt)
  • add nsterm-16color entry
  • updated mlterm terminfo entry
  • add kon, kon2 and jfbterm terminfo entry
  • remove invis capability from klone+sgr, mainly used by linux entry, since it does not really do this
  • add ka2, kb1, kb3, kc2 to vt220-keypad as an extension
  • add shifted up/down arrow codes to xterm-new as kind/kri strings
  • add hpterm-color terminfo entry
  • add 256color variants of terminfo entries for programs which are reported to implement this feature
  • correct order of use-clauses in rxvt-basic entry which made codes for f1-f4 vt100-style rather than vt220-style.
  • correct a typo in configure --with-bool option for the case where --without-cxx is used.
  • move assignment from environment variable ESCDELAY from initscr() down to newterm() so the environment variable affects timeouts for terminals opened with newterm() as well.
  • modify werase to clear multicolumn characters that extend into a derived window.
  • modify wchgat() to mark updated cells as changed so a refresh will repaint those cells.
  • correct logic in wadd_wch() and wecho_wch(), which did not guard against passing the multi-column attribute into a call on waddch(), e.g., using data returned by win_wch()
  • fix redrawing of windows other than stdscr using wredrawln() by touching the corresponding rows in curscr.
  • reduce memory leaks in repeated calls to tgetent() by remembering the last TERMINAL* value allocated to hold the corresponding data and freeing that if the tgetent() result buffer is the same as the previous call.
  • modify read_termtype() so the term_names data is always allocated as part of the str_table, a better fix for a memory leak.
  • fix wins_nwstr(), which did not handle single-column non-8bit codes.
  • modify wbkgrnd() to avoid clearing the A_CHARTEXT attribute bits since those record the state of multicolumn characters.
  • improve SIGWINCH handling by postponing its effect during newterm(), etc., when allocating screens.
  • remove 970913 feature for copying subwindows as they are moved in mvwin().
  • add checks in waddchnstr() and wadd_wchnstr() to stop copying when a null character is found.
  • add some checks to ensure current position is within scrolling region before scrolling on a new line.
  • add a workaround to ACS mapping to allow applications such as test/blue.c to use the "PC ROM" characters by masking them with A_ALTCHARSET. This worked up til 5.5, but was lost in the revision of legacy coding.
  • with-hashed-db: Use Berkeley hashed database for storing terminfo data rather than storing each compiled entry in a separate binary file within a directory tree.
  • without-dlsym: Do not use dlsym() to load GPM dynamically.
  • with-valgrind: Simplify building for testing with valgrind.
  • enable-wgetch-events: Compile with experimental wgetch-events code.
  • enable-signed-char: Store booleans in "signed char" rather than "char".
  • disable-largefile: make the option work both ways.
  • with-gpm: The option now accepts a parameter, i.e., the name of the dynamic GPM library to load via dlopen()
  • disable-symlinks: The option now allows one to disable symlink() in tic even when link() does not work.
  • remove special case for Darwin in CF_XOPEN_SOURCE configure macro.
  • add configure check to ensure that SIGWINCH is defined on platforms such as OS X which exclude that when _XOPEN_SOURCE, etc., are defined
  • use ld's -search_paths_first option on Darwin to work around odd search rules on that platform.
  • improve ifdef's for _POSIX_VDISABLE in tset to work with Mac OS X.
  • modify configure script to ensure that if the C compiler is used rather than the loader in making shared libraries, the $(CFLAGS) variable is also used.
  • use ${CC} rather than ${LD} in shared library rules for IRIX64, Solaris to help ensure that initialization sections are provided for extra linkage requirements, e.g., of C++ applications.
  • improve some shared-library configure scripting for Linux, FreeBSD and NetBSD to make --with-shlib-version work.
  • split up dependency of names.c and codes.c in ncurses/Makefile to work with parallel make.
  • modify MKlib_gen.sh to change preprocessor-expanded _Bool back to bool.
  • modify progs/Makefile.in to make tput init work properly with cygwin, i.e., do not pass a .exe in the reference string used in check_aliases.
  • ignore wide-acs line-drawing characters that wcwidth() claims are not one-column. This is a workaround for Solaris' broken locale support.
  • reduce name-pollution in term.h by removing #define's for HAVE_xxx symbols.
  • fix #ifdef in c++/internal.h for QNX 6.1
  • modify test/configure script to allow building test programs with PDCurses/X11.
  • modified test programs to allow some to work with NetBSD curses. Several do not because NetBSD curses implements a subset of X/Open curses, and also lacks much of SVr4 additions. But it is enough for comparison.
  • improved test/configure to build test/ncurses on HPUX 11 using the vendor curses.
  • change configure script to produce test/Makefile from data file.