Log message:
ncurses: update to 6.4.
The most important bug-fixes/improvements dealt with robustness
issues. The release notes also mention some other bug-fixes, but are
focused on new features and improvements to existing features since
ncurses 6.3 release.
Library improvements
New features
There are no new features in this release.
Other improvements
These are improvements to existing features:
* modify delscreen to more effectively delete all windows on the
given screen.
* modify wnoutrefresh to call pnoutrefresh if its parameter is a
pad, rather than treating it as an error, and modify new_panel to
permit its window-parameter to be a pad
* modify curses_trace() to show the trace-mask as symbols, e.g.,
TRACE_ORDINARY, DEBUG_LEVEL(3).
* improve checks for valid mouse events when an intermediate mouse
state is not part of the mousemask specified by the caller
* allow extended-color number in opts parameter of wattr_on.
* improve _tracecchar_t2 formatting of base+combining character.
* trim out some unwanted linker options from ncurses*config and .pc
files seen in Fedora 36+.
* improve shell-scripts with shellcheck
* improve use of "trap" in shell scripts, using a script.
* modify make-tar.sh scripts to make timestamps more predictable.
These are corrections to existing features:
* modify misc/gen-pkgconfig.in to allow for the case where the
library directory does not yet exist, since this is processed
before doing an install
* set trailing null on string passed from winsnstr to wins_nwstr.
* modify waddch_literal to allow for double-width base character
when merging a combining character
Program improvements
Several improvements were made to the utility programs:
infocmp
+ rewrite canonical_name function of infocmp to ensure buffer
size
+ improve readability of long parameterized expressions with
the infocmp "-f" option by allowing split before a \
"%p"
marker.
+ modify verbose-option of infocmp, tic, toe to enable
debug-tracing if that is configured.
tabs
limit tab-stop values to max-columns
tic
add consistency check in tic for u6/u7/u8/u9 and NQ
capabilities.
tput
corrected use of original tty-modes in init/reset subcommands
Examples
Along with the library and utilities, improvements were made to the
ncurses-examples. Most of this activity aimed at improving the
test-packages:
* add minimal -h (usage) and -V (version) getopt logic to all
ncurses-examples programs.
* fix an error in "@" command in test/ncurses.c F-menu
* add curses_trace to ifdef's for START_TRACE in test/test.priv.h
* improve pthread-configuration for test/worm.c
* add setlocale call to several test-programs.
* workaround in test/picsmap.c for use of floating point for rgb
values by ImageMagick 6.9.11, which appears to use the wrong upper
limit.
* use static libraries for AdaCurses test-package for Mageia, since
no gprbuild package is available.
* install Ada95 sample programs in libexecdir, adding a wrapper
script to invoke those.
* install ncurses-examples programs in libexecdir, adding a wrapper
script to invoke those.
There are other new demo/test programs and reusable examples:
test/combine
demonstrate combining characters
test/test_delwin
demonstrate deleting a window
test/test_mouse
observe mouse events in the raw terminal or parsed ncurses
modes
test/test_unget_wch
demonstrate the unget_wch and unget functions
Terminal database
There are several new terminal descriptions:
* mosh
* mosh-256color
* teken-16color
* teken-sc
* teken-vt
* xgterm
There are many changes to existing terminal descriptions. Some were
updates to several descriptions:
* make description-fields distinct
* fix errata in description fields
* add/use several building-blocks:
+ aixterm+sl
+ ansi+cpr
+ apollo+vt132
+ decid+cpr
+ ncr260vp+sl
+ wyse+sl
+ x10term+sl
+ xterm+acs
+ xterm+alt47
while others affected specific descriptions. These were retested, to
take into account changes by their developers:
* kitty
* teken
while these are specific fixes based on reviewing documentation, user
reports, or warnings from tic:
att610+cvis0
amended note as per documentation for att610, att620, att730
kon, kon2, jfbterm
revise to undo "linux2.6" change to smacs/rmacs/enacs
st-0.6
add dim, ecma+strikeout
foot+base
add xterm+sl-alt
dec+sl
correct dsl in dec+sl
mintty and tmux
correct setal in mintty/tmux entries, add to vte-2018
nsterm
modify nsterm to use xterm+alt1049
putty
modify putty to use xterm+alt1049
vte-2018
add blink and setal
A few entries use extensions (user-defined terminal capabilities):
* use ansi+enq and decid+cpr in cases where the terminal probably
supported the u6-u9 extension
* remove u6-u9 from teken-2018
* use NQ to flag entries where the terminal does not support query
and response
* add/use bracketed+paste to help identify terminals supporting this
xterm feature
* modify samples for xterm mouse 1002/1003 modes to use 1006 mode,
and also provide for focus in/out responses
* xterm patch #371 supports DEC-compatible status-line. add dec+sl
to xterm-new, per xterm #371, add xterm-p371, add xterm-p370, for
use in older terminals, and set "xterm-new" to \
"xterm-p370" (to
ease adoption).
Documentation
As usual, this release
* improves documentation by describing new features,
* attempts to improve the description of features which users have
found confusing
* fills in overlooked descriptions of features which were described
in the 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.:
* Corrections:
+ remove a stray '/' from description of %g in terminfo(5).
+ correct/improve font-formatting in curs_getch.3x, as well as
other manual pages.
* New/improved history and portability sections:
+ add portability notes for delscreen and delwin in manual.
+ improve curs_slk.3x discussion of extensions and portability
* Other improvements:
+ improve curs_bkgd.3x, explaining that bkgdset can affect
results for bkgd
+ add note on portable memory-leak checking in curs_memleaks.3x
+ expanded description in resizeterm.3x
+ add section on releasing memory to curs_termcap.3x and
curs_terminfo.3x manpages.
+ add clarification of the scope of dynamic variables in
terminfo(5).
+ improve formatting of ncurses-intro.html and hackguide.html
+ improve curs_clear.3x links to other pages
+ update ncurses-howto, making documentation fixes along with
corrections to example programs.
+ use newer version 1.36 of gnathtml for generating Ada html
files.
+ update external links in Ada95.html
There are no new manual pages (all of the manual page updates are to
existing pages).
Interesting bug-fixes
While there were many bugs fixed during development of ncurses 6.4,
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 those dealing with memory leaks and buffer
overflows. Although the utilities are designed for text files (which
they do properly), some choose to test them with non-text files.
* Text files contain no embedded nulls. Also, they end with a
newline. Feeding tic non-text files exposed a few cases where the
program did not check for those issues. As a result, further
processing of the input found limit-checks whose assumptions were
invalid.
* Fixing the limit-checks (first) found a problem with tic managing
the list of strings in a terminal description. In merging two
terminal descriptions (i.e., the "use=" feature), tic was not
allocating a complete copy. A quick repair for that introduced a
memory leak.
* The checks for non-text files are improved (i.e., embedded nulls
in the input file will cause tic to reject it rather than
attempting to process it).
* The string allocations in tic are likewise improved.
Configuration changes
Major changes
There are no major changes. No new options were added. Several
improvements were made to configure checks.
Configuration options
There are a few new/modified configure options:
--with-abi-version
add ABI 7 defaults to configure script.
--with-caps
add warning in configure script if file specified for
"--with-caps" does not exist.
--with-manpage-format
bzip2 and xz compression are now supported
--with-xterm-kbs
add check/warning in configure script if option
"--with-xterm-kbs" is missing or inconsistent
Portability
Many of the portability changes are implemented via the configure
script:
* amend configure option's auto-search to account for systems where
none of the directories known to pkg-config exist
* corrected regex needed for older pkg-config used in Solaris 10
* improve handling of --with-pkg-config-libdir option, allowing for
the case where either $PKG_CONFIG_LIBDIR or the option value has a
colon-separated list of directories
* if the --with-pkg-config-libdir option is not given, use
${libdir}/pkgconfig as a default
* improve search-path check for pkg-config, e.g., for Debian testing
which installs pkg-config with architecture-prefixes.
* build-fix for cross-compiling to MingW, conditionally add -lssp
* improve configure check for getttynam
* fixes to build with dietlibc:
+ add configure check for fpathconf
+ add configure check for math sine/cosine, needed in
test/tclock, and eliminate pow() from test/hanoi
+ use wcsnlen as an alternative to wmemchr if it is not found
* modify configure macro CF_BUILD_CC to check if the build-compiler
works, rather than that it is different from the cross-compiler,
e.g., to accommodate a compiler which can be used for either
purpose with different flags
* modify configure/scripts to work around interference by GNU grep
3.8
Here are some of the other portability fixes:
* change man_db.renames to template, to handle ncurses*-config
script with the --extra-suffix configure option.
* update CF_XOPEN_SOURCE macro, adding variants "gnueabi" and
"gnueabihf" to get _DEFAULT_SOURCE special case, as well as adding
GNU libc suffixes for "abi64", "abin32", \
"x32" to distinguish it
from other libc flavors.
* work around musl's nonstandard use of feature test macros by
adding a definition for NCURSES_WIDECHAR to the generated ".pc"
and *-config files.
* use "command -v" rather than "type" in \
Ada95/gen/Makefile.in to
fix a portability issue.
|