diff options
| author | Baptiste Daroussin <bapt@FreeBSD.org> | 2026-01-14 13:48:32 +0000 |
|---|---|---|
| committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2026-01-14 13:48:32 +0000 |
| commit | 68ad2b0d7af2a3571c4abac9afa712f9b09b721c (patch) | |
| tree | e1cdbdd95e38aee822bd4d4ec26a9b55c9ea994c | |
| parent | fc353e5e61fadd6ef618948f417f96381c08239c (diff) | |
| parent | c5a1e08b52b2f6c05e0116d46277904b711b6bdb (diff) | |
ncurses: merge update to ncurses 6.6
6.6 is ABI compatible with 6.5 (tested with abidiff)
Remove html documentation to ease updates
MFC After: 1 month
415 files changed, 29098 insertions, 24503 deletions
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 8c421ec4cc01..8f44feb757e5 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,11 @@ # xargs -n1 | sort | uniq -d; # done +# 20260114: remove ncurses html documentation +OLD_FILES+=usr/share/doc/ncurses/hackguide.html +OLD_FILES+=usr/share/doc/ncurses/ncurses-intro.html +OLD_DIRS+=usr/share/doc/ncurses + # 20251215: Remove intrinsic utilities OLD_FILES+=usr/bin/alias OLD_FILES+=usr/bin/bg diff --git a/contrib/ncurses/AUTHORS b/contrib/ncurses/AUTHORS index 09dfc9a9efa6..f588fc44f2f4 100644 --- a/contrib/ncurses/AUTHORS +++ b/contrib/ncurses/AUTHORS @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------- --- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 2020-2024,2025 Thomas E. Dickey -- -- Copyright 2006,2017 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- @@ -26,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: AUTHORS,v 1.5 2021/06/17 21:20:30 tom Exp $ +-- $Id: AUTHORS,v 1.8 2025/11/12 01:25:55 tom Exp $ ------------------------------------------------------------------------------- These are the principal authors/contributors of ncurses since 1.9.9e, in decreasing order of their contribution: @@ -36,5 +36,6 @@ JPF Juergen Pfeifer ESR Eric S Raymond AVL Alexander V Lukyanov PB Philippe Blain +GBR Branden Robinson SV Sven Verdoolaege -NB Nicolas Boulenguez +NB Nicolas Boulenguez diff --git a/contrib/ncurses/COPYING b/contrib/ncurses/COPYING index 540047f121f1..6182a3bc671f 100644 --- a/contrib/ncurses/COPYING +++ b/contrib/ncurses/COPYING @@ -1,4 +1,4 @@ -Copyright 2018-2023,2024 Thomas E. Dickey +Copyright 2018-2024,2025 Thomas E. Dickey Copyright 1998-2017,2018 Free Software Foundation, Inc. Permission is hereby granted, free of charge, to any person obtaining a @@ -26,4 +26,4 @@ sale, use or other dealings in this Software without prior written authorization. -- vile:txtmode fc=72 --- $Id: COPYING,v 1.13 2024/01/05 21:13:17 tom Exp $ +-- $Id: COPYING,v 1.14 2025/01/04 10:53:46 tom Exp $ diff --git a/contrib/ncurses/INSTALL b/contrib/ncurses/INSTALL index a2076eeec261..fea738a4c465 100644 --- a/contrib/ncurses/INSTALL +++ b/contrib/ncurses/INSTALL @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------- --- Copyright 2018-2023,2024 Thomas E. Dickey -- +-- Copyright 2018-2024,2025 Thomas E. Dickey -- -- Copyright 1998-2017,2018 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- @@ -26,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: INSTALL,v 1.254 2024/04/27 14:21:05 tom Exp $ +-- $Id: INSTALL,v 1.263 2025/12/30 20:42:25 tom Exp $ --------------------------------------------------------------------- How to install Ncurses/Terminfo on your system --------------------------------------------------------------------- @@ -550,8 +550,8 @@ CONFIGURE OPTIONS: problem. --enable-bsdpad - Recognize BSD-style prefix padding. Some ancient BSD programs (such as - nethack) call tputs("50") to implement delays. + Recognize BSD-style prefix padding. Some programs written using + the BSD curses API use tputs("50") to implement delays. --enable-check-size Compile-in feature to detect screensize for terminals which do not @@ -587,7 +587,8 @@ CONFIGURE OPTIONS: as such to the debugger. See also the --disable-macros option. --enable-exp-win32 - When configuring for MinGW, use the experimental Windows 10 driver. + This is an obsolete option used for configuring the Windows 10 driver + for MinGW. --enable-ext-colors Extend the cchar_t structure to allow more than 16 colors to be @@ -650,6 +651,12 @@ CONFIGURE OPTIONS: may not be accurate, or that your stty settings have disabled the use of tabs. + --enable-install-prefix + Extend the --with-install-prefix feature to replace the prefix value + with $DESTDIR rather than simply prepending $DESTDIR to install + pathnames. This works with any "make" which supports AT&T style + variable substitution. + --enable-interop Compile-in experimental interop bindings. These provide generic types for the form-library. @@ -660,6 +667,10 @@ CONFIGURE OPTIONS: systems). If you do not specify this option, the configure script checks the current filesystem. + --enable-named-pipes + Compile-in support for named pipes, used to connect to Windows 10 + pseudo-console. + --enable-no-padding Compile-in support for the $NCURSES_NO_PADDING environment variable, which allows you to suppress the effect of non-mandatory padding in @@ -703,7 +714,7 @@ CONFIGURE OPTIONS: Use rpath option when generating shared libraries, and (with some restrictions) when linking the corresponding programs. This originally (in 1997) applied mainly to systems using the GNU linker (read the - manpage). + man page). More recently it is useful for systems that require special treatment shared libraries in "unusual" locations. The "system" libraries reside @@ -768,9 +779,9 @@ CONFIGURE OPTIONS: unless you have disabled the extended functions. --enable-term-driver - Enable experimental terminal-driver. This is currently used for the - MinGW port, by providing a way to substitute the low-level terminfo - library with different terminal drivers. + Enable terminal-driver. This is required for the MinGW port, by + providing a way to substitute the low-level terminfo library with + different terminal drivers. --enable-termcap Compile in support for reading terminal descriptions from termcap if no @@ -1097,34 +1108,35 @@ CONFIGURE OPTIONS: ./configure --enable-static --with-manpage-aliases - Tell the configure script you wish to create entries in the - man-directory for aliases to manpages which list them, e.g., the - functions in the panel manpage. This is the default. You can disable - it if your man program does this. You can also disable - --with-manpage-symlinks to install files containing a ".so" command - rather than symbolic links. + Create files in subdirectories of the installation "man" directory that + alias the man pages documenting them. For example, the "beep" man page + also documents the function "flash". This is the default. You can + disable this procedure if your system's makewhatis(8) or mandb(8) + program indexes the directory to which the pages are installed. If you + disable man page symlinks by specifying "--without-manpage-symlinks", + the alias pages are created as stubs containing ".so" *roff requests. --with-manpage-format=XXX - Tell the configure script how you would like to install man-pages. The - option value must be one of these: gzip, compress, BSDI, normal, - formatted. If you do not give this option, the configure script + Tell the configure script how you would like to install man pages. The + option value must be one of these: "gzip", "compress", "BSDI", "normal", + "formatted". If you do not specify this option, the configure script attempts to determine which is the case. --with-manpage-renames=XXX - Tell the configure script that you wish to rename the manpages while - installing. Currently the only distribution which does this is Debian. + Tell the configure script that you wish to rename the man pages when + installing them. Debian and distributions descended from it do this. The option value specifies the name of a file that lists the renamed - files, e.g., $srcdir/man/man_db.renames + files, e.g., "$srcdir/man/man_db.renames". --with-manpage-symlinks Tell the configure script that you wish to make symbolic links in the - man-directory for aliases to the man-pages. This is the default, but - can be disabled for systems that provide this automatically. Doing - this on systems that do not support symbolic links will result in - copying the man-page for each alias. + man-directory for aliases to the man pages. This is the default, but + can be disabled for systems that provide this service automatically. + Doing this on systems that do not support symbolic links creates a copy + of the target man page for each alias. --with-manpage-tbl - Tell the configure script that you wish to preprocess the manpages + Tell the configure script that you wish to preprocess the man pages by running them through tbl to generate tables understandable by nroff. @@ -1182,11 +1194,11 @@ CONFIGURE OPTIONS: --with-pkg-config-libdir[=DIR] If pkg-config was found, override the automatic check for its library path. The optional DIR value can be - + "auto", automatically use pkg-config's library directory, or - + "libdir", use a ${libdir}/pkgconfig (based on the configuration), or - + a directory path, i.e., beginning with "/". The configure script allows only a single directory, because @@ -1351,11 +1363,9 @@ CONFIGURE OPTIONS: several builds, some symbols will be listed in the the ".map" files that do not happen to be present in one configuration or another. - The sample ".map" (and ".sym") files are generated using a set of - scripts which build several configurations for each release version, - checking to see which of the "_nc_" symbols can be made local. In - addition to the ncurses libraries and programs, the symbols used - by the "tack" program before version 1.08 are made global. + The sample ".map" (and ".sym") files were generated using a set of + scripts which built several configurations for each release version, + checking to see which of the "_nc_" symbols can be made local. These sample ".map" files will not cover all possible combinations. In some cases, e.g., when using the --with-weak-symbols option, you @@ -1393,10 +1403,10 @@ CONFIGURE OPTIONS: --without-curses-h Don't install the ncurses header with the name "curses.h". Rather, - install as "ncurses.h" and modify the installed headers and manpages + install as "ncurses.h" and modify the installed headers and man pages accordingly. - Likewise, do not install an alias "curses" for the ncurses manpage. + Likewise, do not install an alias "curses" for the ncurses man page. --without-cxx XSI curses declares "bool" as part of the interface. C++ also declares @@ -1419,7 +1429,7 @@ CONFIGURE OPTIONS: Do not use dlsym() to load GPM dynamically. --without-manpages - Tell the configure script to suppress the install of ncurses' manpages. + Tell the configure script to suppress the install of ncurses' man pages. --without-progs Tell the configure script to suppress the build of ncurses' application @@ -1451,7 +1461,32 @@ COMPATIBILITY WITH OLDER RELEASES: you may encounter when building a system with different versions of ncurses: - 6.5 (Apt 27, 2024) + 6.6 (Dec 30, 2025) + Interface changes: + + + none + + Added extensions: + + + none + + Added internal functions (other than "_sp" variants): + + + _nc_is_path_found + + Removed internal functions: + + + none + + Modified internal functions: + + + These now pass a const parameter: _nc_has_mouse, + _nc_reset_color_pair, _nc_free_entry, and _nc_timed_wait. + + These now use a NCURSES_BOOL where an int was used: + _nc_setupscreen, _nc_keypad, _nc_unicode_locale, and + _nc_retrace_bool. + + 6.5 (Apr 27, 2024) Interface changes: + the WINDOW structure and some related internal data types declared diff --git a/contrib/ncurses/MANIFEST b/contrib/ncurses/MANIFEST index a9395d2f8a09..dc791dbe0f1c 100644 --- a/contrib/ncurses/MANIFEST +++ b/contrib/ncurses/MANIFEST @@ -36,6 +36,8 @@ ./Ada95/mk-pkg.awk ./Ada95/package/AdaCurses-doc.spec ./Ada95/package/AdaCurses.spec +./Ada95/package/debian/adacurses.lintian-overrides +./Ada95/package/debian/adacurses.triggers ./Ada95/package/debian/compat ./Ada95/package/debian/control ./Ada95/package/debian/copyright @@ -556,21 +558,18 @@ ./include/headers ./include/nc_access.h ./include/nc_alloc.h -./include/nc_mingw.h ./include/nc_panel.h ./include/nc_string.h ./include/nc_termios.h ./include/nc_tparm.h -./include/nc_win32.h +./include/nc_win32.h.in ./include/ncurses_cfg.hin ./include/ncurses_defs ./include/ncurses_dll.h.in -./include/ncurses_mingw.h ./include/term_entry.h ./include/termcap.h.in ./include/tic.h ./include/unctrl.h.in -./include/win32_curses.h ./install-sh ./man/MKada_config.in ./man/MKncu_config.in @@ -900,6 +899,7 @@ ./ncurses/llib-ltinfow ./ncurses/modules ./ncurses/new_pair.h +./ncurses/report_ctype.c ./ncurses/report_hashing.c ./ncurses/report_offsets.c ./ncurses/term.priv.h @@ -1007,12 +1007,11 @@ ./ncurses/win32con/gettimeofday.c ./ncurses/win32con/wcwidth.c ./ncurses/win32con/win32_driver.c -./ncurses/win32con/win_driver.c ./package/debian-mingw/changelog ./package/debian-mingw/compat ./package/debian-mingw/control ./package/debian-mingw/copyright -./package/debian-mingw/mingw32-ncurses6.lintian-overrides +./package/debian-mingw/mingw32-ncurses6td.lintian-overrides ./package/debian-mingw/rules ./package/debian-mingw/source/format ./package/debian-mingw/watch @@ -1020,7 +1019,7 @@ ./package/debian-mingw64/compat ./package/debian-mingw64/control ./package/debian-mingw64/copyright -./package/debian-mingw64/mingw64-ncurses6.lintian-overrides +./package/debian-mingw64/mingw64-ncurses6td.lintian-overrides ./package/debian-mingw64/rules ./package/debian-mingw64/source/format ./package/debian-mingw64/watch @@ -1028,10 +1027,10 @@ ./package/debian/compat ./package/debian/control ./package/debian/copyright -./package/debian/ncurses6.lintian-overrides -./package/debian/ncurses6.triggers -./package/debian/ncursest6.lintian-overrides -./package/debian/ncursest6.triggers +./package/debian/ncurses6td.lintian-overrides +./package/debian/ncurses6td.triggers +./package/debian/ncursest6td.lintian-overrides +./package/debian/ncursest6td.triggers ./package/debian/rules ./package/debian/source/format ./package/debian/watch @@ -1190,6 +1189,8 @@ ./test/package/debian/control ./test/package/debian/copyright ./test/package/debian/docs +./test/package/debian/ncurses-examples.lintian-overrides +./test/package/debian/ncursest-examples.lintian-overrides ./test/package/debian/rules ./test/package/debian/source/format ./test/package/debian/watch diff --git a/contrib/ncurses/Makefile.in b/contrib/ncurses/Makefile.in index 1303e171cfa1..9a55006e0331 100644 --- a/contrib/ncurses/Makefile.in +++ b/contrib/ncurses/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.46 2022/10/01 22:53:36 tom Exp $ +# $Id: Makefile.in,v 1.51 2025/10/25 18:01:01 tom Exp $ ############################################################################## -# Copyright 2018-2021,2022 Thomas E. Dickey # +# Copyright 2018-2022,2025 Thomas E. Dickey # # Copyright 1998-2014,2015 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -35,11 +35,10 @@ SHELL = @SHELL@ VPATH = @srcdir@ -DESTDIR=@DESTDIR@ -RPATH_LIST=@RPATH_LIST@ -TOP_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" - @SET_MAKE@ +@SET_DESTDIR@ +RPATH_LIST = @RPATH_LIST@ +TOP_MFLAGS = DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" NCURSES_MAJOR = @NCURSES_MAJOR@ NCURSES_MINOR = @NCURSES_MINOR@ @@ -93,6 +92,7 @@ preinstall : @ echo '' @ echo ' extended funcs: '`test @NCURSES_EXT_FUNCS@ != 0 && echo yes || echo no` @ echo ' xterm terminfo: '@WHICH_XTERM@ + @ echo ' ABI suffix: '`if test -n "@ABI_SUFFIX@"; then echo @ABI_SUFFIX@; else echo "(none)"; fi` @ echo '' @ echo ' bin directory: '$(bindir) @ echo ' lib directory: '$(libdir) @@ -114,13 +114,10 @@ preinstall : distclean \ realclean :: -check : - @ echo The test-programs are interactive - - # Put the common rules here so that we can easily construct the list of # directories to visit. all \ +check \ clean \ distclean \ mostlyclean \ diff --git a/contrib/ncurses/Makefile.os2 b/contrib/ncurses/Makefile.os2 index bc3407d65750..68d4f898413d 100644 --- a/contrib/ncurses/Makefile.os2 +++ b/contrib/ncurses/Makefile.os2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2020-2021,2025 Thomas E. Dickey # # Copyright 1998-2000,2006 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -26,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ################################################################################ -# $Id: Makefile.os2,v 1.13 2021/06/17 21:20:30 tom Exp $ +# $Id: Makefile.os2,v 1.15 2025/07/12 10:48:01 tom Exp $ # # Wrapper Makefile for ncurses library under OS/2. # Author: Juan Jose Garcia Ripoll <worm@arrakis.es>. @@ -247,7 +247,7 @@ OS2NAME=ncurses-$(NCURSES_MAJOR).$(NCURSES_MINOR)-emx os2dist : $(MAKE) -f Makefile.os2 os2clean ./configure --without-debug --with-install-prefix=`pwd|sed -e 's@^.:@@'`/$(OS2NAME) - $(MAKE) -f Makefile.os2 $(CF_MFLAGS) install.os2 + $(MAKE) -f Makefile.os2 install.os2 -rm -f $(OS2NAME).zip echo NCurses-$(NCURSES_MAJOR).$(NCURSES_MINOR)-$(NCURSES_PATCH) for emx > $(OS2NAME)/FILE_ID.DIZ echo Binary release. >> $(OS2NAME)/FILE_ID.DIZ diff --git a/contrib/ncurses/NEWS b/contrib/ncurses/NEWS index 8bedbc8264e1..c10767b675c8 100644 --- a/contrib/ncurses/NEWS +++ b/contrib/ncurses/NEWS @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------- --- Copyright 2018-2023,2024 Thomas E. Dickey -- +-- Copyright 2018-2024,2025 Thomas E. Dickey -- -- Copyright 1998-2017,2018 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- @@ -26,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: NEWS,v 1.4114 2024/04/27 18:00:35 tom Exp $ +-- $Id: NEWS,v 1.4390 2025/12/30 20:31:07 tom Exp $ ------------------------------------------------------------------------------- This is a log of changes that ncurses has gone through since Zeyd started @@ -46,6 +46,575 @@ See the AUTHORS file for the corresponding full names. Changes through 1.9.9e did not credit all contributions; it is not possible to add this information. +20251230 6.6 release for upload to ftp.gnu.org + + update announcement + + corrected an ifdef needed for mouse support in MinGW/Windows + + eliminate remaining duplicate code between MinGW/Windows drivers + +20251227 + + make win32_curses.h obsolete in favor of nc_win32.h + + modify MinGW32 configuration to account for its use of Windows-style + pathnames in filesystem checks. + + replace --enable-exp-win32 option with --enable-named-pipes + +20251220 + > in-progress work to merge MinGW/Windows port. + + eliminate EXP_WIN32_DRIVER with USE_NAMED_PIPES + + change MS_TERMINAL to DEFAULT_TERM_VAR + +20251213 + + in-progress work to merge MinGW/Windows port. + + add a null-pointer check in tic -c option. + + add a limit-check in infocmp -i option (report/example by Yixuan Cao). + +20251206 + + in-progress work to merge MinGW/Windows port. + +20251129 + + in-progress work to merge MinGW/Windows port. + +20251123 + + revert change using NCURSES_SBOOL in tic.h which interfered with + sign-extension in tigetflag (Debian #1121191, cf: 20251101). + +20251122 + + in-progress work to merge MinGW/Windows port. + + correct expression for TINFO_LIB variable in misc/ncurses-config.in + (Debian #1121208, cf: 20251004). + +20251115 + + check for special case of wcrtomb() converting a single byte code to + a different single byte code, which glibc does for code 160 in the + KOI8-R encoding (report by Yury V Zaytsev). + + improve formatting/style of manpages (patches by Branden Robinson). + + amend recent changes to mouse handling to avoid a case which caused + a loop in wgetch until additional input is provided (htop #1769, + cf: 20250913). + +20251101 + + adjust generated terminfo.5 to omit tbl "x" column modifier if that + is unsupported, i.e., with old nroff/tbl (adapted from patch by + Branden Robinson). + + in-progress work to merge MinGW/Windows port. + +20251025 + + amend locale-portability fix in tty_update.c (MidnightCommander #4799, + cf: 20240203). + + add testing utility report_ctype + + update configure macros, improving check for $host_os + + correct a recent change to curs_termino.3x, along with formatting + fixes for manpages. + + corrected note about box() in curs_border.3x (patch by Jakub Horky, + cf: 20250201). + +20251018 + + add check for build-time utilities, in case cross-compiling is setup + with an invalid $BUILD_CC (prompted by discussion with Stas Sergeev). + + modify configure-script and makefiles to make it easier to override + the "--with-install-prefix" default with environment variable + (report by Stas Sergeev). + +20251010 + + fix stray "\" in curs_extend.3x, regen html manpages. + + regen html manpages with man2html 1.42, fixing a few cases where + headers were not linked (report by Branden Robinson). + +20251004 + + improve formatting/style of manpages (patches by Branden Robinson). + + in-progress work to merge MinGW/Windows port. + + improve configure check for "install". + +20250927 + + in-progress work to merge MinGW/Windows port. + +20250920 + + in-progress work to merge MinGW/Windows port. + + add configure check for <sys/fsuid.h>, build-fix for flatpacks + (report by Stas Sergeev). + + update config.guess, config.sub + +20250913 + + update ncurses-howto. + + modify MKfallback.sh to eliminate TERMINFO environment variable. + + improve checks in run_tic.sh script, change some variable names to + reduce packager confusion (report by Stas Sergeev). + + disallow configure options which apply only to multiuser systems, to + improve ports to single-user systems such as Haiku (report by Stas + Sergeev). + + update ncurses/wcwidth.c, for MinGW ports, from xterm. + + correct _nc_to_char() for the case when wctob() is not found by + configure script (report/patch by Benno Schulenberg). + > patches by Robin Haberkorn + + modify handle_wheel case 2 to ignore the event as in case 1 for + mouse version 1, since that corresponds to a button 6 or 7 event + which is not supported with ABI 6. + + use separate read/write pointers in the mouse event queue to work + with too-close events for the click-detection to work reliably, + and further improve that in case mouseinterval(0) is used to + suppress click-detection. + +20250830 + + in-progress work to merge MinGW/Windows port. + + build-fix for experimental Windows configuration (report by Kirill + Makurin). + + improve pattern used for configure --with-xterm-kbs option. + +20250823 + + improve style of MKterminfo.sh script (patches by Branden Robinson). + + improve formatting/style of manpages (patches by Branden Robinson). + + remove redundant definition of ConsoleInfo. + + change scope of TTY, GET_TTY and SET_TTY to ncurses-internals + +20250816 + + remove redundant reference to compiler in libtool configuration of + mk-1st.awk (report by Lorinczy Zsigmond). + + build-fixes for --enable-exp-win32 configuration + + improve formatting/style of manpages (patches by Branden Robinson). + +20250809 + + add configure check for Win32 named pipes feature, using that to make + nc_mingw.h obsolete in favor of nc_win32.h + + amend limit used in alloc_pair, by applying an adjustment for default + colors only when the maximum number of color pairs is greater than + the maximum number of colors (report by "Ingvix"). + +20250802 + + fixes for reading Unicode characters in MinGW/Windows port (report by + Axel Reinhold). + +20250726 + + modify configure script cases for $host_os, to accommodate 64-bit + big-endian POWER linux with glibc (patch by Cosima Neidahl). + + add warning to configure script to address conflict between the + --enable-lp64 option and the options for overriding the types used + for chtype and mmask_t. + +20250720 + + further improve readability of header-files + + add a consistency-check for termio(s)/tty headers, to help with + cross-compiles (report by Stas Sergeev). + + remove some unused configure-macros + + add xterm+keypad to pccon+base -TD + + trim trailing blanks from a few files (report by Stas Sergeev). + +20250712 + + improve readability of term.h + + modify recursive make rules to avoid interference with GNU make's + "-j" option (report by Stas Sergeev). + +20250705 + + when installing the terminfo database, check if symbolic links are + supported before attemping to link lib/terminfo from share/terminfo + (report by Kirill Makurin). + + modify configure check for MAKEFLAGS/MFLAGS to ignore existing value + of these environment variables (report by Stas Sergeev). + + reserve -c/-l options in test/*.c for command/logging like vttest. + + add options to test/worm.c for benchmarking (Nibby Nebbulous) + + improve formatting/style of manpages (patches by Branden Robinson). + + improve readability of header-files (patches by Branden Robinson). + +20250628 + + fix a few compiler-warnings. + + simplify include for wchar.h in Windows port by removing the platform + ifdef's (report by Kirill Makurin). + + regen Ada95/configure (report by Sven Joachim). + +20250621 + + revise loop in wins_nwstr, to ensure that non-spacing characters are + combined with the base spacing character (report by Karl Knechtel). + + fixes for port using clang-cl or cl MSVC (report by Kirill Makurin). + + improve test-packages: + + convert debian*/copyright to DEP-5 format. + + modify ".spec" test-files to work around timestamp-clamping in + recent Fedora releases. + +20250614 + + reduce lintian warnings for test-packages. + + clean up some shellcheck warnings + + improve test/configure checks for X libraries, reducing duplicates + + fix some typos/errata in license text, to help with scripted checks + +20250531 + + improve logic in misc/run_tic.in for constructing symbolic link + when $DESTDIR is set. + +20250524 + + correct option-name used in configure script, which resulted in size + change for cchar_t (cf: 20250517). + +20250517 + + initial changes for some ABI 7 features: + + disable wgetch-events + + add feature for extending mouse-buttons + + add feature for extending direct-color support + + use bracketed+paste in nsterm, rlogin-color, screen, terminology -TD + +20250510 + + add rv/xr codes for domterm, mintty, mlterm -TD + + add xr code for putty -TD + + update teraterm to 5.0 -TD + + add rlogin-color -TD + +20250503 + + update/correct some of the rv/xr strings, checked with tack -TD + + use ansi+rca in sclp -TD + + use vt220+pcedit in sclp (Werner Fink) + + move some building blocks from illumos to sun-color, based on + illumos source-history -TD + + improve use-clauses: ansi+cup, ansi+idl1, ansi+rca, ansi+rca2, + ansi+sgrso, ansi+sgrul -TD + + add ecma+standout, ecma+underline -TD + + add rv code for alacritty -TD + + add rv/xr codes for contour, ghostty, iterm2, kitty, konsole, + vscode, vte, wezterm -TD + +20250426 + + expand note on extensions in curs_addch.3x + + add illumos, sun-16color, sun-256color, sun-direct -TD + + add wyse+cvis -TD + +20250419 + + add note on scrolling and lower-right corner to waddch and wadd_wch + manual pages. + +20250412 + + add pangoterm -TD + + add kf1 to kf5 to sclp (report by Werner Fink) + + add vt100+pf1-pf4 -TD + +20250405 + + improve formatting/style of manpages (patches by Branden Robinson). + + improve infocmp -E/-e fallback feature (report by Ville Rissanen): + + prefix names with "ti_" if they begin with a digit, e.g., 9term + + escape backslashes and double-quotes in description fields + + modify infocmp -E/-e fallback feature to reduce stricter compiler + warnings for the extended capability data. + + add sclp -TD + + add op to vt525 -TD + + update contour -TD + +20250329 + + add XM/xm to ms-terminal, to enable mouse with experimental Windows + driver -TD + + add -x option to infocmp in MKfallback.sh + + improve experimental Windows driver by restoring the scroll buffer + and console mode, e.g., when reset_prog_mode or endwin is called + (patch by Daniel Starke). + + add a buffer-limit check in postprocess_termcap (report/testcase by + Yifan Zhang). + +20250322 + + add a null pointer check in mouse-initialization, for the + experimental Windows driver (patch by Daniel Starke). + + improve makefile dependency in Ada95/src + + add note in user_caps.5 addressing a quibble about dates. + +20250315 + + improve formatting/style of manpages (patches by Branden Robinson). + +20250308 + + remove test in wgetch which applied notimeout to the initial read + of a character (patch by Branden Robinson). + + improve formatting/style of manpages (patches by Branden Robinson). + + fix a few compiler-warnings in MinGW port. + +20250301 + + add color to vt525 (Branden Robinson) + + add vt520-w and vt525-w (Branden Robinson) + + improve formatting/style of manpages (patches by Branden Robinson). + + improve configurability of alloca() as used in Windows ports. + + fix some typos in manpages. + + modify configure script checks for stdbool.h to fix build with older + gcc version. + +20250222 + + modify treatment of "n" parameter for waddnstr, waddnwstr, and + wins_nwstr to return OK when "n" is zero, for consistency with other + implementations (report by Benjamin Barenblat, cf: 20231118). + + formatting improvements for terminfo.5 (Debian #1096164). + +20250216 + + add limit-checks in alloc_entry.c and alloc_ttype.c to avoid indexing + errors when using infocmp to compare all capabilities when processing + a malformed terminfo binary which has a valid header (testcase by + "Ekkosun"). + +20250215 + + add gzip option for suppressing filename/timestamp information to an + overlooked case (cf: 20240330). + + correct spelling errors found with codespell. + + fix some typos in manpages (report by Sven Joachim) + + amend change to lib_set_term.c to work with thread configuration + (report by Rajeev Pillai, cf: 20250208). + +20250208 + + change etip.h.in to include either/both of <new> and <exception>, + needed for another old BSD. + + update st (report by Alexander Kashpir) -TD + + add note for ghostty 1.1.0 -TD + + fix a few issues found with coverity. + +20250201 + + add <new> to the possible headers declaring the C++ std::bad_alloc + (report by Carl Hansen). + + modify check for stdbool.h to be more conservative in case the + headers are used with a compiler other than that which was used to + configure (Redhat #2342514). + + improve MKlib_gen.sh handling of "bool" type, for building link_test + + improve formatting/style of manpages (patches by Branden Robinson). + +20250125 + + improve error-handling in c++ binding (report by Mingjie Shen). + + strict compiler-warning fixes for upcoming gcc15 + +20250118 + + improve pattern used for configure --with-xterm-kbs option (report by + Mingyu Wang) + + update configure macros, from work on cdk and dialog. + + change a parameter name in curs_sp_funcs.3x, for consistency (patch + by "WHR"). + > patches by Branden Robinson: + + improve formatting/style of manpages + + change winwstr() to a generated function, using the macro definition, + moving its handling of negative length parameter into winnwstr(). + + correct actual-function name in a few trace calls. + +20250111 + + add check for infinite loop in tic's use-resolution. + + increase limit on use-clauses from 32 to 40, warn but allow entries + which exceed the old limit. + + add some null-pointer checks after mallocs in test-programs. + +20250104 + + modify tput to warn about capabilities which expect parameters where + none are given; also repair the feature where multiple capabilities + can be handled on a single line. + + cleanup use-clauses -TD + + add linux+lockeys, xterm+r5+lockeys, xterm+r5+fkeys -TD + + add vt220+ufkeys, vt220+sfkeys + + revert man/manlinks.sed change, which loses aliases (cf: 20241228). + + modify MKlib_gen.c to allow for Solaris's definition of NULL as 0L + +20241228 + + correct conditional-compile for a case when the C compiler does not + have a bool type. + + add ghostty -TD + > patches by Branden Robinson: + + add comments to generated term.h to hint the configure options used + + use same subdir-convention for term.h, in configure script + + improve formatting/style of manpages + +20241221 + + modify ncurses/tinfo/MKfallback.sh to work with MacOS sed, which + lacks BSD-style \< and \> + + trim padding from sgr expression used in trim_sgr0, to avoid copying + the padding into the resulting sgr0 (report by Rajeev Pillai). + + strict compiler-warning fixes for upcoming gcc15 + +20241214 + + avoid redefining bool in curses.h if the platform already supports + that type (cf: 20241123). + + move include <curses.h> from etip.h.in to cursesw.h, to work around + breakage in Apple's port of ncurses. + + strict compiler-warning fixes for upcoming gcc15 + +20241207 + + strict compiler-warning fixes for upcoming gcc15 + +20241130 + + improve configure check for lint program. + + adjust options in test-programs to allow for consistent use of -c/-l + for command/logging. + + modify win_driver.c for MinGW to handle shift-tab and control-tab as + back-tab (report by Axel Reinhold) + +20241123 + + remove dependency on stdbool.h from configure script check for type + of bool when C++ binding is omitted (report by Sam James). + + compiler-warning fixes + +20241109 + + work around musl header ifdef's (report by Urs Jansen, cf: Gentoo + #920266). + + improve error-reporting in write_entry.c (report by Changqing Li). + + remove unused #include from DJGPP configuration (report by Stas + Sergeev). + + workaround/fix issues from clang-analyze + +20241102 + + remove djgpp-specific initialization to binary mode (report/patch by + Stas Sergeev). + + add extended-keys for djgpp 2.05 -TD + +20241026 + + update ms-terminal -TD + + add ms-terminal-direct -TD + + correct dimensions in test/popup_msg.c, fixing an overrun (patch by + Stas Sergeev, cf: 20211219). + +20241019 + + fixes for compiler warnings/cppcheck. + + build-fixes for DJGPP configuration (patches by Stas Sergeev) + +20241006 + + fixes for compiler warnings/cppcheck. + + use xterm+alt+title in wezterm -TD + +20240928 + + improve error-message from infocmp when a terminal entry cannot be + opened (patch by Branden Robinson). + + improve filtering of -L options in misc/gen-pkgconfig.in and in + misc/ncurses-config.in + + add check in wresize() for out-of-range dimensions (report by Peter + Bierma). + +20240922 + + add a few null-pointer checks in ncurses + + improve test-driver in ncurses/link_test.c + + restore background character in manpages as described in X/Open + Curses section 3.3.6, and add option "-c" to test programs to + illustrate a non-blank character in the window background property. + + improve formatting/style of manpages (patches by Branden Robinson). + + modify ncurses*-config to add -I option in --cflag where needed for + --disable-overwrite to match ".pc" files. + + disallow directories and block/character devices in safe-open. + + amend scr_restore() and scr_init() to remove the target window only + after validating the source window which will replace the target + (report by Zixi Liu). + +20240914 + + modify _nc_flush() to also flush stderr to help the flash capability + to work in bash (patch by Harm te Hennepe, cf: 20201128) + + omit -g and -fXXX flags from CFLAGS in misc/ncurses-config.in + + improve formatting/style of manpages (patches by Branden Robinson). + + improve examples in NCURSES-Programming-HOWTO.html + + update comments in terminfo.src -TD + +20240831 + + build-fix for a case in msys2 where gettimeofday() was available but + the fallback was partly configured. + > patch by Rafael Kitover: + + separate the _NC_WINDOWS platform macro into _NC_WINDOWS_NATIVE, + for MinGW and other native Win32 support, and _NC_WINDOWS, to make + some Win32 features available under the Cygwin runtime, in this case + the term-driver. + + make some minor adjustments to allow + ./configure --enable-term-driver + to also work on Cygwin platforms such as Cygwin and MSYS2. + +20240824 + + modify infocmp and tabs to use actual name in usage and header. + + modify test/demo_keyok.c to accept ^Q for quit, for consistency. + +20240817 + + review/update foot for 1.18.1 -TD + + add a note about DomTerm 3.2.0 -TD + + add new glob-expressions variables to list in config.status script + (patch by Werner Fink). + + add --enable-install-prefix to modify behavior of $DESTDIR to merge + or replace the value set by --prefix (adapted from suggestion by + Eli Zaretskii). + +20240810 + + modify misc/Makefile.in and misc/run_tic.in so that $DESTDIR is set + and used only in the makefile. + + modify CF_WITH_PKG_CONFIG_LIBDIR to allow for pkg-config using + DOS/Windows pathname syntax (report by Eli Zaretskii). + + improve glob-expressions in configure script + + remove unused Get_Menu_Screen() macro from menu.priv.h + + update config.guess, config.sub + +20240727 + + improve formatting/style of manpages (patches by Branden Robinson). + + fixes for compiler warnings/cppcheck. + + modify wattron/wattroff calls in form/m_post.c to call wattr_on and + wattr_off to omit cast used in the former for X/Open compatibility + (patch by Bill Gray). + + modify wezterm, omitting its broken left/right margin feature (report + by Thayne McCombs) -TD + +20240720 + + improve formatting/style of manpages (patches by Branden Robinson). + + modify configure script and misc/Makefile to accept glob expressions + that include Windows/DOS drive-letters (report by Eli Zaretskii). + + fix misspelled ifdef and correct return-value of _nc_mingw_tcflush in + win_driver.c (report/patch by Eli Zaretskii). + +20240713 + + modify misc/ncurses-config.in, improved match with pkg-config output. + +20240706 + + update configure script to use macro changes from dialog. + + modify CF_NCURSES_PTHREADS to avoid equating package and library + names. + +20240629 + + build-fix for ncurses-examples with newer PDCurses, which no longer + has stubs for unimplemented features. + + add help-popup for test_instr.c, test_inwstr.c + + modify checks in delwin to avoid checking if the window is a pad + until first checking if it is still on the active window-list + (cf: 20211115). + + improve -t option of test/gdc.c, allowing hours only, or hours and + minutes only. + +20240622 + + improve test/gdc.c (patch by Branden Robinson). + + improve formatting/style of manpages (patches by Branden Robinson). + + adjust naming of mingw *-config scripts to match the pkg-config names + + widen pattern in pc/*-config scripts to disallow more linker options + + add --cflags-only-I and --cflags-only-other options to + misc/ncurses-config.in + + revert change to CF_BUILD_CC macro (report by Vassili Courzakis, + cf: 20240518). + +20240615 + + improve formatting/style of manpages (patches by Branden Robinson). + + review/update modules files. + + improve install-rules in Ada95 makefiles (report by Branden Robinson). + + improve formatting/style of manpages in test-directory. + +20240608 + + change winwstr to return wide character count instead of OK (patch + by Branden Robinson). + + improve formatting/style of manpages (patches by Branden Robinson). + + rename testing dpkg's for ncurses6 to resolve a naming conflict with + Debian's ncurses packages. + +20240601 + + improve formatting/style of manpages (patches by Branden Robinson). + + change Ada95/configure to use --with-screen option rather than + --enable-widec, to provide more choices of underlying curses library + +20240525 + + build-fix for configure option --disable-ext-funcs + + improve formatting/style of manpages (patches by Branden Robinson). + + review/update iTerm2 for 3.5.0 -TD + +20240519 + + update Ada95/configure to match change for -DTRACE + + revert change to include/ncurses_defs, which caused build failure if + tracing was not enabled (report by Branden Robinson). + +20240518 + + improve formatting/style of manpages (patches by Branden Robinson). + + move makefile's -DTRACE into include/ncurses_cfg.h, to simplify use + of CFLAGS/CPPFLAGS. + + improve check for clock_gettime(), from xterm. + + modify configure script to work around broken gnatgcc script found in + gcc-13 builds. + +20240511 + + improve formatting/style of manpages (patches by Branden Robinson). + + limit value from ESCDELAY environment variable to 30 seconds, like + other delay limits. + + limit values from LINES and COLUMNS environment variables to 512 + (report by Miroslav Lichvar). + +20240504 + + update ncurses/wcwidth.c, for MinGW ports, from xterm. + + trim obsolete comment about tack from INSTALL. + 20240427 6.5 release for upload to ftp.gnu.org + update announcement + fixes/corrections for manpages (patches by Branden Robinson). @@ -223,7 +792,7 @@ it is not possible to add this information. modem (prompted by discussion with Werner Fink, Michal Suchanek, OpenSUSE #1201384, Debian #60377). + build-fixes for --with-caps variations. - + correct a couple of section-references in INSTALL. + + correct a couple of section references in INSTALL. 20231028 + move xterm focus mode 1004 from xterm+sm+1006 into xterm+focus as @@ -319,7 +888,7 @@ it is not possible to add this information. + minor grammatical fix for manpages (Branden Robinson). 20230729 - + improve manpages for wgetnstr() and wget_wnstr(). + + improve manpages for wgetnstr() and wget_nwstr(). + modify MinGW configuration to provide for running in MSYS/MSYS2 shells, assuming ConPTY support (patch by Pavel Fedin). + add assignment in CF_MAN_PAGES to fill in value for TERMINFO_DIRS in @@ -4262,7 +4831,7 @@ it is not possible to add this information. 20140621 + change shared-library suffix for AIX 5 and 6 to ".so", avoiding conflict with the static library (report by Ben Lentz). - + document RPATH_LIST in INSTALLATION file, as part of workarounds for + + document RPATH_LIST in INSTALL file, as part of workarounds for upgrading an ncurses library using the "--with-shared" option. + modify test/ncurses.c c/C tests to cycle through subsets of the total number of colors, to better illustrate 8/16/88/256-colors by @@ -10577,7 +11146,7 @@ it is not possible to add this information. (adapted from a patch by Ilya Zakharevich). + correct parameter types of vidputs() and vidattr() to agree with header files (report by William P Setzer). - + fix typos in several man-pages (patch by William P Setzer). + + fix typos in several man pages (patch by William P Setzer). + remove unneeded ifdef for __GNUG__ in CF_CPP_VSCAN_FUNC configure macro, which made ncurses C++ binding fail to build with other C++ compilers such as HPUX 11.x (report by Albert Chin-A-Young). @@ -10630,7 +11199,7 @@ it is not possible to add this information. wide-character structures (report by <George.R.Goffe@seagate.com>). + ensure that _XOPEN_SOURCE_EXTENDED is defined in curses.priv.h if compiling for wide-character configuration. - + make addwnstr() handle non-spacing characters (patch by Sven + + make addnwstr() handle non-spacing characters (patch by Sven Verdoolaege). 20010630 @@ -11109,7 +11678,7 @@ it is not possible to add this information. absolute pathname for the build tree's lib directory (prompted by discussion with Albert Chin-A-Young). + modify "make install.man" and "make uninstall.man" to include tack's - man-page. + man page. + various fixes for install scripts used to support configure --srcdir and --with-install-prefix (reported by Matthew Clarke <Matthew_Clarke@mindlink.bc.ca>). @@ -11336,7 +11905,7 @@ it is not possible to add this information. 20000708 5.1 release for upload to ftp.gnu.org + document configure options in INSTALL. - + add man-page for ncurses trace functions. + + add man page for ncurses trace functions. + correct return value shown in curs_touch.3x for is_linetouched() and is_wintouched(), in curs_initscr.3x for isendwin(), and in curs_termattr.3x for has_ic() and has_il(). @@ -12465,7 +13034,7 @@ it is not possible to add this information. running screen built with ncurses. + check if tmp_fp is opened in tic.c before closing it (patch by Pavel Roskin <pavel_roskin@geocities.com>). - + correct several font specification typos in man-pages. + + correct several font specification typos in man pages. 981220 + correct default value for BUILD_CC (reported by Larry Virden). @@ -12814,7 +13383,7 @@ it is not possible to add this information. + modify init_pair so that if a color-pair is reinitialized, we will repaint the areas of the screen whose color changes, like SVr4 curses (reported by Christian Maurer <maurer@inf.fu-berlin.de>). - + modify getsyx/setsyx macros to comply with SVr4 man-page which + + modify getsyx/setsyx macros to comply with SVr4 man page which says that leaveok() affects their behavior (report by Darryl Miles, patch by Alexander V Lukyanov). @@ -12827,7 +13396,7 @@ it is not possible to add this information. + implement tparm dynamic variables (reported by Xiaodan Tang). 980613 - + update man-page for for wattr_set, wattr_get (cf: 980509) + + update man page for wattr_set, wattr_get (cf: 980509) + correct limits in hashtest, which would cause nonprinting characters to be written to large screens. + correct configure script, when --without-cxx was specified: the @@ -13009,12 +13578,12 @@ it is not possible to add this information. option (patch by Jesse Thilo). + correct some places in configure script where $enableval was used rather than $withval (patch by Darryl Miles <dlm@g7led.demon.co.uk>). - + modify some man-pages so no '.' or '..' falls between TH and SH + + modify some man pages so no '.' or '..' falls between TH and SH macros, to accommodate man_db program (reported by Ian T. Zimmerman <itz@rahul.net>). + terminfo.src 10.2.1 downloaded from ESR's webpage (ESR). > several changes by Juergen Pfeifer: - + add copyright notices (and rcs id's) on remaining man-pages. + + add copyright notices (and rcs id's) on remaining man pages. + corrected prototypes for slk_* functions, using chtype rather than attr_t. + implemented the wcolor_set() and slk_color() functions @@ -13164,7 +13733,7 @@ it is not possible to add this information. implemented. + correct _tracef calls in _tracedump(), which did not separate format from parameters. - + correct getopt string for tic "-o" option, and add it to man-page + + correct getopt string for tic "-o" option, and add it to man page synopsis (reported by Darren Hiebert <darren@hmi.com>). + correct typo in panel/Makefile.in, reversed if-statement in scrolling optimization (Alexander V. Lukyanov). @@ -13251,7 +13820,7 @@ it is not possible to add this information. + resynchronizes the generated html manpages 971213 - + additional fixes for man-pages section-references + + additional fixes for man pages' section references + add (for debugging) a check for ich/ich1 conflict with smir/rmir to tic, etc. + remove hpa/vpa from rxvt terminal description because they are not @@ -13263,7 +13832,7 @@ it is not possible to add this information. + modify protection when installing libraries to (normally) not executable. HP-UX shared libraries are an exception. + add configure check for 'tack'. - + implement script for renaming section-references in man-page install, + + implement script for renaming section references in man page install, for Debian configuration. + add validity-check for SP in trace code in baudrate() (reported by Daniel Weaver). @@ -14398,9 +14967,9 @@ it is not possible to add this information. 970104 + workaround defect in autoconf 2.12 (which terminates configuration if no C++ compiler is found) by adding an option --without-cxx. - + modify several man-pages to use tbl, where .nf/.fi was used (reported + + modify several man pages to use tbl, where .nf/.fi was used (reported by Jesse Thilo). - + correct font-codes in some man-pages (patch by Jesse Thilo + + correct font codes in some man pages (patch by Jesse Thilo <Jesse.Thilo@pobox.com>) + use configure script's knowledge of existence of g++ library for the c++ Makefile (reported by Paul Jackson). @@ -14666,7 +15235,7 @@ it is not possible to add this information. simpler to construct tests (for double-check of _nc_hash_map tests). + correct ifdef's for c++ in curses.h + change default xterm type to xterm-x11r6. - + correct quoting in configure that made man-pages installed with + + correct quoting in configure that made man pages installed with $datadir instead of actual terminfo path. + correct whitespace in include/Caps, which caused kf11, clr_eol and clr_end to be omitted from terminfo.5 @@ -14878,7 +15447,7 @@ it is not possible to add this information. 960707 + rollback ESR's #305 change to terminfo.src (it breaks existing applications, e.g., 'less 290'). - + correct path of edit_man.sh, and fix typo that made all man-pages + + correct path of edit_man.sh, and fix typo that made all man pages preformatted. + restore man/menu_requestname.3x omitted in Zeyd's resync (oops). + auto-configure the GCC_PRINTFLIKE/GCC_SCANFLIKE macros (reported by @@ -14890,7 +15459,7 @@ it is not possible to add this information. descriptions. + work around autoconf bug, force $INSTALL to absolute path (reported by Zeyd). - + modify man-page install for BSDI to install preformatted .0 files + + modify man page install for BSDI to install preformatted .0 files (reported by David MacKenzie). + add/use gcc __attribute__ for printf and scanf in curses.h + added SGR attributes test-case to ncurses @@ -14991,7 +15560,7 @@ it is not possible to add this information. + misc/ncurses-intro.html syntax fix (Kajiyama Tamito). 960601 - snapshot - + auto-configure man-page compression-format and renames for Debian. + + auto-configure man page compression format and renames for Debian. + corrected several typos in curses.h.in (i.e., the mvXXXX macros). + re-order curses.priv.h for lint. + added rules for lintlib, lint diff --git a/contrib/ncurses/VERSION b/contrib/ncurses/VERSION index 8ebef8fe8eb8..f05a0dbadea9 100644 --- a/contrib/ncurses/VERSION +++ b/contrib/ncurses/VERSION @@ -1 +1 @@ -5:0:10 6.5 20240427 +5:0:10 6.6 20251230 diff --git a/contrib/ncurses/aclocal.m4 b/contrib/ncurses/aclocal.m4 index 1c2b788bf1ff..1463b247fb92 100644 --- a/contrib/ncurses/aclocal.m4 +++ b/contrib/ncurses/aclocal.m4 @@ -1,5 +1,5 @@ dnl*************************************************************************** -dnl Copyright 2018-2023,2024 Thomas E. Dickey * +dnl Copyright 2018-2024,2025 Thomas E. Dickey * dnl Copyright 1998-2017,2018 Free Software Foundation, Inc. * dnl * dnl Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,7 +29,7 @@ dnl*************************************************************************** dnl dnl Author: Thomas E. Dickey 1995-on dnl -dnl $Id: aclocal.m4,v 1.1069 2024/03/30 22:15:45 tom Exp $ +dnl $Id: aclocal.m4,v 1.1148 2025/12/25 23:44:16 tom Exp $ dnl Macros used in NCURSES auto-configuration script. dnl dnl These macros are maintained separately from NCURSES. The copyright on @@ -42,7 +42,7 @@ dnl https://invisible-island.net/autoconf/my-autoconf.html dnl dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- -dnl AM_LANGINFO_CODESET version: 7 updated: 2023/01/11 04:05:23 +dnl AM_LANGINFO_CODESET version: 8 updated: 2025/12/22 04:16:14 dnl ------------------- dnl Inserted as requested by gettext 0.10.40 dnl File from /usr/share/aclocal @@ -54,10 +54,10 @@ dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([ + [AC_LINK_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default #include <langinfo.h>], - [char* cs = nl_langinfo(CODESET); (void)cs], + [char* cs = nl_langinfo(CODESET); (void)cs])], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) @@ -67,7 +67,7 @@ $ac_includes_default fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_ABI_DEFAULTS version: 5 updated: 2023/10/21 08:54:23 +dnl CF_ABI_DEFAULTS version: 6 updated: 2025/05/17 14:54:28 dnl --------------- dnl Provide configure-script defaults for different ncurses ABIs. AC_DEFUN([CF_ABI_DEFAULTS],[ @@ -79,6 +79,7 @@ cf_dft_chtype=auto cf_dft_ext_colors=no cf_dft_ext_const=no cf_dft_ext_mouse=no +cf_dft_ext_mouse2=no cf_dft_ext_putwin=no cf_dft_ext_spfuncs=no cf_dft_filter_syms=no @@ -86,6 +87,7 @@ cf_dft_interop=no cf_dft_mmask_t=auto cf_dft_opaque_curses=no cf_dft_ordinate_type=short +cf_dft_rgb_color=no cf_dft_signed_char=no cf_dft_tparm_arg=long cf_dft_widec=no @@ -114,8 +116,10 @@ esac case x$cf_cv_abi_default in (x[[789]]) cf_dft_ccharw_max=6 + cf_dft_ext_mouse2=yes cf_dft_mmask_t=uint64_t cf_dft_ordinate_type=int + cf_dft_rgb_color=yes cf_dft_signed_char=yes # also: remove the wgetch-events feature in ABI 7 ;; @@ -286,7 +290,7 @@ CXXFLAGS="$CFLAGS" CFLAGS="$cf_save_CXXFLAGS" ])dnl dnl --------------------------------------------------------------------------- -dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04 +dnl CF_ADD_INCDIR version: 18 updated: 2025/12/22 04:16:14 dnl ------------- dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it is dnl redundant. We don't normally need to add -I/usr/local/include for gcc, @@ -318,8 +322,8 @@ if test -n "$1" ; then then cf_save_CPPFLAGS=$CPPFLAGS CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir) - AC_TRY_COMPILE([#include <stdio.h>], - [printf("Hello")], + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], + [printf("Hello")])], [], [cf_have_incdir=yes]) CPPFLAGS=$cf_save_CPPFLAGS @@ -478,7 +482,7 @@ dnl Allow user to enable a normally-off option. AC_DEFUN([CF_ARG_ENABLE], [CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl dnl --------------------------------------------------------------------------- -dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14 +dnl CF_ARG_OPTION version: 6 updated: 2025/08/05 04:09:09 dnl ------------- dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus dnl values. @@ -487,7 +491,7 @@ dnl Parameters: dnl $1 = option name dnl $2 = help-string dnl $3 = action to perform if option is not default -dnl $4 = action if perform if option is default +dnl $4 = action to perform if option is default dnl $5 = default option value (either 'yes' or 'no') AC_DEFUN([CF_ARG_OPTION], [AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes) @@ -501,7 +505,7 @@ ifelse([$3],,[ :]dnl ])dnl ])])dnl dnl --------------------------------------------------------------------------- -dnl CF_AR_FLAGS version: 9 updated: 2021/01/01 13:31:04 +dnl CF_AR_FLAGS version: 10 updated: 2025/12/14 20:07:31 dnl ----------- dnl Check for suitable "ar" (archiver) options for updating an archive. dnl @@ -547,8 +551,8 @@ AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ int testdata[[3]] = { 123, 456, 789 }; EOF if AC_TRY_EVAL(ac_compile) ; then - echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&AC_FD_CC - $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AC_FD_CC 1>/dev/null + echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&AS_MESSAGE_LOG_FD + $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AS_MESSAGE_LOG_FD 1>/dev/null if test -f conftest.a ; then cf_cv_ar_flags="$cf_ar_flags" break @@ -598,54 +602,25 @@ AC_DEFUN([CF_AWK_BIG_PRINTF], esac ])dnl dnl --------------------------------------------------------------------------- -dnl CF_BOOL_DECL version: 9 updated: 2023/12/03 09:21:34 +dnl CF_BOOL_DECL version: 12 updated: 2025/12/24 12:27:29 dnl ------------ -dnl Test if 'bool' is a builtin type in the configured C++ compiler. Some +dnl Test if 'bool' is a builtin type in the configured C/C++ compiler. Some dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc dnl 2.6.3 does, in anticipation of the ANSI C++ standard. dnl -dnl Treat the configuration-variable specially here, since we're directly -dnl substituting its value (i.e., 1/0). -dnl dnl $1 is the shell variable to store the result in, if not $cv_cv_builtin_bool AC_DEFUN([CF_BOOL_DECL], [ -AC_MSG_CHECKING(if we should include stdbool.h) - -AC_CACHE_VAL(cf_cv_header_stdbool_h,[ - AC_TRY_COMPILE([],[bool foo = false; (void)foo], - [cf_cv_header_stdbool_h=0], - [AC_TRY_COMPILE([ -#ifndef __BEOS__ -#include <stdbool.h> -#endif -],[bool foo = false; (void)foo], - [cf_cv_header_stdbool_h=1], - [cf_cv_header_stdbool_h=0])])]) - -if test "$cf_cv_header_stdbool_h" = 1 -then AC_MSG_RESULT(yes) -else AC_MSG_RESULT(no) -fi - -AC_MSG_CHECKING([for builtin bool type]) - -AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[ - AC_TRY_COMPILE([ -#include <stdio.h> -#include <sys/types.h> -],[bool x = false; (void)x], - [ifelse($1,,cf_cv_builtin_bool,[$1])=1], - [ifelse($1,,cf_cv_builtin_bool,[$1])=0]) - ]) - -if test "$ifelse($1,,cf_cv_builtin_bool,[$1])" = 1 -then AC_MSG_RESULT(yes) -else AC_MSG_RESULT(no) -fi +AC_REQUIRE([CF_C99_STDBOOL_H]) +AC_CACHE_CHECK(for builtin bool type, ifelse($1,,cf_cv_builtin_bool,[$1]),[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +$ac_includes_default +],[bool x = false; (void)x])], + [ifelse($1,,cf_cv_builtin_bool,[$1])=yes], + [ifelse($1,,cf_cv_builtin_bool,[$1])=no])]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_BOOL_SIZE version: 20 updated: 2023/02/18 17:41:25 +dnl CF_BOOL_SIZE version: 22 updated: 2025/02/22 20:49:45 dnl ------------ dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type). dnl Don't bother looking for bool.h, since it has been deprecated. @@ -654,6 +629,7 @@ dnl If the current compiler is C rather than C++, we get the bool definition dnl from <stdbool.h>. AC_DEFUN([CF_BOOL_SIZE], [ +AC_REQUIRE([CF_C99_STDBOOL_H]) AC_CHECK_SIZEOF(bool,,[ $ac_includes_default @@ -669,7 +645,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -693,7 +669,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -702,7 +678,7 @@ $ac_includes_default int main(void) { FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { + if (fp != NULL) { bool x = true; if ((bool)(-x) >= 0) fputs("unsigned ", fp); @@ -741,7 +717,7 @@ if test "$cf_cv_type_of_bool" = unknown ; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_BUILD_CC version: 11 updated: 2022/12/04 15:40:08 +dnl CF_BUILD_CC version: 14 updated: 2024/12/14 11:58:01 dnl ----------- dnl If we're cross-compiling, allow the user to override the tools and their dnl options. The configure script is oriented toward identifying the host @@ -819,7 +795,7 @@ if test "$cross_compiling" = yes ; then AC_TRY_RUN([#include <stdio.h> int main(int argc, char *argv[]) { - ${cf_cv_main_return:-return}(argc < 0 || argv == 0 || argv[0] == 0); + ${cf_cv_main_return:-return}(argc < 0 || argv == (void*)0 || argv[0] == (void*)0); } ], cf_ok_build_cc=yes, @@ -858,7 +834,7 @@ AC_SUBST(BUILD_EXEEXT) AC_SUBST(BUILD_OBJEXT) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25 +dnl CF_C11_NORETURN version: 5 updated: 2025/12/14 17:40:20 dnl --------------- AC_DEFUN([CF_C11_NORETURN], [ @@ -871,12 +847,12 @@ AC_MSG_RESULT($enable_stdnoreturn) if test $enable_stdnoreturn = yes; then AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn, - [AC_TRY_COMPILE([ + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default #include <stdnoreturn.h> static _Noreturn void giveup(void) { exit(0); } ], - [if (feof(stdin)) giveup()], + [if (feof(stdin)) giveup()])], cf_cv_c11_noreturn=yes, cf_cv_c11_noreturn=no) ]) @@ -896,6 +872,27 @@ AC_SUBST(HAVE_STDNORETURN_H) AC_SUBST(STDC_NORETURN) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_C99_STDBOOL_H version: 2 updated: 2025/12/24 12:27:29 +dnl ---------------- +dnl Check if we can compile using <stdbool.h> and get a valid "bool" type. +AC_DEFUN([CF_C99_STDBOOL_H], +[ +AC_CACHE_CHECK(if we can include stdbool.h,cf_cv_header_stdbool_h,[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +$ac_includes_default +#include <stdbool.h> +],[bool foo = false; (void)foo])], + [cf_cv_header_stdbool_h=yes], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[bool foo = false; (void)foo])], + [cf_cv_header_stdbool_h=no])])]) + +if test "$cf_cv_header_stdbool_h" = yes +then USE_STDBOOL_H=1 +else USE_STDBOOL_H=0 +fi +AC_SUBST(USE_STDBOOL_H) +])dnl +dnl --------------------------------------------------------------------------- dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46 dnl --------------- dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content @@ -960,7 +957,7 @@ case "$CC" in esac ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CFG_DEFAULTS version: 16 updated: 2021/01/04 19:33:05 +dnl CF_CFG_DEFAULTS version: 17 updated: 2025/12/24 12:27:29 dnl --------------- dnl Determine the default configuration into which we'll install ncurses. This dnl can be overridden by the user's command-line options. There's two items to @@ -990,7 +987,7 @@ AC_MSG_RESULT($prefix) if test "x$prefix" = "xNONE" ; then AC_MSG_CHECKING(for default include-directory) -test -n "$verbose" && echo 1>&AC_FD_MSG +test -n "$verbose" && echo 1>&AS_MESSAGE_FD for cf_symbol in \ "$includedir" \ "$includedir/ncurses" \ @@ -1005,31 +1002,31 @@ do if test -f "$cf_dir/curses.h" ; then if ( ${FGREP-fgrep} NCURSES_VERSION "$cf_dir/curses.h" >/dev/null 2>&1 ) ; then includedir="$cf_symbol" - test -n "$verbose" && echo $ECHO_N " found " 1>&AC_FD_MSG + test -n "$verbose" && echo $ECHO_N " found " 1>&AS_MESSAGE_FD break fi fi - test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG + test -n "$verbose" && echo " tested $cf_dir" 1>&AS_MESSAGE_FD done AC_MSG_RESULT($includedir) fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CGETENT version: 7 updated: 2023/02/18 17:41:25 +dnl CF_CGETENT version: 8 updated: 2025/12/24 12:27:29 dnl ---------- dnl Check if the terminal-capability database functions are available. If not, dnl ncurses has a much-reduced version. AC_DEFUN([CF_CGETENT],[ AC_CACHE_CHECK(for terminal-capability database functions,cf_cv_cgetent,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default],[ - char temp[128]; + char temp[[128]]; char *buf = temp; char *db_array = temp; cgetent(&buf, &db_array, "vt100"); cgetcap(buf, "tc", '='); cgetmatch(buf, "tc"); - ], + ])], [cf_cv_cgetent=yes], [cf_cv_cgetent=no]) ]) @@ -1038,10 +1035,10 @@ if test "$cf_cv_cgetent" = yes then AC_DEFINE(HAVE_BSD_CGETENT,1,[Define to 1 if we have BSD cgetent]) AC_CACHE_CHECK(if cgetent uses const parameter,cf_cv_cgetent_const,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers" $ac_includes_default],[ - char temp[128]; + char temp[[128]]; char *buf = temp; #ifndef _NETBSD_SOURCE /* given, since April 2004 in stdlib.h */ const char *db_array = temp; @@ -1049,7 +1046,7 @@ $ac_includes_default],[ #endif cgetcap(buf, "tc", '='); cgetmatch(buf, "tc"); - ], + ])], [cf_cv_cgetent_const=yes], [cf_cv_cgetent_const=no]) ]) @@ -1095,7 +1092,7 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_ENVIRON version: 5 updated: 2023/02/18 17:41:25 +dnl CF_CHECK_ENVIRON version: 6 updated: 2025/12/24 12:27:29 dnl ---------------- dnl Check for data that is usually declared in <unistd.h>, e.g., the 'environ' dnl variable. Define a DECL_xxx symbol if we must declare it ourselves. @@ -1105,9 +1102,9 @@ dnl $2 = the assumed type AC_DEFUN([CF_CHECK_ENVIRON], [ AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default], - ifelse([$2],,void*,[$2]) x = (ifelse([$2],,void*,[$2])) $1; (void)x, + [ifelse([$2],,void*,[$2]) x = (ifelse([$2],,void*,[$2])) $1; (void)x])], [cf_cv_dcl_$1=yes], [cf_cv_dcl_$1=no]) ]) @@ -1121,7 +1118,7 @@ fi CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_ERRNO version: 14 updated: 2023/02/18 17:41:25 +dnl CF_CHECK_ERRNO version: 15 updated: 2025/12/23 18:53:34 dnl -------------- dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g., dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it @@ -1132,10 +1129,10 @@ dnl $2 = the assumed type AC_DEFUN([CF_CHECK_ERRNO], [ AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default #include <errno.h> ], - ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x, + [ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x])], [cf_cv_dcl_$1=yes], [cf_cv_dcl_$1=no]) ]) @@ -1149,7 +1146,7 @@ fi CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_EXTERN_DATA version: 5 updated: 2021/09/04 06:35:04 +dnl CF_CHECK_EXTERN_DATA version: 6 updated: 2025/12/23 18:53:34 dnl -------------------- dnl Check for existence of external data in the current set of libraries. If dnl we can modify it, it is real enough. @@ -1158,11 +1155,11 @@ dnl $2 = its type AC_DEFUN([CF_CHECK_EXTERN_DATA], [ AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[ - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #undef $1 extern $2 $1; ], - [$1 = 2], + [$1 = 2])], [cf_cv_have_$1=yes], [cf_cv_have_$1=no]) ]) @@ -1174,7 +1171,7 @@ fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_FVISIBILITY version: 2 updated: 2020/04/04 16:16:13 +dnl CF_CHECK_FVISIBILITY version: 3 updated: 2025/12/24 12:27:29 dnl -------------------- dnl Check whether the compiler understands -fvisibility=hidden dnl @@ -1185,18 +1182,18 @@ AC_DEFUN([CF_CHECK_FVISIBILITY],[ AC_CACHE_CHECK(if $1 -fvisibility=hidden option works,$3,[ cf_save_cflags="[$]$2" $2="[$]$2 -fvisibility=hidden" - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ __attribute__ ((visibility("default"))) int somefunc() {return 42;} ],[ if (somefunc()) return 1; -], +])], [$3=yes], [$3=no]) $2=$cf_save_cflags ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_GETENV version: 4 updated: 2023/12/03 10:18:09 +dnl CF_CHECK_GETENV version: 5 updated: 2024/12/14 16:09:34 dnl --------------- dnl Check if repeated getenv calls return the same pointer, e.g., it does not dnl discard the previous pointer when returning a new one. @@ -1248,7 +1245,7 @@ int main(void) for (j = 0; environ[j]; ++j) { mynames[j] = str_alloc(environ[j]); equals = strchr(mynames[j], '='); - if (equals != 0) { + if (equals != NULL) { *equals++ = '\\0'; myvalues[j] = str_alloc(equals); } else { @@ -1380,26 +1377,26 @@ if test "$cf_cv_check_gpm_wgetch" != yes ; then fi ])])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_LIBSSP version: 1 updated: 2021/10/30 10:40:19 +dnl CF_CHECK_LIBSSP version: 2 updated: 2025/12/24 12:27:29 dnl --------------- dnl Check if libssp is needed, e.g., to work around misconfigured libraries dnl used in cross-compiling to MinGW. AC_DEFUN([CF_CHECK_LIBSSP],[ AC_CACHE_CHECK(if ssp library is needed,cf_cv_need_libssp,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <sys/types.h> #include <dirent.h> ],[ DIR *dp = opendir("."); -],cf_cv_need_libssp=no,[ +])],cf_cv_need_libssp=no,[ cf_save_LIBS="$LIBS" LIBS="$LIBS -lssp" - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <sys/types.h> #include <dirent.h> ],[ DIR *dp = opendir("."); - ],cf_cv_need_libssp=yes, + ])],cf_cv_need_libssp=yes, cf_cv_need_libssp=maybe) LIBS="$cf_save_LIBS" ])dnl @@ -1411,7 +1408,7 @@ then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_LIBTOOL_VERSION version: 2 updated: 2021/05/01 16:24:34 +dnl CF_CHECK_LIBTOOL_VERSION version: 3 updated: 2024/06/12 04:19:01 dnl ------------------------ dnl Show the version of libtool dnl @@ -1427,6 +1424,7 @@ then AC_MSG_CHECKING(version of $LIBTOOL) CF_LIBTOOL_VERSION AC_MSG_RESULT($cf_cv_libtool_version) + ifdef([LT_PACKAGE_VERSION],,[ if test -n "$cf_cv_libtool_version" then cf_check_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' -e 's,[[()]],...,g' -e 's,[[ ]],-,g' -e '2,$d'` @@ -1440,12 +1438,107 @@ then else AC_MSG_ERROR(No version found for $LIBTOOL) fi + ]) else AC_MSG_ERROR(GNU libtool has not been found) fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_WCHAR_H version: 5 updated: 2023/12/03 09:21:34 +dnl CF_CHECK_MULTIUSER version: 1 updated: 2025/09/13 11:43:46 +dnl ------------------ +dnl Runtime features which check for root permissions apply only to multiuser +dnl systems. Check for single-user systems by inspecting /etc/passwd. +AC_DEFUN([CF_CHECK_MULTIUSER],[ +AC_CACHE_CHECK(for conventional multiuser system,cf_cv_multiuser,[ + cf_cv_multiuser=no + if test -f /etc/passwd + then + sed \ + -e '/true$/d' \ + -e '/false$/d' \ + -e '/nologin$/d' \ + -e '/^[[^:]]*:[[^:]]*:[[0-9]]:/d' \ + -e '/^[[^:]]*:[[^:]]*:[[0-9]][[0-9]]:/d' \ + -e '/:$/d' < /etc/passwd >conftest.tmp + test -s conftest.tmp && cf_cv_multiuser=yes + rm -f conftest.tmp + fi +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_NAMED_PIPES version: 2 updated: 2025/12/24 12:27:29 +dnl -------------------- +dnl Check for existence of Windows named-pipe functions, set cache variable +dnl to reflect the result. +AC_DEFUN([CF_CHECK_NAMED_PIPES],[ +AC_CACHE_CHECK(for named pipe functions,cf_cv_named_pipes,[ + cf_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN" + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <windows.h>], + [ + HANDLE handle = 0; + ULONG pPid = 0; + if (GetNamedPipeInfo(handle, NULL, NULL, NULL, NULL)) { + if (GetNamedPipeServerProcessId(handle, &pPid)) { + ${cf_cv_main_return:-return} (0); + } + } + ])],[cf_cv_named_pipes=yes],[cf_cv_named_pipes=no]) + CPPFLAGS="$cf_save_CPPFLAGS" +])dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_TBL_X_OPTION version: 2 updated: 2025/11/11 20:09:36 +dnl --------------------- +AC_DEFUN([CF_CHECK_TBL_X_OPTION],[ +AC_REQUIRE([CF_PROG_TBL]) + +AC_CACHE_CHECK(if $NROFF_TBL supports 'x' column modifier,cf_cv_tbl_x_option_okay,[ + if test "$cross_compiling" = yes ; then + cf_cv_tbl_x_option_okay=unknown + else + cf_cv_tbl_x_option_okay=no + cat > conftest <<-CF_EOF + .TS + L. + table cell + .TE + CF_EOF + if $NROFF_TBL < conftest > /dev/null 2>&1 + then + cat > conftest <<-CF_EOF + .TS + Lx. + table cell + .TE + CF_EOF + if $NROFF_TBL < conftest > /dev/null 2>&1 + then + cf_cv_tbl_x_option_okay=yes + fi + else + AC_MSG_ERROR([$NROFF_TBL not available.]) + fi + rm -f conftest + fi +]) + +TBL_X_OPTION=$cf_cv_tbl_x_option_okay +AC_SUBST(TBL_X_OPTION) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_TYPE2 version: 3 updated: 2025/08/08 20:44:18 +dnl -------------- +dnl Check if the given type can be declared via the given header. +dnl $1 = the type to check +dnl $2 = the header (i.e., not one of the default includes) +AC_DEFUN([CF_CHECK_TYPE2],[ + AC_CHECK_TYPES($1,,,[ +$ac_includes_default +ifelse($2,,,[#include <$2>])]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_WCHAR_H version: 6 updated: 2025/12/24 12:27:29 dnl ---------------- dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED AC_DEFUN([CF_CHECK_WCHAR_H],[ @@ -1454,7 +1547,7 @@ wchar.h \ wctype.h \ ) AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[ -AC_TRY_COMPILE( +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [ $ac_includes_default #ifdef HAVE_WCHAR_H @@ -1465,7 +1558,7 @@ $ac_includes_default #endif ],[ wint_t foo = 0; - int bar = iswpunct(foo); (void) bar], + int bar = iswpunct(foo); (void) bar])], [cf_cv_wchar_h_okay=yes], [cf_cv_wchar_h_okay=no])]) @@ -1475,7 +1568,7 @@ then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_WCWIDTH_GRAPHICS version: 4 updated: 2023/12/03 10:17:07 +dnl CF_CHECK_WCWIDTH_GRAPHICS version: 5 updated: 2024/12/14 16:09:34 dnl ------------------------- dnl Most "modern" terminal emulators are based to some degree on VT100, and dnl should support line-drawing. Even with Unicode. There is a problem. @@ -1594,8 +1687,8 @@ main(void) setlocale(LC_ALL, "en_US.UTF-8") || setlocale(LC_ALL, "en_US.utf8") || setlocale(LC_ALL, "en_US.utf-8")) { - if ((fp = fopen("conftest.in", "r")) != 0) { - while (fgets(buffer, MY_LEN, fp) != 0) { + if ((fp = fopen("conftest.in", "r")) != NULL) { + while (fgets(buffer, MY_LEN, fp) != NULL) { if (*buffer == '-') { fprintf(stderr, "\\t%s", buffer); } else if (sscanf(buffer, "%x %s", &value, notes) == 2) { @@ -1619,7 +1712,7 @@ main(void) ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25 +dnl CF_CLANG_COMPILER version: 11 updated: 2025/12/14 17:46:02 dnl ----------------- dnl Check if the given compiler is really clang. clang's C driver defines dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does @@ -1638,12 +1731,12 @@ ifelse([$2],,CLANG_COMPILER,[$2])=no if test "$ifelse([$1],,[$1],GCC)" = yes ; then AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler) cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" - AC_TRY_COMPILE([],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[ #ifdef __clang__ #else #error __clang__ is not defined #endif -],[ifelse([$2],,CLANG_COMPILER,[$2])=yes +])],[ifelse([$2],,CLANG_COMPILER,[$2])=yes ],[]) ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) @@ -1672,9 +1765,9 @@ if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then AC_MSG_CHECKING(if option $cf_clang_opt works) cf_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $cf_clang_opt" - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdio.h>],[ - printf("hello!\\n");],[ + printf("hello!\\n");])],[ cf_clang_optok=yes],[ cf_clang_optok=no]) AC_MSG_RESULT($cf_clang_optok) @@ -1687,7 +1780,7 @@ if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then fi ]) dnl --------------------------------------------------------------------------- -dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50 +dnl CF_CONST_X_STRING version: 10 updated: 2025/12/14 17:40:20 dnl ----------------- dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most dnl character-strings. @@ -1712,22 +1805,22 @@ AC_REQUIRE([AC_PATH_XTRA]) CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) -AC_TRY_COMPILE( +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [ -#include <stdlib.h> +$ac_includes_default #include <X11/Intrinsic.h> ], -[String foo = malloc(1); free((void*)foo)],[ +[String foo = malloc(1); free((void*)foo)])],[ AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ - AC_TRY_COMPILE( + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [ #undef _CONST_X_STRING #define _CONST_X_STRING /* X11R7.8 (perhaps) */ #undef XTSTRINGDEFINES /* X11R5 and later */ -#include <stdlib.h> +$ac_includes_default #include <X11/Intrinsic.h> - ],[String foo = malloc(1); *foo = 0],[ + ],[String foo = malloc(1); *foo = 0])],[ cf_cv_const_x_string=no ],[ cf_cv_const_x_string=yes @@ -1748,7 +1841,7 @@ esac ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CPP_OVERRIDE version: 1 updated: 2022/08/20 16:07:10 +dnl CF_CPP_OVERRIDE version: 2 updated: 2024/11/09 18:07:29 dnl --------------- dnl Check if the C++ compiler accepts the override keyword. This is a C++-11 dnl feature. @@ -1763,7 +1856,7 @@ AC_CACHE_CHECK(if $CXX accepts override keyword,cf_cv_cpp_override,[ class base { public: - virtual int foo(float x) = 0; + virtual int foo(float x) = 0; }; @@ -1819,7 +1912,7 @@ fi test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT,1,[Define to 1 if C++ has parameter initialization]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CPP_STATIC_CAST version: 3 updated: 2013/04/13 18:03:21 +dnl CF_CPP_STATIC_CAST version: 4 updated: 2025/12/24 12:27:29 dnl ------------------ dnl Check if the C++ compiler accepts static_cast in generics. This appears to dnl not be supported in g++ before 3.0 @@ -1831,7 +1924,7 @@ AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[ AC_LANG_SAVE AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ class NCursesPanel { public: @@ -1863,7 +1956,7 @@ public: virtual ~NCursesUserPanel() {}; }; ],[ - const char* p_UserData = static_cast<char*>(0)], + const char* p_UserData = static_cast<char*>(0)])], [cf_cv_cpp_static_cast=yes], [cf_cv_cpp_static_cast=no]) @@ -1903,19 +1996,19 @@ AC_DEFUN([CF_CXX_AR_FLAGS],[ AC_SUBST(CXX_ARFLAGS) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CXX_IOSTREAM_NAMESPACE version: 2 updated: 2012/10/06 17:56:13 +dnl CF_CXX_IOSTREAM_NAMESPACE version: 3 updated: 2025/12/24 12:27:29 dnl ------------------------- dnl For c++, check if iostream uses "std::" namespace. AC_DEFUN([CF_CXX_IOSTREAM_NAMESPACE],[ AC_CHECK_HEADERS(iostream) if test x"$ac_cv_header_iostream" = xyes ; then AC_MSG_CHECKING(if iostream uses std-namespace) - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <iostream> using std::endl; using std::cerr;],[ cerr << "testing" << endl; -],[cf_iostream_namespace=yes],[cf_iostream_namespace=no]) +])],[cf_iostream_namespace=yes],[cf_iostream_namespace=no]) AC_MSG_RESULT($cf_iostream_namespace) if test "$cf_iostream_namespace" = yes ; then AC_DEFINE(IOSTREAM_NAMESPACE,1,[Define to 1 if C++ has namespace iostream]) @@ -1923,7 +2016,7 @@ cerr << "testing" << endl; fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_C_INLINE version: 6 updated: 2019/09/07 13:38:36 +dnl CF_C_INLINE version: 7 updated: 2025/12/24 12:27:29 dnl ----------- dnl Check if the C compiler supports "inline". dnl $1 is the name of a shell variable to set if inline is supported @@ -1945,8 +2038,8 @@ if test "$ac_cv_c_inline" != no ; then AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[ cf_save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS --param max-inline-insns-single=$2" - AC_TRY_COMPILE([inline int foo(void) { return 1; }], - [${cf_cv_main_return:-return} foo()], + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([inline int foo(void) { return 1; }], + [${cf_cv_main_return:-return} foo()])], [cf_cv_gcc_inline=yes], [cf_cv_gcc_inline=no]) CFLAGS=$cf_save_CFLAGS @@ -2196,7 +2289,7 @@ AC_ARG_ENABLE(rpath, AC_MSG_RESULT($cf_cv_enable_rpath) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48 +dnl CF_ENABLE_STRING_HACKS version: 7 updated: 2025/11/11 20:09:36 dnl ---------------------- dnl On a few platforms, the compiler and/or loader nags with untruthful dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect, @@ -2207,10 +2300,10 @@ dnl functions versus the total of incorrect uses. Samples of a few thousand dnl instances are meaningless compared to the hundreds of millions of lines of dnl existing C code. dnl -dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some +dnl strlcat/strlcpy are standard as of POSIX.1-2024, and are available on some dnl platforms, in implementations of varying quality. Likewise, snprintf is dnl standard - but evolved through phases, and older implementations are likely -dnl to yield surprising results, as documented in manpages on various systems. +dnl to yield surprising results, as documented in man pages on various systems. AC_DEFUN([CF_ENABLE_STRING_HACKS], [ AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings) @@ -2274,7 +2367,7 @@ AC_DEFUN([CF_ERRNO], CF_CHECK_ERRNO(errno) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_ETIP_DEFINES version: 7 updated: 2023/10/28 11:59:01 +dnl CF_ETIP_DEFINES version: 8 updated: 2025/12/24 12:27:29 dnl --------------- dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between dnl math.h and builtin.h, only for ncurses @@ -2296,9 +2389,9 @@ do CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -Iinclude -I${srcdir}/include" test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}" test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}" -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <etip.h.in> -],[],[ +],[])],[ test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math}) test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp}) cf_result="$cf_math $cf_excp" @@ -2310,7 +2403,7 @@ AC_MSG_RESULT([${cf_result:-(none)}]) CXXFLAGS="$cf_save_CXXFLAGS" ]) dnl --------------------------------------------------------------------------- -dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42 +dnl CF_FIND_LINKAGE version: 23 updated: 2025/12/22 04:16:14 dnl --------------- dnl Find a library (specifically the linkage used in the code fragment), dnl searching for it if it is not already in the library path. @@ -2333,7 +2426,7 @@ dnl $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3 AC_DEFUN([CF_FIND_LINKAGE],[ # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these -# will be set on completion of the AC_TRY_LINK below. +# will be set on completion of the AC_LINK_IFELSE below. cf_cv_header_path_$3= cf_cv_library_path_$3= @@ -2341,7 +2434,7 @@ CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) cf_save_LIBS="$LIBS" -AC_TRY_LINK([$1],[$2],[ +AC_LINK_IFELSE([AC_LANG_PROGRAM([$1],[$2])],[ cf_cv_find_linkage_$3=yes cf_cv_header_path_$3=/usr/include cf_cv_library_path_$3=/usr/lib @@ -2349,7 +2442,7 @@ AC_TRY_LINK([$1],[$2],[ LIBS="-l$3 $7 $cf_save_LIBS" -AC_TRY_LINK([$1],[$2],[ +AC_LINK_IFELSE([AC_LANG_PROGRAM([$1],[$2])],[ cf_cv_find_linkage_$3=yes cf_cv_header_path_$3=/usr/include cf_cv_library_path_$3=/usr/lib @@ -2371,7 +2464,7 @@ AC_TRY_LINK([$1],[$2],[ CF_VERBOSE(... testing $cf_cv_header_path_$3) CPPFLAGS="$cf_save_CPPFLAGS" CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3) - AC_TRY_COMPILE([$1],[$2],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1],[$2])],[ CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) cf_cv_find_linkage_$3=maybe cf_test_CPPFLAGS="$CPPFLAGS" @@ -2391,7 +2484,7 @@ AC_TRY_LINK([$1],[$2],[ ifelse([$6],,,[ CPPFLAGS="$cf_test_CPPFLAGS" LIBS="-l$3 $7 $cf_save_LIBS" - AC_TRY_LINK([$1],[$2],[ + AC_LINK_IFELSE([AC_LANG_PROGRAM([$1],[$2])],[ CF_VERBOSE(... found $3 library in system) cf_cv_find_linkage_$3=yes]) CPPFLAGS="$cf_save_CPPFLAGS" @@ -2407,7 +2500,7 @@ AC_TRY_LINK([$1],[$2],[ CPPFLAGS="$cf_test_CPPFLAGS" LIBS="-l$3 $7 $cf_save_LIBS" LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3" - AC_TRY_LINK([$1],[$2],[ + AC_LINK_IFELSE([AC_LANG_PROGRAM([$1],[$2])],[ CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) cf_cv_find_linkage_$3=yes cf_cv_library_file_$3="-l$3" @@ -2534,7 +2627,7 @@ fi AC_SUBST(EXTRA_CFLAGS) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_FOPEN_BIN_R version: 3 updated: 2023/01/05 18:05:46 +dnl CF_FOPEN_BIN_R version: 4 updated: 2024/12/14 16:09:34 dnl -------------- dnl Check if fopen works when the "b" (binary) flag is added to the mode dnl parameter. POSIX ignores the "b", which c89 specified. Some very old @@ -2548,14 +2641,14 @@ int main(void) { FILE *fp = fopen("conftest.tmp", "wb"); int rc = 0; - if (fp != 0) { + if (fp != NULL) { int p, q; for (p = 0; p < 256; ++p) { fputc(p, fp); } fclose(fp); fp = fopen("conftest.tmp", "rb"); - if (fp != 0) { + if (fp != NULL) { for (p = 0; p < 256; ++p) { q = fgetc(fp); if (q != p) { @@ -2588,7 +2681,7 @@ unset ac_ct_$1 unset $1 ])dnl dnl --------------------------------------------------------------------------- -dnl CF_FUNC_DLSYM version: 4 updated: 2015/09/12 14:46:44 +dnl CF_FUNC_DLSYM version: 6 updated: 2025/12/24 12:27:29 dnl ------------- dnl Test for dlsym() and related functions, as well as libdl. dnl @@ -2608,13 +2701,16 @@ if test "$cf_have_dlsym" = yes ; then test "$cf_have_libdl" = yes && { CF_ADD_LIB(dl) } AC_MSG_CHECKING(whether able to link to dl*() functions) - AC_TRY_LINK([#include <dlfcn.h>],[ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ + #include <stdio.h> + #include <dlfcn.h> + ],[ void *obj; - if ((obj = dlopen("filename", 0)) != 0) { + if ((obj = dlopen("filename", 0)) != NULL) { if (dlsym(obj, "symbolname") == 0) { dlclose(obj); } - }],[ + }])],[ AC_DEFINE(HAVE_LIBDL,1,[Define to 1 if we have dl library])],[ AC_MSG_ERROR(Cannot link test program for libdl)]) AC_MSG_RESULT(ok) @@ -2623,19 +2719,36 @@ else fi ]) dnl --------------------------------------------------------------------------- -dnl CF_FUNC_GETTIME version: 2 updated: 2023/02/25 08:45:56 +dnl CF_FUNC_GETTIME version: 4 updated: 2025/12/23 18:53:34 dnl --------------- dnl Check for gettimeofday or clock_gettime. In 2023, the former is still more dnl widely supported, but "deprecated" (2008), so we will use the latter if it dnl is available, to reduce compiler warnings. AC_DEFUN([CF_FUNC_GETTIME],[ -AC_CACHE_CHECK(for clock_gettime,cf_cv_func_clock_gettime,[ - AC_TRY_LINK([#include <time.h>], +cf_save_libs="$LIBS" +AC_CHECK_FUNC(clock_gettime, + cf_cv_test_clock_gettime=yes, + AC_CHECK_LIB(rt, clock_gettime, + [LIBS="-lrt $LIBS" + cf_cv_test_clock_gettime=yes], + cf_cv_test_clock_gettime=no)) + +if test "$cf_cv_test_clock_gettime" = yes ; then +AC_CACHE_CHECK(if clock_gettime links,cf_cv_func_clock_gettime,[ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ +$ac_includes_default +#include <time.h> + ], [struct timespec ts; - int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts], + int rc = clock_gettime(CLOCK_REALTIME, &ts) + + clock_gettime(CLOCK_MONOTONIC, &ts); + (void) rc; (void)ts])], [cf_cv_func_clock_gettime=yes], [cf_cv_func_clock_gettime=no]) ]) +else + cf_cv_func_clock_gettime=no +fi if test "$cf_cv_func_clock_gettime" = yes then @@ -2650,17 +2763,17 @@ AC_CHECK_LIB(bsd, gettimeofday, fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_FUNC_GETTTYNAM version: 2 updated: 2023/01/05 18:06:28 +dnl CF_FUNC_GETTTYNAM version: 5 updated: 2025/12/24 12:27:29 dnl ----------------- dnl Check if the 4.3BSD function getttyname exists, as well as if <ttyent.h> dnl defines the _PATH_TTYS symbol. If the corresponding file exists, but the dnl other checks fail, just define HAVE_PATH_TTYS. AC_DEFUN([CF_FUNC_GETTTYNAM],[ AC_CACHE_CHECK(if _PATH_TTYS is defined in ttyent.h,cf_cv_PATH_TTYS,[ -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <stdio.h> #include <ttyent.h>],[ -FILE *fp = fopen(_PATH_TTYS, "r"); (void)fp], +FILE *fp = fopen(_PATH_TTYS, "r"); (void)fp])], [cf_cv_PATH_TTYS=yes], [cf_cv_PATH_TTYS=no])]) @@ -2682,12 +2795,11 @@ then AC_CACHE_CHECK(if _PATH_TTYS file exists,cf_cv_have_PATH_TTYS,[ AC_TRY_RUN([ $ac_includes_default - #include <ttyent.h> int main(void) { FILE *fp = fopen(_PATH_TTYS, "r"); - ${cf_cv_main_return:-return} (fp == 0); + ${cf_cv_main_return:-return} (fp == NULL); }], [cf_cv_have_PATH_TTYS=yes], [cf_cv_have_PATH_TTYS=no], @@ -2699,11 +2811,11 @@ if test $cf_cv_PATH_TTYS != no then AC_DEFINE(HAVE_PATH_TTYS,1,[define to 1 if system can map tty name to terminal type]) AC_CACHE_CHECK(for getttynam,cf_cv_func_getttynam,[ - AC_TRY_LINK([#include <ttyent.h>], - [struct ttyent *fp = getttynam("/dev/tty"); (void)fp], + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <ttyent.h>], + [struct ttyent *fp = getttynam("/dev/tty"); (void)fp])], [cf_cv_func_getttynam=yes], [cf_cv_func_getttynam=no])]) - test "$cf_cv_func_getttynam" = yes && AC_DEFINE(HAVE_GETTTYNAM) + test "$cf_cv_func_getttynam" = yes && AC_DEFINE(HAVE_GETTTYNAM,1,[define to 1 if the system has getttynam()]) fi ])dnl dnl --------------------------------------------------------------------------- @@ -2775,7 +2887,7 @@ int main(void) { test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()]) ]) dnl --------------------------------------------------------------------------- -dnl CF_FUNC_OPENPTY version: 7 updated: 2023/12/03 09:21:34 +dnl CF_FUNC_OPENPTY version: 8 updated: 2025/12/24 12:27:29 dnl --------------- dnl Check for openpty() function, along with <pty.h> header. It may need the dnl "util" library as well. @@ -2787,13 +2899,13 @@ AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[ test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) } for cf_header in pty.h libutil.h util.h do - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <$cf_header> ],[ int x = openpty((int *)0, (int *)0, (char *)0, (struct termios *)0, (struct winsize *)0); (void)x; -],[ +])],[ cf_cv_func_openpty=$cf_header break ],[ @@ -2866,14 +2978,14 @@ int main(void) { test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL,1,[Define to 1 if the poll function seems to work]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_FUNC_TERMIOS version: 3 updated: 2012/10/06 17:56:13 +dnl CF_FUNC_TERMIOS version: 4 updated: 2025/12/24 12:27:29 dnl --------------- dnl Some old/broken variations define tcgetattr() only as a macro in dnl termio(s).h AC_DEFUN([CF_FUNC_TERMIOS],[ AC_REQUIRE([CF_STRUCT_TERMIOS]) AC_CACHE_CHECK(for tcgetattr, cf_cv_have_tcgetattr,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <sys/types.h> #ifdef HAVE_UNISTD_H #include <unistd.h> @@ -2889,13 +3001,13 @@ AC_TRY_LINK([ #endif ],[ TTY foo; -tcgetattr(1, &foo);], +tcgetattr(1, &foo);])], [cf_cv_have_tcgetattr=yes], [cf_cv_have_tcgetattr=no])]) test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_FUNC_VSSCANF version: 8 updated: 2023/12/03 19:09:59 +dnl CF_FUNC_VSSCANF version: 9 updated: 2025/12/24 12:27:29 dnl --------------- dnl Check for vsscanf() function, which is in c9x but generally not in earlier dnl versions of C. It can often be simulated by other functions on older @@ -2903,7 +3015,7 @@ dnl systems (where FILE is not opaque). AC_DEFUN([CF_FUNC_VSSCANF], [ AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> #include <stdio.h> @@ -2917,8 +3029,8 @@ myfunc(const char *str, const char *fmt, ...) } ],[ myfunc("55", "%d"); -],[cf_cv_func_vsscanf=vsscanf],[ -AC_TRY_LINK([ +])],[cf_cv_func_vsscanf=vsscanf],[ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> #include <stdio.h>],[ FILE strbuf; @@ -2928,8 +3040,8 @@ AC_TRY_LINK([ strbuf._ptr = strbuf._base = (unsigned char *) str; strbuf._cnt = strlen(str); strbuf._file = _NFILE; - return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[ -AC_TRY_LINK([ + return (vfscanf(&strbuf, "%d", ap))])],[cf_cv_func_vsscanf=vfscanf],[ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> #include <stdio.h>],[ FILE strbuf; @@ -2939,7 +3051,7 @@ AC_TRY_LINK([ strbuf._ptr = strbuf._base = (unsigned char *) str; strbuf._cnt = strlen(str); strbuf._file = _NFILE; - return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[ + return (_doscan(&strbuf, "%d", ap))])],[cf_cv_func_vsscanf=_doscan],[ cf_cv_func_vsscanf=no])])])]) case "$cf_cv_func_vsscanf" in @@ -2950,7 +3062,7 @@ esac ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 +dnl CF_GCC_ATTRIBUTES version: 28 updated: 2025/12/25 18:43:31 dnl ----------------- dnl Test for availability of useful gcc __attribute__ directives to quiet dnl compiler warnings. Though useful, not all are supported -- and contrary @@ -2977,7 +3089,8 @@ cat > conftest.i <<EOF EOF if test "$GCC" = yes then - AC_CHECKING([for $CC __attribute__ directives]) + AC_MSG_CHECKING([for $CC __attribute__ directives]) + test -n "$verbose" && AC_MSG_RESULT() cat > "conftest.$ac_ext" <<EOF #line __oline__ "${as_me:-configure}" #include <stdio.h> @@ -3005,7 +3118,7 @@ EOF do CF_UPPER(cf_ATTRIBUTE,$cf_attribute) cf_directive="__attribute__(($cf_attribute))" - echo "checking for $CC $cf_directive" 1>&AC_FD_CC + echo "checking for $CC $cf_directive" 1>&AS_MESSAGE_LOG_FD case "$cf_attribute" in (printf) @@ -3080,7 +3193,7 @@ CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59 +dnl CF_GCC_WARNINGS version: 45 updated: 2025/12/24 09:07:25 dnl --------------- dnl Check if the compiler supports useful warning options. There's a few that dnl we don't use, simply because they're too noisy: @@ -3121,7 +3234,8 @@ then # remark #981: operands are evaluated in unspecified order # warning #279: controlling expression is constant - AC_CHECKING([for $CC warning options]) + AC_MSG_CHECKING([for $CC warning options]) + test -n "$verbose" && AC_MSG_RESULT() cf_save_CFLAGS="$CFLAGS" EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" for cf_opt in \ @@ -3144,7 +3258,8 @@ then CFLAGS="$cf_save_CFLAGS" elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" then - AC_CHECKING([for $CC warning options]) + AC_MSG_CHECKING([for $CC warning options]) + test -n "$verbose" && AC_MSG_RESULT() cf_save_CFLAGS="$CFLAGS" cf_warn_CONST="" test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" @@ -3194,20 +3309,21 @@ rm -rf ./conftest* AC_SUBST(EXTRA_CFLAGS) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16 +dnl CF_GETOPT_HEADER version: 10 updated: 2025/12/14 17:40:20 dnl ---------------- dnl Check for getopt's variables which are commonly defined in stdlib.h, dnl unistd.h or (nonstandard) in getopt.h AC_DEFUN([CF_GETOPT_HEADER], -[ -AC_HAVE_HEADERS(unistd.h getopt.h) +[AC_REQUIRE([AC_HEADER_STDC]) + +AC_CHECK_HEADERS(getopt.h) AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[ cf_cv_getopt_header=none for cf_header in stdio.h stdlib.h unistd.h getopt.h do -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <$cf_header>], -[int x = optind; char *y = optarg; (void)x; (void)y], +[int x = optind; char *y = optarg; (void)x; (void)y])], [cf_cv_getopt_header=$cf_header break]) done @@ -3220,6 +3336,26 @@ if test "$cf_cv_getopt_header" = getopt.h ; then fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_GLOB_FULLPATH version: 2 updated: 2024/08/03 12:34:02 +dnl ---------------- +dnl Use this in case-statements to check for pathname syntax, i.e., absolute +dnl pathnames. The "x" is assumed since we provide an alternate form for DOS. +AC_DEFUN([CF_GLOB_FULLPATH],[ +AC_REQUIRE([CF_WITH_SYSTYPE])dnl +case "$cf_cv_system_name" in +(cygwin*|msys*|mingw32*|mingw64|os2*) + GLOB_FULLPATH_POSIX='/*' + GLOB_FULLPATH_OTHER='[[a-zA-Z]]:[[\\/]]*' + ;; +(*) + GLOB_FULLPATH_POSIX='/*' + GLOB_FULLPATH_OTHER=$GLOB_FULLPATH_POSIX + ;; +esac +AC_SUBST(GLOB_FULLPATH_POSIX) +AC_SUBST(GLOB_FULLPATH_OTHER) +])dnl +dnl --------------------------------------------------------------------------- dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25 dnl ----------------- AC_DEFUN([CF_GNATPREP_OPT_T],[ @@ -3261,7 +3397,7 @@ AC_SUBST(cf_compile_generics) AC_SUBST(cf_generic_objects) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GNAT_PROJECTS version: 13 updated: 2021/01/02 17:09:14 +dnl CF_GNAT_PROJECTS version: 14 updated: 2025/12/24 12:27:29 dnl ---------------- dnl GNAT projects are configured with ".gpr" project files. dnl GNAT libraries are a further development, using the project feature. @@ -3322,7 +3458,7 @@ CF_EOF -XLIBRARY_DIR="`cd ../conftest.lib;pwd`" \ -XSOURCE_DIR="`pwd`" \ -XSONAME=libConfTest.so.1 \ - -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then + -XLIB_KIND=static 1>&AS_MESSAGE_LOG_FD 2>&1 ) ; then cf_gnat_projects=yes fi cd .. @@ -3426,7 +3562,7 @@ fi AC_SUBST(USE_GNAT_SIGINT) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04 +dnl CF_GNAT_TRY_LINK version: 5 updated: 2025/12/24 12:27:29 dnl ---------------- dnl Verify that a test program compiles/links with GNAT. dnl $cf_ada_make is set to the program that compiles/links @@ -3445,7 +3581,7 @@ CF_EOF cat >>conftest.adb <<CF_EOF $2 CF_EOF -if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then +if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AS_MESSAGE_LOG_FD 2>&1 ) ; then ifelse($3,, :,[ $3]) ifelse($4,,,[else $4]) @@ -3453,7 +3589,7 @@ fi rm -rf ./conftest* ./*~conftest* ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04 +dnl CF_GNAT_TRY_RUN version: 7 updated: 2025/12/24 12:27:29 dnl --------------- dnl Verify that a test program compiles and runs with GNAT dnl $cf_ada_make is set to the program that compiles/links @@ -3472,8 +3608,8 @@ CF_EOF cat >>conftest.adb <<CF_EOF $2 CF_EOF -if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then - if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then +if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AS_MESSAGE_LOG_FD 2>&1 ) ; then + if ( ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1 ) ; then ifelse($3,, :,[ $3]) ifelse($4,,,[ else $4]) @@ -3500,7 +3636,7 @@ test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41 +dnl CF_GNU_SOURCE version: 11 updated: 2025/12/14 17:40:20 dnl ------------- dnl Check if we must define _GNU_SOURCE to get a reasonable value for dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect @@ -3516,14 +3652,14 @@ AC_DEFUN([CF_GNU_SOURCE], cf_gnu_xopen_source=ifelse($1,,500,$1) AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[ -AC_TRY_COMPILE([#include <sys/types.h>],[ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 return 0; #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 return 0; #else # error not GNU C library - #endif], + #endif])], [cf_cv_gnu_library=yes], [cf_cv_gnu_library=no]) ]) @@ -3536,14 +3672,14 @@ if test x$cf_cv_gnu_library = xyes; then AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[ cf_save="$CPPFLAGS" CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) - AC_TRY_COMPILE([#include <sys/types.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) return 0; #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3) return 0; #else # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old - #endif], + #endif])], [cf_cv_gnu_library_219=yes], [cf_cv_gnu_library_219=no]) CPPFLAGS="$cf_save" @@ -3553,7 +3689,7 @@ if test x$cf_cv_gnu_library = xyes; then cf_save="$CPPFLAGS" AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[ CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source) - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <limits.h> #include <sys/types.h> ],[ @@ -3561,7 +3697,7 @@ if test x$cf_cv_gnu_library = xyes; then return 0; #else # error GNU C library is too old - #endif], + #endif])], [cf_cv_gnu_dftsrc_219=yes], [cf_cv_gnu_dftsrc_219=no]) ]) @@ -3573,17 +3709,17 @@ if test x$cf_cv_gnu_library = xyes; then if test "x$cf_cv_gnu_dftsrc_219" != xyes; then AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ - AC_TRY_COMPILE([#include <sys/types.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #ifndef _XOPEN_SOURCE #error expected _XOPEN_SOURCE to be defined - #endif], + #endif])], [cf_cv_gnu_source=no], [cf_save="$CPPFLAGS" CF_ADD_CFLAGS(-D_GNU_SOURCE) - AC_TRY_COMPILE([#include <sys/types.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #ifdef _XOPEN_SOURCE #error expected _XOPEN_SOURCE to be undefined - #endif], + #endif])], [cf_cv_gnu_source=no], [cf_cv_gnu_source=yes]) CPPFLAGS="$cf_save" @@ -3594,10 +3730,10 @@ if test x$cf_cv_gnu_library = xyes; then then AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[ CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE) - AC_TRY_COMPILE([#include <sys/types.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #ifdef _DEFAULT_SOURCE #error expected _DEFAULT_SOURCE to be undefined - #endif], + #endif])], [cf_cv_default_source=no], [cf_cv_default_source=yes]) ]) @@ -3611,7 +3747,7 @@ if test x$cf_cv_gnu_library = xyes; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GPP_LIBRARY version: 13 updated: 2021/01/01 13:31:04 +dnl CF_GPP_LIBRARY version: 14 updated: 2025/12/24 12:27:29 dnl -------------- dnl If we're trying to use g++, test if libg++ is installed (a rather common dnl problem :-). If we have the compiler but no library, we'll be able to @@ -3631,10 +3767,10 @@ if test "$GXX" = yes; then AC_MSG_CHECKING([for lib$cf_gpp_libname]) cf_save="$LIBS" CF_ADD_LIB($cf_gpp_libname) - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <$cf_gpp_libname/builtin.h> ], - [two_arg_error_handler_t foo2 = lib_error_handler], + [two_arg_error_handler_t foo2 = lib_error_handler])], [cf_cxx_library=yes CF_ADD_LIB($cf_gpp_libname,CXXLIBS) if test "$cf_gpp_libname" = cpp ; then @@ -3642,10 +3778,10 @@ if test "$GXX" = yes; then else AC_DEFINE(HAVE_GXX_BUILTIN_H,1,[Define to 1 if we have g++ builtin.h]) fi], - [AC_TRY_LINK([ + [AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <builtin.h> ], - [two_arg_error_handler_t foo2 = lib_error_handler], + [two_arg_error_handler_t foo2 = lib_error_handler])], [cf_cxx_library=yes CF_ADD_LIB($cf_gpp_libname,CXXLIBS) AC_DEFINE(HAVE_BUILTIN_H,1,[Define to 1 if we have builtin.h])], @@ -3673,7 +3809,7 @@ if test "$GXX" = yes; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GXX_WARNINGS version: 11 updated: 2021/01/08 16:50:55 +dnl CF_GXX_WARNINGS version: 14 updated: 2025/12/24 09:07:25 dnl --------------- dnl Check if the compiler supports useful warning options. dnl @@ -3722,7 +3858,8 @@ then # remark #981: operands are evaluated in unspecified order # warning #269: invalid format string conversion - AC_CHECKING([for $CC warning options]) + AC_MSG_CHECKING([for $CC warning options]) + test -n "$verbose" && AC_MSG_RESULT() cf_save_CXXFLAGS="$CXXFLAGS" EXTRA_CXXFLAGS="-Wall" for cf_opt in \ @@ -3747,7 +3884,8 @@ then elif test "$GXX" = yes then - AC_CHECKING([for $CXX warning options]) + AC_MSG_CHECKING([for $CXX warning options]) + test -n "$verbose" && AC_MSG_RESULT() cf_save_CXXFLAGS="$CXXFLAGS" EXTRA_CXXFLAGS="-W -Wall" cf_gxx_extra_warnings="" @@ -3836,7 +3974,7 @@ fi ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_HASHED_DB_LIBS version: 10 updated: 2021/01/02 17:09:14 +dnl CF_HASHED_DB_LIBS version: 12 updated: 2025/12/24 12:27:29 dnl ----------------- dnl Given that we have the header and version for hashed database, find the dnl library information. @@ -3851,14 +3989,14 @@ do CF_ADD_LIB($cf_db_libs) fi CF_MSG_LOG(checking for library $cf_db_libs) - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default #include <db.h> ],[ char *path = "/tmp/foo"; #ifdef DB_VERSION_MAJOR #if DB_VERSION_MAJOR >= 4 - DB *result = 0; + DB *result = NULL; db_create(&result, NULL, 0); result->open(result, NULL, @@ -3868,7 +4006,7 @@ $ac_includes_default DB_CREATE, 0644); #elif DB_VERSION_MAJOR >= 3 - DB *result = 0; + DB *result = NULL; db_create(&result, NULL, 0); result->open(result, path, @@ -3877,7 +4015,7 @@ $ac_includes_default DB_CREATE, 0644); #elif DB_VERSION_MAJOR >= 2 - DB *result = 0; + DB *result = NULL; db_open(path, DB_HASH, DB_CREATE, @@ -3893,8 +4031,8 @@ $ac_includes_default DB_HASH, 0); #endif - ${cf_cv_main_return:-return}(result != 0) -],[ + ${cf_cv_main_return:-return}(result != NULL) +])],[ if test -n "$cf_db_libs" ; then cf_cv_hashed_db_libs=$cf_db_libs else @@ -3908,7 +4046,7 @@ done ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_HASHED_DB_VERSION version: 5 updated: 2023/02/18 17:41:25 +dnl CF_HASHED_DB_VERSION version: 6 updated: 2025/12/24 12:27:29 dnl -------------------- dnl Given that we have the header file for hashed database, find the version dnl information. @@ -3920,7 +4058,7 @@ cf_cv_hashed_db_version=unknown for cf_db_version in 1 2 3 4 5 6 do CF_MSG_LOG(checking for db version $cf_db_version) - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default #include <db.h> @@ -3938,7 +4076,7 @@ $ac_includes_default #error $cf_db_version is not 1 #endif #endif -],[DBT *foo = 0],[ +],[DBT *foo = 0])],[ cf_cv_hashed_db_version=$cf_db_version break ]) @@ -4178,7 +4316,45 @@ fi AC_SUBST(INSTALL_OPT_S) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25 +dnl CF_INSTALL_PREFIX version: 2 updated: 2025/10/18 11:14:21 +dnl ----------------- +dnl Special option for use by system-builders: the install-prefix is used to +dnl adjust the location into which the actual install is done, so that an +dnl archive can be built without modifying the host system's configuration. +AC_DEFUN([CF_INSTALL_PREFIX],[ +AC_MSG_CHECKING(for an installation directory prefix) +AC_ARG_WITH(install-prefix, + [ --with-install-prefix=DESTDIR use DESTDIR as installation directory prefix], + [case "x$withval" in + (xyes|xno) + ;; + (*) DESTDIR="$withval" + ;; + esac]) +AC_MSG_RESULT([${DESTDIR:-(none)}]) +AC_SUBST(DESTDIR) + +SET_DESTDIR= +test -n "$DESTDIR" && SET_DESTDIR="DESTDIR=$DESTDIR" +AC_SUBST(SET_DESTDIR) + +AC_MSG_CHECKING(if installation directory prefix should be merged) +CF_ARG_ENABLE(install-prefix, + [ --enable-install-prefix merge DESTDIR with installation prefix], + cf_install_prefix=yes, + cf_install_prefix=no) +AC_MSG_RESULT($cf_install_prefix) + +if test "$cf_install_prefix" = yes ; then + MERGE_PREFIX=':$(prefix)%=%' +else + MERGE_PREFIX='' +fi + +AC_SUBST(MERGE_PREFIX) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INTEL_COMPILER version: 10 updated: 2025/12/14 17:40:20 dnl ----------------- dnl Check if the given compiler is really the Intel compiler for Linux. It dnl tries to imitate gcc, but does not return an error when it finds a mismatch @@ -4201,12 +4377,12 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" - AC_TRY_COMPILE([],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[ #ifdef __INTEL_COMPILER #else #error __INTEL_COMPILER is not defined #endif -],[ifelse([$2],,INTEL_COMPILER,[$2])=yes +])],[ifelse([$2],,INTEL_COMPILER,[$2])=yes cf_save_CFLAGS="$cf_save_CFLAGS -we147" ],[]) ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" @@ -4216,14 +4392,14 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147" fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_ISASCII version: 5 updated: 2023/12/03 09:21:34 +dnl CF_ISASCII version: 6 updated: 2025/12/24 12:27:29 dnl ---------- dnl Check if we have either a function or macro for 'isascii()'. AC_DEFUN([CF_ISASCII], [ AC_MSG_CHECKING(for isascii) AC_CACHE_VAL(cf_cv_have_isascii,[ - AC_TRY_LINK([#include <ctype.h>],[int x = isascii(' '); (void)x], + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <ctype.h>],[int x = isascii(' '); (void)x])], [cf_cv_have_isascii=yes], [cf_cv_have_isascii=no]) ])dnl @@ -4231,7 +4407,7 @@ AC_MSG_RESULT($cf_cv_have_isascii) test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII,1,[Define to 1 if we have isascii()]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_LARGEFILE version: 13 updated: 2023/12/03 19:09:59 +dnl CF_LARGEFILE version: 14 updated: 2025/12/22 04:16:14 dnl ------------ dnl Add checks for large file support. AC_DEFUN([CF_LARGEFILE],[ @@ -4261,7 +4437,7 @@ ifdef([AC_FUNC_FSEEKO],[ fi AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #pragma GCC diagnostic error "-Wincompatible-pointer-types" #include <sys/types.h> #include <dirent.h> @@ -4276,7 +4452,7 @@ extern struct dirent64 * readdir(DIR *); struct dirent *y = readdir(dp); int z = x - y; (void)z; - ], + ])], [cf_cv_struct_dirent64=yes], [cf_cv_struct_dirent64=no]) ]) @@ -4285,7 +4461,7 @@ extern struct dirent64 * readdir(DIR *); ]) ]) dnl --------------------------------------------------------------------------- -dnl CF_LDFLAGS_STATIC version: 14 updated: 2021/01/02 17:09:14 +dnl CF_LDFLAGS_STATIC version: 17 updated: 2025/12/24 12:27:29 dnl ----------------- dnl Check for compiler/linker flags used to temporarily force usage of static dnl libraries. This depends on the compiler and platform. Use this to help @@ -4306,21 +4482,21 @@ if test "$GCC" = yes ; then esac else case "$cf_cv_system_name" in - (aix[[4-7]]*) # from ld manpage + (aix[[4-7]]*) # from ld man page LDFLAGS_STATIC=-bstatic LDFLAGS_SHARED=-bdynamic ;; - (hpux*) # from ld manpage for hpux10.20, hpux11.11 + (hpux*) # from ld man page for hpux10.20, hpux11.11 # We could also use just "archive" and "shared". LDFLAGS_STATIC=-Wl,-a,archive_shared LDFLAGS_SHARED=-Wl,-a,shared_archive ;; - (irix*) # from ld manpage IRIX64 + (irix*) # from ld man page IRIX64 LDFLAGS_STATIC=-Bstatic LDFLAGS_SHARED=-Bdynamic ;; - (osf[[45]]*) # from ld manpage osf4.0d, osf5.1 - # alternative "-oldstyle_liblookup" (not in cc manpage) + (osf[[45]]*) # from ld man page osf4.0d, osf5.1 + # alternative "-oldstyle_liblookup" (not in cc man page) LDFLAGS_STATIC=-noso LDFLAGS_SHARED=-so_archive ;; @@ -4342,21 +4518,21 @@ then int cf_ldflags_static(FILE *fp) { return fflush(fp); } EOF if AC_TRY_EVAL(ac_compile) ; then - ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&AC_FD_CC 1>/dev/null - ( eval $RANLIB libconftest.a ) 2>&AC_FD_CC >/dev/null + ( $AR $ARFLAGS libconftest.a conftest.$OBJEXT ) 2>&AS_MESSAGE_LOG_FD 1>/dev/null + ( eval $RANLIB libconftest.a ) 2>&AS_MESSAGE_LOG_FD >/dev/null fi rm -f conftest.* cf_save_LIBS="$LIBS" LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS" - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #line __oline__ "configure" #include <stdio.h> int cf_ldflags_static(FILE *fp); ],[ return cf_ldflags_static(stdin); -],[ +])],[ # some linkers simply ignore the -dynamic case x`file "conftest$ac_exeext" 2>/dev/null` in (*static*) @@ -4387,7 +4563,7 @@ AC_SUBST(LDFLAGS_STATIC) AC_SUBST(LDFLAGS_SHARED) ]) dnl --------------------------------------------------------------------------- -dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 +dnl CF_LD_RPATH_OPT version: 10 updated: 2025/12/15 04:04:20 dnl --------------- dnl For the given system and compiler, find the compiler flags to pass to the dnl loader to use the "rpath" feature. @@ -4435,7 +4611,7 @@ then AC_MSG_CHECKING(if we need a space after rpath option) cf_save_LIBS="$LIBS" CF_ADD_LIBS(${LD_RPATH_OPT}$libdir) - AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes) + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], cf_rpath_space=no, cf_rpath_space=yes) LIBS="$cf_save_LIBS" AC_MSG_RESULT($cf_rpath_space) test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " @@ -4567,9 +4743,12 @@ CF_SUBDIR_PATH($1,$2,lib) $1="$cf_library_path_list [$]$1" ])dnl dnl --------------------------------------------------------------------------- -dnl CF_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09 +dnl CF_LIBTOOL_VERSION version: 2 updated: 2024/06/12 04:19:01 dnl ------------------ AC_DEFUN([CF_LIBTOOL_VERSION],[ +ifdef([LT_PACKAGE_VERSION],[ + cf_cv_libtool_version=LT_PACKAGE_VERSION +],[ if test -n "$LIBTOOL" && test "$LIBTOOL" != none then cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([[^)]]*)//g' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'` @@ -4578,6 +4757,7 @@ else fi test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version ])dnl +])dnl dnl --------------------------------------------------------------------------- dnl CF_LIB_PREFIX version: 14 updated: 2021/01/01 13:31:04 dnl ------------- @@ -4603,7 +4783,7 @@ ifelse($1,,,[$1=$LIB_PREFIX]) AC_SUBST(LIB_PREFIX) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_LIB_RULES version: 100 updated: 2023/06/03 15:17:30 +dnl CF_LIB_RULES version: 103 updated: 2025/11/11 20:09:36 dnl ------------ dnl Append definitions and rules for the given models to the subdirectory dnl Makefiles, and the recursion rule for the top-level Makefile. If the @@ -4621,6 +4801,7 @@ dnl Note: Libs_To_Make is mixed case, since it is not a pure autoconf variable. AC_DEFUN([CF_LIB_RULES], [AC_REQUIRE([AC_PROG_FGREP])dnl AC_REQUIRE([CF_MAKE_PHONY])dnl +AC_REQUIRE([CF_GLOB_FULLPATH])dnl cf_prefix=$LIB_PREFIX AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) @@ -4703,7 +4884,7 @@ CF_EOF if test "$cf_item" = shared ; then if test -n "${LIB_SUFFIX}" then - cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${ABI_SUFFIX}"'//'` else cf_shared_suffix="$cf_suffix" fi @@ -4724,16 +4905,16 @@ CF_EOF case "$cf_cv_system_name" in (darwin*) # "w", etc? - cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix" + cf_suffix="${ABI_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix" ;; (*) cf_suffix="$cf_suffix"'.${'$cf_version_name'}' ;; esac fi - if test -n "${USE_LIB_SUFFIX}" + if test -n "${ABI_SUFFIX}" then - cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${ABI_SUFFIX}"'//'` else cf_shared_suffix="$cf_suffix" fi @@ -4785,10 +4966,10 @@ CF_EOF cf_add_lib= case "$cf_l_parts" in (*termlib*) - cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g` + cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${ABI_SUFFIX}%${TINFO_LIB_SUFFIX}%g` ;; (*ticlib*) - cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g` + cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${ABI_SUFFIX}%${TICS_LIB_SUFFIX}%g` ;; (*) break @@ -4871,7 +5052,7 @@ CF_EOF if test "$cf_dir" = ncurses ; then case "$cf_subset" in (*base*) - cf_libname=${cf_libname}$USE_LIB_SUFFIX + cf_libname=${cf_libname}$ABI_SUFFIX ;; (*termlib*) cf_libname=$TINFO_LIB_SUFFIX @@ -4882,14 +5063,14 @@ CF_EOF esac elif test "$cf_dir" = c++ ; then CF_MAP_LIB_BASENAME(cf_libname,cxx) - cf_libname=${cf_libname}$USE_LIB_SUFFIX + cf_libname=${cf_libname}$ABI_SUFFIX else CF_MAP_LIB_BASENAME(cf_libname,$cf_dir) - cf_libname=${cf_libname}$USE_LIB_SUFFIX + cf_libname=${cf_libname}$ABI_SUFFIX fi if test -n "${USE_ARG_SUFFIX}" ; then - # undo $USE_LIB_SUFFIX add-on in CF_LIB_SUFFIX - cf_suffix=`echo "$cf_suffix" |sed -e "s%^${USE_LIB_SUFFIX}%%"` + # undo $ABI_SUFFIX add-on in CF_LIB_SUFFIX + cf_suffix=`echo "$cf_suffix" |sed -e "s%^${ABI_SUFFIX}%%"` fi # These dependencies really are for development, not @@ -4910,8 +5091,8 @@ CF_EOF cf_dir_suffix= old_cf_suffix="$cf_suffix" if test "$cf_cv_shlib_version_infix" = yes ; then - if test -n "$USE_LIB_SUFFIX" ; then - case "$USE_LIB_SUFFIX" in + if test -n "$ABI_SUFFIX" ; then + case "$ABI_SUFFIX" in (tw*) cf_libname=`echo "$cf_libname" | sed 's/tw'$EXTRA_SUFFIX'$//'` cf_suffix=`echo "$cf_suffix" | sed 's/^tw'$EXTRA_SUFFIX'//'` @@ -4941,8 +5122,8 @@ CF_EOF traces=$LIB_TRACING \ MODEL=$cf_ITEM \ CXX_MODEL=$CXX_MODEL \ + ABI_SUFFIX=$ABI_SUFFIX \ LIB_SUFFIX=$LIB_SUFFIX \ - USE_LIB_SUFFIX=$USE_LIB_SUFFIX \ make_phony="${cf_cv_make_PHONY:-no}" \ model=$cf_subdir \ prefix=$cf_prefix \ @@ -5127,7 +5308,7 @@ echo creating headers.sh cat >headers.sh <<CF_EOF #! $SHELL # This shell script is generated by the 'configure' script. It is invoked in a -# subdirectory of the build tree. It generates a sed-script in the parent +# subdirectory of the build tree. It generates a sed script in the parent # directory that is used to adjust includes for header files that reside in a # subdirectory of /usr/include, etc. PRG="" @@ -5146,7 +5327,7 @@ CF_EOF if test "$WITH_CURSES_H" = yes; then cat >>headers.sh <<CF_EOF case \$DST in -(/*/include/*) +($GLOB_FULLPATH_POSIX/include/*) END=\`basename \$DST\` for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\` do @@ -5163,7 +5344,7 @@ CF_EOF else cat >>headers.sh <<CF_EOF case \$DST in -(/*/include/*) +($GLOB_FULLPATH_POSIX/include/*) END=\`basename \$DST\` for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\` do @@ -5193,7 +5374,7 @@ test "\$NAME" = "curses.h" && NAME=ncurses.h CF_EOF fi cat >>headers.sh <<CF_EOF -# Just in case someone gzip'd manpages, remove the conflicting copy. +# Just in case someone gzip'd man pages, remove the conflicting copy. test -f \$DST/\$NAME.gz && rm -f \$DST/\$NAME.gz eval \$PRG \$TMPSRC \$DST/\$NAME @@ -5383,7 +5564,7 @@ AC_DEFUN([CF_LIB_TYPE], test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" ])dnl dnl --------------------------------------------------------------------------- -dnl CF_LINK_DATAONLY version: 15 updated: 2023/12/03 10:03:10 +dnl CF_LINK_DATAONLY version: 17 updated: 2025/12/24 12:27:29 dnl ---------------- dnl Some systems have a non-ANSI linker that doesn't pull in modules that have dnl only data (i.e., no functions), for example NeXT. On those systems we'll @@ -5399,10 +5580,10 @@ AC_CACHE_VAL(cf_cv_link_dataonly,[ int testdata[[3]] = { 123, 456, 789 }; EOF if AC_TRY_EVAL(ac_compile) ; then - mv conftest.o data.o && \ - ( $AR $ARFLAGS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null + mv conftest.$OBJEXT data.$OBJEXT && \ + ( $AR $ARFLAGS conftest.a data.$OBJEXT ) 2>&AS_MESSAGE_LOG_FD 1>/dev/null fi - rm -f conftest.$ac_ext data.o + rm -f conftest.$ac_ext data.$OBJEXT cat >conftest.$ac_ext <<EOF #line __oline__ "configure" extern int testfunc(void); @@ -5422,11 +5603,11 @@ int testfunc(void) #endif EOF if AC_TRY_EVAL(ac_compile); then - mv conftest.o func.o && \ - ( $AR $ARFLAGS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null + mv conftest.$OBJEXT func.$OBJEXT && \ + ( $AR $ARFLAGS conftest.a func.$OBJEXT ) 2>&AS_MESSAGE_LOG_FD 1>/dev/null fi - rm -f conftest.$ac_ext func.o - ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null + rm -f conftest.$ac_ext func.$OBJEXT + ( eval $RANLIB conftest.a ) 2>&AS_MESSAGE_LOG_FD >/dev/null cf_saveLIBS="$LIBS" LIBS="conftest.a $LIBS" AC_TRY_RUN([ @@ -5451,7 +5632,7 @@ AC_SUBST(BROKEN_LINKER) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_LINK_FUNCS version: 13 updated: 2023/12/03 09:24:04 +dnl CF_LINK_FUNCS version: 14 updated: 2024/12/14 16:09:34 dnl ------------- dnl Most Unix systems have both link and symlink, a few don't have symlink. dnl A few non-Unix systems implement symlink, but not link. @@ -5486,7 +5667,7 @@ int main(void) char dst[] = "conftest.chk"; struct stat src_sb, dst_sb; FILE *fp = fopen(src, "w"); - if (fp == 0) { fail = 3; } else { + if (fp == NULL) { fail = 3; } else { fclose(fp); stat(src, &src_sb); if ($cf_func(src, dst) < 0) { fail = 1; @@ -5518,50 +5699,7 @@ int main(void) fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MAKEFLAGS version: 21 updated: 2021/09/04 06:47:34 -dnl ------------ -dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make' -dnl options to lower-levels. It is very useful for "make -n" -- if we have it. -dnl (GNU 'make' does both, something POSIX 'make', which happens to make the -dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-) -AC_DEFUN([CF_MAKEFLAGS], -[AC_REQUIRE([AC_PROG_FGREP])dnl - -AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[ - cf_cv_makeflags='' - for cf_option in '-${MAKEFLAGS}' '${MFLAGS}' - do - cat >cf_makeflags.tmp <<CF_EOF -SHELL = $SHELL -all : - @ echo '.$cf_option' -CF_EOF - cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | ${FGREP-fgrep} -v "ing directory" | sed -e 's,[[ ]]*$,,'` - case "$cf_result" in - (.*k|.*kw) - cf_result="`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`" - case "$cf_result" in - (.*CC=*) cf_cv_makeflags= - ;; - (*) cf_cv_makeflags=$cf_option - ;; - esac - break - ;; - (.-) - ;; - (*) - CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\") - ;; - esac - done - rm -f cf_makeflags.tmp -]) - -AC_SUBST(cf_cv_makeflags) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21 +dnl CF_MAKE_PHONY version: 4 updated: 2025/12/24 12:27:29 dnl ------------- dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which dnl acts as a placeholder. @@ -5632,7 +5770,7 @@ CF_EOF fi break done - ) >&AC_FD_CC 2>&1 + ) >&AS_MESSAGE_LOG_FD 2>&1 cf_cv_make_PHONY="`cat conftest.tmp`" rm -rf conftest* ]) @@ -5681,9 +5819,9 @@ AC_SUBST(MAKE_UPPER_TAGS) AC_SUBST(MAKE_LOWER_TAGS) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_FORMAT version: 19 updated: 2024/03/30 08:27:40 +dnl CF_MANPAGE_FORMAT version: 20 updated: 2025/11/11 20:09:36 dnl ----------------- -dnl Option to allow user to override automatic configuration of manpage format. +dnl Option to allow user to override automatic configuration of man page format. dnl There are several special cases: dnl dnl compress - man checks for, can display compressed files @@ -5696,15 +5834,15 @@ dnl formatted - installer should format (put files in cat-directory) dnl catonly - installer should only format, e.g., for a turnkey system. dnl dnl There are other configurations which this macro does not test, e.g., HPUX's -dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming +dnl compressed man pages (but uncompressed man pages are fine, and HPUX's naming dnl convention would not match our use). AC_DEFUN([CF_MANPAGE_FORMAT], [ AC_REQUIRE([CF_PATHSEP]) -AC_MSG_CHECKING(format of man-pages) +AC_MSG_CHECKING(format of man pages) AC_ARG_WITH(manpage-format, - [ --with-manpage-format specify manpage-format: gzip/compress/bzip2/xz, + [ --with-manpage-format specify man page format: gzip/compress/bzip2/xz, BSDI/normal and optionally formatted/catonly, e.g., gzip,formatted], [MANPAGE_FORMAT=$withval], @@ -5721,7 +5859,7 @@ case "$MANPAGE_FORMAT" in MANPATH="/usr/man:/usr/share/man" fi - # look for the 'date' man-page (it is most likely to be installed!) + # look for the 'date' man page (it is most likely to be installed!) MANPAGE_FORMAT= cf_preform="no" cf_catonly="yes" @@ -5768,7 +5906,7 @@ case "$MANPAGE_FORMAT" in test "$cf_found" = yes && break fi done - # only check the first directory in $MANPATH where we find manpages + # only check the first directory in $MANPATH where we find man pages if test -n "$MANPAGE_FORMAT" ; then break fi @@ -5792,7 +5930,7 @@ esac AC_MSG_RESULT($MANPAGE_FORMAT) if test -n "$cf_unknown" ; then - AC_MSG_WARN(Unexpected manpage-format $cf_unknown) + AC_MSG_WARN(Unexpected man page format $cf_unknown) fi cf_manpage_format=no @@ -5840,17 +5978,17 @@ AC_SUBST(cf_manpage_coptions) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_RENAMES version: 17 updated: 2022/10/23 07:46:29 +dnl CF_MANPAGE_RENAMES version: 18 updated: 2025/11/11 20:09:36 dnl ------------------ -dnl The Debian people have their own naming convention for manpages. This +dnl The Debian people have their own naming convention for man pages. This dnl option lets us override the name of the file containing renaming, or dnl disable it altogether. AC_DEFUN([CF_MANPAGE_RENAMES], [ -AC_MSG_CHECKING(for manpage renaming) +AC_MSG_CHECKING(for man page renaming) AC_ARG_WITH(manpage-renames, - [ --with-manpage-renames specify manpage-renaming], + [ --with-manpage-renames specify man page renaming], [MANPAGE_RENAMES=$withval], [MANPAGE_RENAMES=yes]) @@ -5879,17 +6017,17 @@ AC_MSG_RESULT($MANPAGE_RENAMES) AC_SUBST(MANPAGE_RENAMES) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_SYMLINKS version: 7 updated: 2023/01/21 16:37:17 +dnl CF_MANPAGE_SYMLINKS version: 8 updated: 2025/11/11 20:09:36 dnl ------------------- -dnl Some people expect each tool to make all aliases for manpages in the +dnl Some people expect each tool to make all aliases for man pages in the dnl man-directory. This accommodates the older, less-capable implementations dnl of 'man', and is optional. AC_DEFUN([CF_MANPAGE_SYMLINKS], [ -AC_MSG_CHECKING(if manpage aliases will be installed) +AC_MSG_CHECKING(if man page aliases will be installed) AC_ARG_WITH(manpage-aliases, - [ --with-manpage-aliases specify manpage-aliases using .so], + [ --with-manpage-aliases specify man page aliases using .so], [MANPAGE_ALIASES=$withval], [MANPAGE_ALIASES=yes]) @@ -5906,10 +6044,10 @@ esac MANPAGE_SYMLINKS=no if test "$MANPAGE_ALIASES" = yes ; then -AC_MSG_CHECKING(if manpage symlinks should be used) +AC_MSG_CHECKING(if man page symlinks should be used) AC_ARG_WITH(manpage-symlinks, - [ --with-manpage-symlinks specify manpage-aliases using symlinks], + [ --with-manpage-symlinks specify man page aliases using symlinks], [MANPAGE_SYMLINKS=$withval], [MANPAGE_SYMLINKS=$cf_use_symlinks]) @@ -5925,54 +6063,30 @@ fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32 +dnl CF_MANPAGE_TBL version: 4 updated: 2025/11/11 20:09:36 dnl -------------- -dnl This option causes manpages to be run through tbl(1) to generate tables +dnl This option causes man pages to be run through tbl(1) to generate tables dnl correctly. AC_DEFUN([CF_MANPAGE_TBL], [ -AC_MSG_CHECKING(for manpage tbl) +AC_MSG_CHECKING(for man page tbl) AC_ARG_WITH(manpage-tbl, - [ --with-manpage-tbl specify manpage processing with tbl], + [ --with-manpage-tbl specify man page processing with tbl], [MANPAGE_TBL=$withval], [MANPAGE_TBL=no]) AC_MSG_RESULT($MANPAGE_TBL) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MB_LEN_MAX version: 1 updated: 2024/03/02 15:45:10 -dnl ------------- -dnl Check if <limits.h> defines a usable MB_LEN_MAX. That may be because it is -dnl not defined, or it may be a bogus value. -AC_DEFUN([CF_MB_LEN_MAX],[ -AC_CACHE_CHECK(if MB_LEN_MAX is usable,cf_cv_mb_len_max,[ -AC_TRY_COMPILE([ -$ac_includes_default -#include <limits.h>], -[ -#if defined(MB_LEN_MAX) && MB_LEN_MAX >= 6 - ${cf_cv_main_return:-return}(0); -#else -#error MB_LEN_MAX is not usable -#endif -], [cf_cv_mb_len_max=yes], - [cf_cv_mb_len_max=no])]) -if test "$cf_cv_mb_len_max" = yes -then - AC_DEFINE(HAVE_CONSISTENT_MB_LEN_MAX,1,[Define to 1 if MB_LEN_MAX is usable]) -else - AC_MSG_WARN(MB_LEN_MAX is missing/inconsistent in system headers) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAN_PAGES version: 59 updated: 2024/03/30 08:27:40 +dnl CF_MAN_PAGES version: 64 updated: 2025/11/11 20:09:36 dnl ------------ -dnl Try to determine if the man-pages on the system are compressed, and if +dnl Try to determine if the man pages on the system are compressed, and if dnl so, what format is used. Use this information to construct a script that -dnl will install man-pages. +dnl will install man pages. AC_DEFUN([CF_MAN_PAGES], [ +AC_REQUIRE([CF_CHECK_TBL_X_OPTION]) CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:) CF_MANPAGE_FORMAT CF_MANPAGE_RENAMES @@ -5991,8 +6105,8 @@ cf_edit_man=./edit_man.sh cf_man_alias=`pwd`/man_alias.sed cat >$cf_edit_man <<CF_EOF -#! $SHELL -# this script is generated by the configure-script CF_MAN_PAGES macro. +#!$SHELL +# generated by "configure" from the CF_MAN_PAGES macro in "aclocal.m4" prefix="$cf_prefix" datarootdir="$datarootdir" @@ -6135,6 +6249,15 @@ CF_EOF fi cat >>$cf_edit_man <<CF_EOF +if test $cf_cv_tbl_x_option_okay != yes ; then + # Remove column modifier 'x' from table descriptions if the + # system's tbl(1) doesn't support it. + sed -e '/^\.TS/,/\.$/s@x[[.]]@.@' \$TMP >\$TMP.unx + mv \$TMP.unx \$TMP +fi +CF_EOF + +cat >>$cf_edit_man <<CF_EOF if test \$cf_tables = yes ; then tbl \$TMP >\$TMP.out mv \$TMP.out \$TMP @@ -6143,14 +6266,21 @@ CF_EOF if test "$with_overwrite" != yes ; then cat >>$cf_edit_man <<CF_EOF - sed -e "/\\#[ ]*include/s,<curses.h,<ncurses$LIB_SUFFIX/curses.h," < \$TMP >\$TMP.out + sed -e "/\\#[ ]*include/s,<curses.h,<ncurses$ABI_SUFFIX/curses.h," \ + -e "/\\#[ ]*include/s,<term.h,<ncurses$ABI_SUFFIX/term.h," \ + -e "/\\#[ ]*include/s,<form.h,<ncurses$ABI_SUFFIX/form.h," \ + -e "/\\#[ ]*include/s,<menu.h,<ncurses$ABI_SUFFIX/menu.h," \ + -e "/\\#[ ]*include/s,<panel.h,<ncurses$ABI_SUFFIX/panel.h," \ + -e "/\\#[ ]*include/s,<unctrl.h,<ncurses$ABI_SUFFIX/unctrl.h," \ + < \$TMP >\$TMP.out mv \$TMP.out \$TMP CF_EOF fi if test "$with_curses_h" != yes ; then cat >>$cf_edit_man <<CF_EOF - sed -e "/\\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out + sed -e "/\\#[ ]*include/s,curses.h,ncurses.h," \ + < \$TMP >\$TMP.out mv \$TMP.out \$TMP CF_EOF fi @@ -6165,7 +6295,7 @@ CF_EOF if test -n "$cf_manpage_compress" ; then cat >>$cf_edit_man <<CF_EOF if test "\$verb" = installing ; then - if ( "$cf_manpage_compress" -f \$TMP ) + if ( "$cf_manpage_compress" $cf_manpage_coptions -f \$TMP ) then mv \$TMP.$cf_manpage_so_strip \$TMP fi @@ -6304,7 +6434,7 @@ CF_UPPER(cf_map_lib_basename,$2) eval $1="\$${cf_map_lib_basename}_NAME" ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MATH_LIB version: 11 updated: 2022/07/27 19:01:48 +dnl CF_MATH_LIB version: 12 updated: 2025/12/22 04:16:14 dnl ----------- dnl Checks for libraries. At least one UNIX system, Apple Macintosh dnl Rhapsody 5.5, does not have -lm. We cannot use the simpler @@ -6313,12 +6443,12 @@ AC_DEFUN([CF_MATH_LIB], [ AC_CACHE_CHECK(if -lm needed for math functions, cf_cv_need_libm,[ - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdio.h> #include <stdlib.h> #include <math.h> ], - [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], + [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)])], [cf_cv_need_libm=no], [cf_cv_need_libm=yes])]) @@ -6329,12 +6459,12 @@ then LIBS="$LIBS -lm" AC_CACHE_CHECK(if -lm is available for math functions, cf_cv_have_libm,[ - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdio.h> #include <stdlib.h> #include <math.h> ], - [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], + [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)])], [cf_cv_have_libm=yes], [cf_cv_have_libm=no])]) LIBS="$cf_save_LIBS" @@ -6353,6 +6483,31 @@ then fi ]) dnl --------------------------------------------------------------------------- +dnl CF_MB_LEN_MAX version: 2 updated: 2025/12/24 12:27:29 +dnl ------------- +dnl Check if <limits.h> defines a usable MB_LEN_MAX. That may be because it is +dnl not defined, or it may be a bogus value. +AC_DEFUN([CF_MB_LEN_MAX],[ +AC_CACHE_CHECK(if MB_LEN_MAX is usable,cf_cv_mb_len_max,[ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +$ac_includes_default +#include <limits.h>], +[ +#if defined(MB_LEN_MAX) && MB_LEN_MAX >= 6 + ${cf_cv_main_return:-return}(0); +#else +#error MB_LEN_MAX is not usable +#endif +])], [cf_cv_mb_len_max=yes], + [cf_cv_mb_len_max=no])]) +if test "$cf_cv_mb_len_max" = yes +then + AC_DEFINE(HAVE_CONSISTENT_MB_LEN_MAX,1,[Define to 1 if MB_LEN_MAX is usable]) +else + AC_MSG_WARN(MB_LEN_MAX is missing/inconsistent in system headers) +fi +])dnl +dnl --------------------------------------------------------------------------- dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59 dnl ---------------------- dnl Check if the file-system supports mixed-case filenames. If we're able to @@ -6383,7 +6538,7 @@ fi test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MKSTEMP version: 13 updated: 2023/12/01 17:22:50 +dnl CF_MKSTEMP version: 14 updated: 2025/12/14 18:08:20 dnl ---------- dnl Check for a working mkstemp. This creates two files, checks that they are dnl successfully created and distinct (AmigaOS apparently fails on the last). @@ -6393,7 +6548,7 @@ unistd.h \ ) AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ rm -rf ./conftest* -AC_TRY_RUN([ +AC_RUN_IFELSE([AC_LANG_SOURCE([[ $ac_includes_default int main(void) @@ -6423,7 +6578,7 @@ int main(void) result = 1; ${cf_cv_main_return:-return}(result); } -],[cf_cv_func_mkstemp=yes +]])],[cf_cv_func_mkstemp=yes ],[cf_cv_func_mkstemp=no ],[cf_cv_func_mkstemp=maybe]) ]) @@ -6435,12 +6590,12 @@ if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; th fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 +dnl CF_MSG_LOG version: 6 updated: 2025/12/14 17:51:46 dnl ---------- dnl Write a debug message to config.log, along with the line number in the dnl configure script. AC_DEFUN([CF_MSG_LOG],[ -echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC +echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AS_MESSAGE_LOG_FD ])dnl dnl --------------------------------------------------------------------------- dnl CF_NCURSES_ABI_6 version: 5 updated: 2023/01/07 16:32:06 @@ -6558,7 +6713,7 @@ AC_DEFUN([CF_OBJ_SUBDIR], esac ])dnl dnl --------------------------------------------------------------------------- -dnl CF_OUTPUT_MANPAGE_RENAMES version: 2 updated: 2022/10/22 19:12:31 +dnl CF_OUTPUT_MANPAGE_RENAMES version: 3 updated: 2025/11/11 20:09:36 dnl ------------------------- dnl This runs in the output step to config.status, after man_db.renames has dnl been generated. @@ -6566,7 +6721,7 @@ AC_DEFUN([CF_OUTPUT_MANPAGE_RENAMES], [ AC_REQUIRE([CF_MANPAGE_RENAMES]) if test "$MANPAGE_RENAMES" != no ; then - # Construct a sed-script to perform renaming within man-pages + # Construct a sed script to perform renaming within man pages test -n "$verbose" && echo "creating edit_man.sed" test ! -d man && mkdir man FGREP="${FGREP-grep -F}" $SHELL "$srcdir/man/make_sed.sh" "$MANPAGE_RENAMES" >./edit_man.sed @@ -6634,39 +6789,39 @@ if test -n "$cf_path_prog" ; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 +dnl CF_PATH_SYNTAX version: 20 updated: 2025/12/16 04:09:03 dnl -------------- dnl Check the argument to see that it looks like a pathname. Rewrite it if it dnl begins with one of the prefix/exec_prefix variables, and then again if the dnl result begins with 'NONE'. This is necessary to work around autoconf's dnl delayed evaluation of those symbols. AC_DEFUN([CF_PATH_SYNTAX],[ +AC_REQUIRE([CF_GLOB_FULLPATH])dnl + if test "x$prefix" != xNONE; then cf_path_syntax="$prefix" else cf_path_syntax="$ac_default_prefix" fi -case ".[$]$1" in -(.\[$]\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x[$]$1" in +(x\[$]\(*\)*|x\'*\'*) ;; -(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) +(x\[$]\{*prefix\}*|x\[$]\{*dir\}*) eval $1="[$]$1" - case ".[$]$1" in - (.NONE/*) + case "x[$]$1" in + (xNONE/*) $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) + ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not "[$]$1"])],$2) ;; esac ])dnl @@ -6709,7 +6864,7 @@ fi AC_SUBST(PKG_CONFIG) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25 +dnl CF_POSIX_C_SOURCE version: 13 updated: 2025/12/14 17:40:20 dnl ----------------- dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. dnl @@ -6738,10 +6893,10 @@ CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ CF_MSG_LOG(if the symbol is already defined go no further) - AC_TRY_COMPILE([#include <sys/types.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #ifndef _POSIX_C_SOURCE #error _POSIX_C_SOURCE is not defined -#endif], +#endif])], [cf_cv_posix_c_source=no], [cf_want_posix_source=no case .$cf_POSIX_C_SOURCE in @@ -6757,10 +6912,10 @@ AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ ;; esac if test "$cf_want_posix_source" = yes ; then - AC_TRY_COMPILE([#include <sys/types.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #ifdef _POSIX_SOURCE #error _POSIX_SOURCE is defined -#endif],[], +#endif])],[], cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") fi CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) @@ -6768,10 +6923,10 @@ AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ CPPFLAGS="$cf_trim_CPPFLAGS" CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source) CF_MSG_LOG(if the second compile does not leave our definition intact error) - AC_TRY_COMPILE([#include <sys/types.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>],[ #ifndef _POSIX_C_SOURCE #error _POSIX_C_SOURCE is not defined -#endif],, +#endif])],, [cf_cv_posix_c_source=no]) CFLAGS="$cf_save_CFLAGS" CPPFLAGS="$cf_save_CPPFLAGS" @@ -6788,7 +6943,7 @@ fi # cf_cv_posix_visible ])dnl dnl --------------------------------------------------------------------------- -dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 +dnl CF_POSIX_VISIBLE version: 2 updated: 2025/12/14 17:40:20 dnl ---------------- dnl POSIX documents test-macros which an application may set before any system dnl headers are included to make features available. @@ -6804,18 +6959,18 @@ dnl conflicting definition. AC_DEFUN([CF_POSIX_VISIBLE], [ AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[ -AC_TRY_COMPILE([#include <stdio.h>],[ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>],[ #if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \ && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \ && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \ && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0) #error conflicting symbols found #endif -],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes]) +])],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes]) ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_PREDEFINE version: 3 updated: 2023/02/18 17:41:25 +dnl CF_PREDEFINE version: 4 updated: 2025/12/24 12:27:29 dnl ------------ dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles. dnl @@ -6824,22 +6979,22 @@ dnl $2 = value (if any) to use for a predefinition AC_DEFUN([CF_PREDEFINE], [ AC_MSG_CHECKING(if we must define $1) -AC_TRY_COMPILE([#include <sys/types.h> +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h> ],[ #ifndef $1 #error $1 is not defined -#endif],[cf_result=no],[cf_result=yes]) +#endif])],[cf_result=no],[cf_result=yes]) AC_MSG_RESULT($cf_result) if test "$cf_result" = yes ; then CPPFLAGS="$CPPFLAGS ifelse([$2],,-D$1,[-D$1=$2])" elif test "x$2" != "x" ; then AC_MSG_CHECKING(checking for compatible value versus $2) - AC_TRY_COMPILE([#include <sys/types.h> + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h> ],[ #if $1-$2 < 0 #error $1-$2 is negative -#endif],[cf_result=yes],[cf_result=no]) +#endif])],[cf_result=yes],[cf_result=no]) AC_MSG_RESULT($cf_result) if test "$cf_result" = no ; then # perhaps we can override it - try... @@ -6905,7 +7060,7 @@ CF_ACVERSION_CHECK(2.52, CF_CC_ENV_FLAGS ])dnl dnl --------------------------------------------------------------------------- -dnl CF_PROG_CC_C_O version: 6 updated: 2021/01/01 13:31:04 +dnl CF_PROG_CC_C_O version: 7 updated: 2025/12/24 12:27:29 dnl -------------- dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that dnl the output file can be renamed, and allows for a shell variable that can @@ -6929,7 +7084,7 @@ int main(void) CF_EOF # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. -ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC' +ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AS_MESSAGE_LOG_FD' if AC_TRY_EVAL(ac_try) && test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try); then @@ -6946,7 +7101,7 @@ else fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_PROG_GNAT version: 12 updated: 2021/01/02 17:09:14 +dnl CF_PROG_GNAT version: 13 updated: 2025/12/24 12:27:29 dnl ------------ dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete. AC_DEFUN([CF_PROG_GNAT],[ @@ -6995,12 +7150,12 @@ else "$cf_gprconfig,,,,GCC" \ "$cf_gprconfig" do - cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1` + cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AS_MESSAGE_LOG_FD | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1` test -n "$cf_gprconfig_value" && break done else cf_gprconfig_param=$cf_gprconfig - cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1` + cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AS_MESSAGE_LOG_FD | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1` fi if test -n "$cf_gprconfig_value" then @@ -7051,15 +7206,25 @@ AC_SUBST(cf_ada_config_Ada) AC_SUBST(cf_ada_config_C) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05 +dnl CF_PROG_INSTALL version: 13 updated: 2025/10/21 16:28:49 dnl --------------- dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the dnl misc/tabset install won't work properly. Usually this happens only when dnl using the fallback mkinstalldirs script AC_DEFUN([CF_PROG_INSTALL], [AC_PROG_INSTALL -case $INSTALL in -(/*) +AC_REQUIRE([CF_GLOB_FULLPATH])dnl +if test "x$INSTALL" = "x./install-sh -c"; then + if test -f /usr/sbin/install ; then + case "$host_os" in + (linux*gnu*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) + INSTALL=/usr/sbin/install + ;; + esac + fi +fi +case x$INSTALL in +(x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; (*) CF_DIRNAME(cf_dir,$INSTALL) @@ -7089,14 +7254,17 @@ fi AC_SUBST(LDCONFIG) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_PROG_LINT version: 5 updated: 2022/08/20 15:44:13 +dnl CF_PROG_LINT version: 7 updated: 2024/11/30 14:37:45 dnl ------------ AC_DEFUN([CF_PROG_LINT], [ AC_CHECK_PROGS(LINT, lint cppcheck splint) case "x$LINT" in +(xlint|x*/lint) # NetBSD 10 + test -z "$LINT_OPTS" && LINT_OPTS="-chapbrxzgFS -v -Ac11" + ;; (xcppcheck|x*/cppcheck) - test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" + test -z "$LINT_OPTS" && LINT_OPTS="--enable=all -D__CPPCHECK__" ;; esac AC_SUBST(LINT_OPTS) @@ -7125,7 +7293,15 @@ AC_MSG_RESULT($cf_prog_ln_sf) test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f" ])dnl dnl --------------------------------------------------------------------------- -dnl CF_REGEX version: 18 updated: 2021/01/01 16:53:59 +dnl CF_PROG_TBL version: 1 updated: 2025/11/01 18:43:38 +dnl ----------- +dnl Allow the "tbl" program to be configured. +dnl "TBL" is too short, and likely to conflict. +AC_DEFUN([CF_PROG_TBL],[ +AC_PATH_PROG(NROFF_TBL,tbl) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REGEX version: 20 updated: 2025/12/24 12:27:29 dnl -------- dnl Attempt to determine if we've got one of the flavors of regular-expression dnl code that we can support. @@ -7181,12 +7357,12 @@ case "$cf_regex_func" in (compile) for cf_regex_hdr in regexp.h regexpr.h do - AC_TRY_LINK([#include <$cf_regex_hdr>],[ + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <$cf_regex_hdr>],[ char *p = compile("", "", "", 0); int x = step("", ""); (void)p; (void)x; - ],[ + ])],[ cf_cv_regex_hdrs=$cf_regex_hdr break ]) @@ -7195,15 +7371,16 @@ case "$cf_regex_func" in (*) for cf_regex_hdr in regex.h do - AC_TRY_LINK([#include <sys/types.h> + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h> +#include <stdio.h> #include <$cf_regex_hdr>],[ - regex_t *p = 0; + regex_t *p = NULL; int x = regcomp(p, "", 0); int y = regexec(p, "", 0, 0, 0); (void)x; (void)y; regfree(p); - ],[ + ])],[ cf_cv_regex_hdrs=$cf_regex_hdr break ]) @@ -7269,6 +7446,30 @@ define([CF_REMOVE_LIB], $1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'` ])dnl dnl --------------------------------------------------------------------------- +dnl CF_REQUIRE_PKG version: 1 updated: 2025/01/10 19:55:54 +dnl -------------- +dnl Update $REQUIRE_PKG, which lists the known required packages for this +dnl program. +dnl +dnl $1 = package(s) to require, e.g., in the generated ".pc" file +define([CF_REQUIRE_PKG], +[ +for cf_required in $1 +do + # check for duplicates + for cf_require_pkg in $REQUIRE_PKG + do + if test "$cf_required" = "$cf_require_pkg" + then + cf_required= + break + fi + done + test -n "$cf_required" && REQUIRE_PKG="$REQUIRE_PKG $cf_required" +done +AC_SUBST(REQUIRE_PKG) +])dnl +dnl --------------------------------------------------------------------------- dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45 dnl --------------------- dnl Restore flags saved in CF_SAVE_XTRA_FLAGS @@ -7280,7 +7481,7 @@ CFLAGS="$cf_save_CFLAGS_$1" CPPFLAGS="$cf_save_CPPFLAGS_$1" ])dnl dnl --------------------------------------------------------------------------- -dnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50 +dnl CF_RPATH_HACK version: 14 updated: 2025/12/15 04:04:20 dnl ------------- AC_DEFUN([CF_RPATH_HACK], [AC_REQUIRE([AC_PROG_FGREP])dnl @@ -7296,8 +7497,8 @@ if test -n "$LD_RPATH_OPT" ; then then cf_rpath_oops= -AC_TRY_LINK([#include <stdio.h>], - [printf("Hello");], +AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], + [printf("Hello");])], [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq` cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`]) @@ -7423,7 +7624,7 @@ do done ])dnl dnl --------------------------------------------------------------------------- -dnl CF_SHARED_OPTS version: 111 updated: 2024/03/29 20:08:49 +dnl CF_SHARED_OPTS version: 114 updated: 2025/12/15 04:04:20 dnl -------------- dnl -------------- dnl Attempt to determine the appropriate CC/LD options for creating a shared @@ -7513,7 +7714,7 @@ AC_DEFUN([CF_SHARED_OPTS], for CC_SHARED_OPTS in -fPIC -fpic '' do CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" - AC_TRY_COMPILE([#include <stdio.h>],[int x = 1; (void)x],[break],[]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>],[int x = 1; (void)x])],[break],[]) done AC_MSG_RESULT($CC_SHARED_OPTS) CFLAGS="$cf_save_CFLAGS" @@ -7588,7 +7789,7 @@ CF_EOF AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [ cf_save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - AC_TRY_LINK(, [int i;], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no) + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [int i;])], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no) LDFLAGS=$cf_save_LDFLAGS]) if test "$cf_cv_ldflags_search_paths_first" = yes; then LDFLAGS="$LDFLAGS -Wl,-search_paths_first" @@ -7718,7 +7919,7 @@ CF_EOF -L*) ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`") ;; - *.obj | *.o) + *.obj | *.$OBJEXT) ldopts+=("\[$]1") ;; -Wl,*) @@ -7895,7 +8096,7 @@ CF_EOF for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O do CFLAGS="$cf_shared_opts $cf_save_CFLAGS" - AC_TRY_COMPILE([#include <stdio.h>],[printf("Hello\\n");],[break]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>],[printf("Hello\\n");])],[break]) done CFLAGS="$cf_save_CFLAGS" CC_SHARED_OPTS=$cf_shared_opts @@ -7939,7 +8140,7 @@ cat > conftest.$ac_ext <<EOF int main(int argc, char *argv[[]]) { printf("hello\\n"); - return (argv[[argc-1]] == 0) ; + return (argv[[argc-1]] == NULL) ; } EOF cf_save_CFLAGS="$CFLAGS" @@ -8002,7 +8203,7 @@ define([CF_SHARED_SONAME], fi ]) dnl --------------------------------------------------------------------------- -dnl CF_SIGWINCH version: 7 updated: 2023/02/18 17:41:25 +dnl CF_SIGWINCH version: 8 updated: 2025/12/23 18:53:34 dnl ----------- dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all dnl programs need this test). @@ -8014,18 +8215,18 @@ dnl break that part of the interface as well. AC_DEFUN([CF_SIGWINCH], [ AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <sys/types.h> #include <sys/signal.h> -],[int x = SIGWINCH; (void)x], +],[int x = SIGWINCH; (void)x])], [cf_cv_define_sigwinch=yes], - [AC_TRY_COMPILE([ + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #undef _XOPEN_SOURCE #undef _POSIX_SOURCE #undef _POSIX_C_SOURCE #include <sys/types.h> #include <sys/signal.h> -],[int x = SIGWINCH; (void)x], +],[int x = SIGWINCH; (void)x])], [cf_cv_define_sigwinch=maybe], [cf_cv_define_sigwinch=no]) ]) @@ -8037,7 +8238,7 @@ cf_cv_fixup_sigwinch=unknown cf_sigwinch=32 while test "$cf_sigwinch" != 1 do - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #undef _XOPEN_SOURCE #undef _POSIX_SOURCE #undef _POSIX_C_SOURCE @@ -8047,7 +8248,7 @@ do #if SIGWINCH != $cf_sigwinch #error SIGWINCH is not $cf_sigwinch #endif -int x = SIGWINCH; (void)x], +int x = SIGWINCH; (void)x])], [cf_cv_fixup_sigwinch=$cf_sigwinch break]) @@ -8061,7 +8262,7 @@ done fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47 +dnl CF_SIG_ATOMIC_T version: 6 updated: 2025/12/24 12:27:29 dnl --------------- dnl signal handler, but there are some gcc dependencies in that recommendation. dnl Try anyway. @@ -8074,7 +8275,7 @@ AC_CACHE_VAL(cf_cv_sig_atomic_t,[ "sig_atomic_t" \ "int" do - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <sys/types.h> #include <signal.h> #include <stdio.h> @@ -8087,7 +8288,7 @@ static void handler(int sig) x = 5; }], [signal(SIGINT, handler); - x = 1], + x = 1])], [cf_cv_sig_atomic_t=$cf_type], [cf_cv_sig_atomic_t=no]) test "$cf_cv_sig_atomic_t" != no && break @@ -8097,7 +8298,7 @@ AC_MSG_RESULT($cf_cv_sig_atomic_t) test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_SIZECHANGE version: 18 updated: 2021/09/04 06:35:04 +dnl CF_SIZECHANGE version: 19 updated: 2025/12/22 04:16:14 dnl ------------- dnl Check for definitions & structures needed for window size-changing dnl @@ -8117,7 +8318,7 @@ do then CF_APPEND_TEXT(CPPFLAGS,-D$cf_opts) fi - AC_TRY_COMPILE([#include <sys/types.h> + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h> #ifdef HAVE_TERMIOS_H #include <termios.h> #else @@ -8155,13 +8356,13 @@ do no TIOCGSIZE or TIOCGWINSZ #endif /* TIOCGWINSZ */ #endif /* TIOCGSIZE */ - ], + ])], [cf_cv_sizechange=yes], [cf_cv_sizechange=no]) CPPFLAGS="$cf_save_CPPFLAGS" if test "$cf_cv_sizechange" = yes ; then - echo "size-change succeeded ($cf_opts)" >&AC_FD_CC + echo "size-change succeeded ($cf_opts)" >&AS_MESSAGE_LOG_FD test -n "$cf_opts" && cf_cv_sizechange="$cf_opts" break fi @@ -8294,7 +8495,7 @@ if test -n "$ADA_SUBDIRS"; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_STDCPP_LIBRARY version: 12 updated: 2021/01/01 13:31:04 +dnl CF_STDCPP_LIBRARY version: 13 updated: 2025/12/24 12:27:29 dnl ----------------- dnl Check for -lstdc++, which is GNU's standard C++ library. dnl If $CXXLIBS is set, add that to the libraries used for test-linking. @@ -8307,9 +8508,9 @@ if test -n "$GXX" ; then cf_save="$LIBS" LIBS="$LIBS $CXXLIBS" AC_MSG_CHECKING(if we already have C++ library) - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <iostream>],[ - std::cout << "Hello World!" << std::endl;], + std::cout << "Hello World!" << std::endl;])], [cf_have_libstdcpp=yes], [cf_have_libstdcpp=no]) AC_MSG_RESULT($cf_have_libstdcpp) @@ -8334,9 +8535,9 @@ if test -n "$GXX" ; then cf_save="$LIBS" LIBS="$LIBS $CXXLIBS" CF_ADD_LIB($cf_stdcpp_libname) - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <iostream>],[ - std::cout << "Hello World!" << std::endl;], + std::cout << "Hello World!" << std::endl;])], [cf_cv_libstdcpp=yes], [cf_cv_libstdcpp=no]) LIBS="$cf_save" @@ -8352,7 +8553,7 @@ dnl Remove "-g" option from the compiler options AC_DEFUN([CF_STRIP_G_OPT], [$1=`echo "${$1}" | CF__SED_TRIMBLANKS(-e 's%-g %%' -e 's%-g$%%')`])dnl dnl --------------------------------------------------------------------------- -dnl CF_STRUCT_SIGACTION version: 6 updated: 2023/12/03 09:21:34 +dnl CF_STRUCT_SIGACTION version: 7 updated: 2025/12/24 12:27:29 dnl ------------------- dnl Check if we need _POSIX_SOURCE defined to use struct sigaction. We'll only dnl do this if we've found the sigaction function. @@ -8361,17 +8562,17 @@ AC_REQUIRE([CF_XOPEN_SOURCE]) if test "$ac_cv_func_sigaction" = yes; then AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE) -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <sys/types.h> #include <signal.h>], - [struct sigaction act; (void)act], + [struct sigaction act; (void)act])], [sigact_bad=no], [ -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #define _POSIX_SOURCE #include <sys/types.h> #include <signal.h>], - [struct sigaction act; (void)act], + [struct sigaction act; (void)act])], [sigact_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])], [sigact_bad=unknown])]) @@ -8379,13 +8580,13 @@ AC_MSG_RESULT($sigact_bad) fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_STRUCT_TERMIOS version: 13 updated: 2023/12/03 19:38:54 +dnl CF_STRUCT_TERMIOS version: 15 updated: 2025/12/22 04:16:14 dnl ----------------- dnl Some machines require _POSIX_SOURCE to completely define struct termios. AC_DEFUN([CF_STRUCT_TERMIOS],[ AC_REQUIRE([CF_XOPEN_SOURCE]) -AC_CHECK_HEADERS( \ +AC_CHECK_HEADERS( sgtty.h \ termio.h \ termios.h \ unistd.h \ @@ -8401,13 +8602,13 @@ if test "$ac_cv_header_termios_h" = yes ; then esac if test "$termios_bad" = maybe ; then AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE) - AC_TRY_COMPILE([#include <termios.h>], - [struct termios foo; int x = (int)(foo.c_iflag = 1); (void)x], + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <termios.h>], + [struct termios foo; int x = (int)(foo.c_iflag = 1); (void)x])], termios_bad=no, [ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #define _POSIX_SOURCE #include <termios.h>], - [struct termios foo; int x = (int)(foo.c_iflag = 2); (void)x], + [struct termios foo; int x = (int)(foo.c_iflag = 2); (void)x])], termios_bad=unknown, termios_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])) ]) @@ -8487,7 +8688,7 @@ AC_SUBST(cf_cv_header_stdbool_h) AC_SUBST(cf_cv_type_of_bool)dnl ])dnl dnl --------------------------------------------------------------------------- -dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57 +dnl CF_SYS_TIME_SELECT version: 7 updated: 2025/12/24 12:27:29 dnl ------------------ dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on dnl older SCO configurations. @@ -8495,7 +8696,7 @@ AC_DEFUN([CF_SYS_TIME_SELECT], [ AC_MSG_CHECKING(if sys/time.h works with sys/select.h) AC_CACHE_VAL(cf_cv_sys_time_select,[ -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <sys/types.h> #ifdef HAVE_SYS_TIME_H #include <sys/time.h> @@ -8503,7 +8704,7 @@ AC_TRY_COMPILE([ #ifdef HAVE_SYS_SELECT_H #include <sys/select.h> #endif -],[],[cf_cv_sys_time_select=yes], +],[])],[cf_cv_sys_time_select=yes], [cf_cv_sys_time_select=no]) ]) AC_MSG_RESULT($cf_cv_sys_time_select) @@ -8519,7 +8720,7 @@ top_builddir=ifelse($1,,`pwd`,$1) AC_SUBST(top_builddir) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15 +dnl CF_TRY_PKG_CONFIG version: 7 updated: 2025/01/10 19:55:54 dnl ----------------- dnl This is a simple wrapper to use for pkg-config, for libraries which may be dnl available in that form. @@ -8536,6 +8737,7 @@ if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then cf_pkgconfig_libs="`$PKG_CONFIG --libs "$1" 2>/dev/null`" CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs) CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs) + CF_REQUIRE_PKG($1) CF_ADD_CFLAGS($cf_pkgconfig_incs) CF_ADD_LIBS($cf_pkgconfig_libs) ifelse([$2],,:,[$2]) @@ -8546,17 +8748,17 @@ else fi ]) dnl --------------------------------------------------------------------------- -dnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16 +dnl CF_TRY_XOPEN_SOURCE version: 5 updated: 2025/12/14 17:40:20 dnl ------------------- dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we dnl can define it successfully. AC_DEFUN([CF_TRY_XOPEN_SOURCE],[ AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ - AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY)], [cf_cv_xopen_source=no], [cf_save="$CPPFLAGS" CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) - AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY)], [cf_cv_xopen_source=no], [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) CPPFLAGS="$cf_save" @@ -8571,7 +8773,7 @@ if test "$cf_cv_xopen_source" != no ; then fi ]) dnl --------------------------------------------------------------------------- -dnl CF_TYPEOF_CHTYPE version: 11 updated: 2023/01/05 17:57:59 +dnl CF_TYPEOF_CHTYPE version: 12 updated: 2024/12/14 16:09:34 dnl ---------------- dnl Determine the type we should use for chtype (and attr_t, which is treated dnl as the same thing). We want around 32 bits, so on most machines want a @@ -8587,7 +8789,7 @@ $ac_includes_default int main(void) { FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { + if (fp != NULL) { char *result = "long"; if (sizeof(unsigned long) > sizeof(unsigned int)) { int n; @@ -8623,23 +8825,23 @@ AC_SUBST(cf_cv_typeof_chtype) AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype,[Define to actual type if needed for chtype]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_TYPE_SIGACTION version: 5 updated: 2023/12/03 09:21:34 +dnl CF_TYPE_SIGACTION version: 6 updated: 2025/12/24 12:27:29 dnl ----------------- dnl AC_DEFUN([CF_TYPE_SIGACTION], [ AC_MSG_CHECKING([for type sigaction_t]) AC_CACHE_VAL(cf_cv_type_sigaction,[ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <signal.h>], - [sigaction_t x; (void)x], + [sigaction_t x; (void)x])], [cf_cv_type_sigaction=yes], [cf_cv_type_sigaction=no])]) AC_MSG_RESULT($cf_cv_type_sigaction) test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION,1,[Define to 1 if we have the sigaction_t type]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_UNSIGNED_LITERALS version: 3 updated: 2023/12/03 10:02:17 +dnl CF_UNSIGNED_LITERALS version: 4 updated: 2025/12/24 12:27:29 dnl -------------------- dnl Test if the compiler supports 'U' and 'L' suffixes. Only old compilers dnl won't, but they're still there. @@ -8647,7 +8849,7 @@ AC_DEFUN([CF_UNSIGNED_LITERALS], [ AC_MSG_CHECKING([if unsigned literals are legal]) AC_CACHE_VAL(cf_cv_unsigned_literals,[ - AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1; (void)x], + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[long x = 1L + 1UL + 1U + 1; (void)x])], [cf_cv_unsigned_literals=yes], [cf_cv_unsigned_literals=no]) ]) @@ -8663,20 +8865,20 @@ AC_DEFUN([CF_UPPER], $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` ])dnl dnl --------------------------------------------------------------------------- -dnl CF_UTF8_LIB version: 10 updated: 2023/01/11 04:05:23 +dnl CF_UTF8_LIB version: 12 updated: 2025/12/22 04:16:14 dnl ----------- dnl Check for multibyte support, and if not found, utf8 compatibility library AC_DEFUN([CF_UTF8_LIB], [ -AC_HAVE_HEADERS(wchar.h) +AC_CHECK_HEADERS(wchar.h) AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ cf_save_LIBS="$LIBS" - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ $ac_includes_default #ifdef HAVE_WCHAR_H #include <wchar.h> #endif -],[putwc(0,0);], +],[putwc(0,0);])], [cf_cv_utf8_lib=yes], [CF_FIND_LINKAGE([ #include <libutf8.h>],[putwc(0,0);],utf8, @@ -8694,19 +8896,19 @@ if test "$cf_cv_utf8_lib" = "add-on" ; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_VA_COPY version: 6 updated: 2018/12/04 18:14:25 +dnl CF_VA_COPY version: 7 updated: 2025/12/24 12:27:29 dnl ---------- dnl check for va_copy, part of stdarg.h starting with ISO C 1999. dnl Also, workaround for glibc's __va_copy, by checking for both. dnl Finally, try to accommodate pre-ISO C 1999 headers. AC_DEFUN([CF_VA_COPY],[ AC_CACHE_CHECK(for va_copy, cf_cv_have_va_copy,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> ],[ static va_list dst; static va_list src; - va_copy(dst, src)], + va_copy(dst, src)])], cf_cv_have_va_copy=yes, cf_cv_have_va_copy=no)]) @@ -8716,12 +8918,12 @@ then else # !cf_cv_have_va_copy AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> ],[ static va_list dst; static va_list src; - __va_copy(dst, src)], + __va_copy(dst, src)])], cf_cv_have___va_copy=yes, cf_cv_have___va_copy=no)]) @@ -8731,12 +8933,12 @@ then else # !cf_cv_have___va_copy AC_CACHE_CHECK(for __builtin_va_copy, cf_cv_have___builtin_va_copy,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> ],[ static va_list dst; static va_list src; - __builtin_va_copy(dst, src)], + __builtin_va_copy(dst, src)])], cf_cv_have___builtin_va_copy=yes, cf_cv_have___builtin_va_copy=no)]) @@ -8753,24 +8955,24 @@ case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy (*) AC_CACHE_CHECK(if we can simply copy va_list, cf_cv_pointer_va_list,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> ],[ va_list dst; va_list src; - dst = src], + dst = src])], cf_cv_pointer_va_list=yes, cf_cv_pointer_va_list=no)]) if test "$cf_cv_pointer_va_list" = no then AC_CACHE_CHECK(if we can copy va_list indirectly, cf_cv_array_va_list,[ -AC_TRY_LINK([ +AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <stdarg.h> ],[ va_list dst; va_list src; - *dst = *src], + *dst = *src])], cf_cv_array_va_list=yes, cf_cv_array_va_list=no)]) test "$cf_cv_array_va_list" = yes && AC_DEFINE(ARRAY_VA_LIST,1,[Define to 1 if we can copy va_list indirectly]) @@ -8779,15 +8981,15 @@ AC_TRY_LINK([ esac ]) dnl --------------------------------------------------------------------------- -dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 +dnl CF_VERBOSE version: 4 updated: 2025/12/14 17:51:46 dnl ---------- dnl Use AC_VERBOSE w/o the warnings AC_DEFUN([CF_VERBOSE], -[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG +[test -n "$verbose" && echo " $1" 1>&AS_MESSAGE_FD CF_MSG_LOG([$1]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_VERSION_INFO version: 8 updated: 2021/01/01 13:31:04 +dnl CF_VERSION_INFO version: 11 updated: 2025/09/20 13:27:11 dnl --------------- dnl Define several useful symbols derived from the VERSION file. A separate dnl file is preferred to embedding the version numbers in various scripts. @@ -8865,17 +9067,19 @@ AC_SUBST(VERSION_PATCH) dnl if a package name is given, define its corresponding version info. We dnl need the package name to ensure that the defined symbols are unique. ifelse($1,,,[ - cf_PACKAGE=$1 + PROGRAM=$1 PACKAGE=ifelse($2,,$1,$2) AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[Define to the package-name]) + AC_SUBST(PROGRAM) AC_SUBST(PACKAGE) - CF_UPPER(cf_PACKAGE,$cf_PACKAGE) - AC_DEFINE_UNQUOTED(${cf_PACKAGE}_VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}") - AC_DEFINE_UNQUOTED(${cf_PACKAGE}_PATCHDATE,${VERSION_PATCH}) + AH_TEMPLATE([AS_TR_CPP($1[_VERSION])],[version of package]) + AC_DEFINE_UNQUOTED(AS_TR_CPP($1[_VERSION]),"${VERSION_MAJOR}.${VERSION_MINOR}",[define to version of $1]) + AH_TEMPLATE([AS_TR_CPP($1[_PATCHDATE])],[patchdate of package]) + AC_DEFINE_UNQUOTED(AS_TR_CPP($1[_PATCHDATE]),${VERSION_PATCH},[define to patchdate of $1]) ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_WCHAR_TYPE version: 5 updated: 2023/12/03 09:21:34 +dnl CF_WCHAR_TYPE version: 6 updated: 2025/12/24 12:27:29 dnl ------------- dnl Check if type wide-character type $1 is declared, and if so, which header dnl file is needed. The second parameter is used to set a shell variable when @@ -8885,16 +9089,16 @@ AC_DEFUN([CF_WCHAR_TYPE], [ # This is needed on Tru64 5.0 to declare $1 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[ -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <stdlib.h> #include <stdarg.h> #include <stdio.h> #ifdef HAVE_LIBUTF8_H #include <libutf8.h> #endif], - [$1 state; (void)state], + [$1 state; (void)state])], [cf_cv_$1=no], - [AC_TRY_COMPILE([ + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <stdlib.h> #include <stdarg.h> #include <stdio.h> @@ -8902,7 +9106,7 @@ AC_TRY_COMPILE([ #ifdef HAVE_LIBUTF8_H #include <libutf8.h> #endif], - [$1 value; (void) value], + [$1 value; (void) value])], [cf_cv_$1=yes], [cf_cv_$1=unknown])])]) @@ -8925,14 +9129,14 @@ fi ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06 +dnl CF_WEAK_SYMBOLS version: 2 updated: 2025/12/24 12:27:29 dnl --------------- dnl Check for compiler-support for weak symbols. dnl This works with "recent" gcc. AC_DEFUN([CF_WEAK_SYMBOLS],[ AC_CACHE_CHECK(if $CC supports weak symbols,cf_cv_weak_symbols,[ -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <stdio.h>], [ #if defined(__GNUC__) @@ -8947,7 +9151,7 @@ AC_TRY_COMPILE([ #endif weak_symbol(fopen); -],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no]) +])],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no]) ]) ])dnl dnl --------------------------------------------------------------------------- @@ -9001,6 +9205,56 @@ $1_ABI=$cf_cv_abi_version cf_cv_abi_default=$cf_cv_abi_version ])dnl dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA version: 2 updated: 2024/11/09 18:07:29 +dnl ----------- +dnl Check for the Ada compiler (unless requested to not do this), which causes +dnl a further check for a C compiler which can work with the Ada compiler. +AC_DEFUN([CF_WITH_ADA],[ +AC_ARG_WITH(ada, + [ --without-ada suppress check for Ada compiler], + [cf_with_ada=$withval], + [cf_with_ada=yes]) + +cf_prog_cc="gcc cc" +if test "x$cf_with_ada" = xyes +then + CF_PROG_GNAT + if test "x$cf_cv_prog_gnat_correct" = xyes; then + # gcc's developers chose to deprecate gnatgcc before making gprconfig + # work. They replaced gnatgcc in gcc 13 with a script which spits out + # a warning offering advice which could never work. + # + # Here is a workaround. + AC_PATH_PROG(cf_cv_path_gnatgcc,gnatgcc,no) + if test "$cf_cv_path_gnatgcc" != no + then + AC_MSG_CHECKING(for improvement) + cf_file_gnatgcc=`file -L "$cf_cv_path_gnatgcc" 2>/dev/null` + case "x$cf_file_gnatgcc" in + (*script*) + cf_cv_path_gnatgcc=`sh -x "$cf_cv_path_gnatgcc" --version 2>&1 | grep -w exec | sed -e 's/^[[ ]]*+[[ ]]*//' -e 's/exec[[ ]]//' -e 's/ .*//'` + ;; + (*) + cf_cv_path_gnatgcc=no + ;; + esac + AC_MSG_RESULT($cf_cv_path_gnatgcc) + test "$cf_cv_path_gnatgcc" = no && cf_cv_path_gnatgcc=gnatgcc + cf_prog_cc="$cf_cv_path_gnatgcc $cf_prog_cc" + fi + fi +fi +case "$cf_prog_cc" in +(*/*) + CC="$cf_prog_cc" + AC_SUBST(CC) + ;; +(*) + CF_PROG_CC($cf_prog_cc) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- dnl CF_WITH_ADA_COMPILER version: 3 updated: 2023/10/28 11:59:01 dnl -------------------- dnl Command-line option to specify the Ada95 compiler. @@ -9201,7 +9455,7 @@ if test "$with_gpm" != no ; then fi ]) dnl --------------------------------------------------------------------------- -dnl CF_WITH_LIBTOOL version: 36 updated: 2021/01/01 13:31:04 +dnl CF_WITH_LIBTOOL version: 38 updated: 2025/10/01 18:05:23 dnl --------------- dnl Provide a configure option to incorporate libtool. Define several useful dnl symbols for the makefile rules. @@ -9285,7 +9539,7 @@ ifdef([AC_PROG_LIBTOOL],[ fi ])dnl LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o' - LIB_OBJECT='${OBJECTS:.o=.lo}' + LIB_OBJECT='${OBJECTS:.${OBJEXT}=.lo}' LIB_SUFFIX=.la LIB_CLEAN='${LIBTOOL} --mode=clean' LIB_COMPILE='${LIBTOOL} --mode=compile' @@ -9565,7 +9819,7 @@ if test "x$with_pcre2" != xno ; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_WITH_PKG_CONFIG_LIBDIR version: 23 updated: 2023/11/22 20:48:30 +dnl CF_WITH_PKG_CONFIG_LIBDIR version: 25 updated: 2024/08/03 13:34:29 dnl ------------------------- dnl Allow the choice of the pkg-config library directory to be overridden. dnl @@ -9579,6 +9833,7 @@ dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config) dnl optionally ignores $PKG_CONFIG_LIBDIR. Very old versions of pkg-config, dnl e.g., Solaris 10 also do not recognize $PKG_CONFIG_LIBDIR. AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[ +AC_REQUIRE([CF_GLOB_FULLPATH])dnl case "$PKG_CONFIG" in (no|none|yes) @@ -9612,10 +9867,10 @@ case "x$cf_search_path" in ;; (x) ;; -(x/*\ *) +(x$GLOB_FULLPATH_POSIX\ *|x$GLOB_FULLPATH_OTHER\ *) PKG_CONFIG_LIBDIR= ;; -(x/*) +(x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) PKG_CONFIG_LIBDIR="$cf_search_path" AC_MSG_RESULT($PKG_CONFIG_LIBDIR) cf_search_path= @@ -9634,7 +9889,15 @@ case "x$cf_search_path" in pkg-config \ pkgconf do - cf_search_path=`"$PKG_CONFIG" --variable=pc_path "$cf_pkg_program" 2>/dev/null | tr : ' '` + cf_raw_search_path=`"$PKG_CONFIG" --variable=pc_path "$cf_pkg_program" 2>/dev/null` + case "$cf_raw_search_path" in + (*\\*) + cf_search_path=`echo "$cf_raw_search_path" | tr ';' ' ' | tr '\' '/'` + ;; + (*/*) + cf_search_path=`echo "$cf_raw_search_path" | tr : ' '` + ;; + esac test -n "$cf_search_path" && break done @@ -9707,7 +9970,7 @@ fi AC_SUBST(PKG_CONFIG_LIBDIR) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57 +dnl CF_WITH_PTHREAD version: 8 updated: 2025/12/24 12:27:29 dnl --------------- dnl Check for POSIX thread library. AC_DEFUN([CF_WITH_PTHREAD], @@ -9728,12 +9991,12 @@ if test "$with_pthread" != no ; then AC_MSG_CHECKING(if we can link with the $cf_lib_pthread library) cf_save_LIBS="$LIBS" CF_ADD_LIB($cf_lib_pthread) - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include <pthread.h> ],[ int rc = pthread_create(0,0,0,0); int r2 = pthread_mutexattr_settype(0, 0); -],[with_pthread=yes],[with_pthread=no]) +])],[with_pthread=yes],[with_pthread=no]) LIBS="$cf_save_LIBS" AC_MSG_RESULT($with_pthread) test "$with_pthread" = yes && break @@ -9775,7 +10038,7 @@ ifelse($1,,[ ]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_WITH_SYSMOUSE version: 3 updated: 2012/10/06 17:56:13 +dnl CF_WITH_SYSMOUSE version: 4 updated: 2025/12/24 12:27:29 dnl ---------------- dnl If we can compile with sysmouse, make it available unless it is not wanted. AC_DEFUN([CF_WITH_SYSMOUSE],[ @@ -9787,7 +10050,7 @@ AC_ARG_WITH(sysmouse, [cf_with_sysmouse=$withval], [cf_with_sysmouse=maybe]) if test "$cf_with_sysmouse" != no ; then - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <osreldate.h> #if (__FreeBSD_version >= 400017) #include <sys/consio.h> @@ -9798,14 +10061,14 @@ AC_ARG_WITH(sysmouse, ],[ struct mouse_info the_mouse; ioctl(0, CONS_MOUSECTL, &the_mouse); -],[cf_with_sysmouse=yes],[cf_with_sysmouse=no]) +])],[cf_with_sysmouse=yes],[cf_with_sysmouse=no]) fi AC_MSG_RESULT($cf_with_sysmouse) test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE,1,[Define to 1 if we can/should use the sysmouse interface]) fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12 +dnl CF_WITH_SYSTYPE version: 2 updated: 2025/12/14 18:08:20 dnl --------------- dnl For testing, override the derived host system-type which is used to decide dnl things such as the linker commands used to build shared libraries. This is @@ -9816,7 +10079,7 @@ dnl This is different from the --host option: it is used only for testing parts dnl of the configure script which would not be reachable with --host since that dnl relies on the build environment being real, rather than mocked up. AC_DEFUN([CF_WITH_SYSTYPE],[ -CF_CHECK_CACHE([AC_CANONICAL_SYSTEM]) +CF_CHECK_CACHE([AC_CANONICAL_TARGET]) AC_ARG_WITH(system-type, [ --with-system-type=XXX test: override derived host system-type], [AC_MSG_WARN(overriding system type to $withval) @@ -9854,7 +10117,7 @@ CF_NO_LEAKS_OPTION(valgrind, [USE_VALGRIND]) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_WITH_VERSIONED_SYMS version: 13 updated: 2023/12/03 09:24:04 +dnl CF_WITH_VERSIONED_SYMS version: 17 updated: 2025/12/16 04:01:46 dnl ---------------------- dnl Use this when building shared library with ELF, to markup symbols with the dnl version identifier from the given input file. Generally that identifier is @@ -9864,7 +10127,11 @@ dnl $1 = basename of the ".map" file (default $PACKAGE) AC_DEFUN([CF_WITH_VERSIONED_SYMS], [AC_REQUIRE([AC_PROG_FGREP])dnl AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([CF_GLOB_FULLPATH])dnl +if test "$with_libtool" = "yes" ; then + : +elif test "$with_shared" = "yes" ; then AC_MSG_CHECKING(if versioned-symbols file should be used) AC_ARG_WITH(versioned-syms, [[ --with-versioned-syms[=MAP-FILE] version ELF shared library symbols per MAP-FILE]], @@ -9877,7 +10144,7 @@ case "x$with_versioned_syms" in ;; (xno) ;; -(x/*) +(x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms) ;; (*) @@ -9899,11 +10166,13 @@ then VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}" MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\[$]{VERSIONED_SYMS} -Wl,%"` CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB) + LIB_CREATE="[$]MK_SHARED_LIB" ;; (*-dy\ *) VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}" MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\[$]{VERSIONED_SYMS} -dy%"` CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB) + LIB_CREATE="[$]MK_SHARED_LIB" ;; (*) AC_MSG_WARN(this system does not support versioned-symbols) @@ -9978,16 +10247,18 @@ conftest.so: conftest.$ac_cv_objext EOF # compile source, make library - if make -f conftest.mk 2>&AC_FD_CC >/dev/null + if make -f conftest.mk 2>&AS_MESSAGE_LOG_FD >/dev/null then # test for missing symbol in either Data or Text section - cf_missing="`nm -P conftest.so 2>&AC_FD_CC |${FGREP-fgrep} _ismissing | ${EGREP-egrep} '[[ ]][[DT]][[ ]]'`" + cf_missing="`nm -P conftest.so 2>&AS_MESSAGE_LOG_FD |${FGREP-fgrep} _ismissing | ${EGREP-egrep} '[[ ]][[DT]][[ ]]'`" test -n "$cf_missing" && WILDCARD_SYMS=yes fi AC_MSG_RESULT($WILDCARD_SYMS) rm -f conftest.* fi fi + +fi AC_SUBST(RESULTING_SYMS) AC_SUBST(VERSIONED_SYMS) AC_SUBST(WILDCARD_SYMS) @@ -10079,7 +10350,59 @@ fi AC_SUBST(no_x11_rgb) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27 +dnl CF_WITH_XTERM_KBS version: 3 updated: 2025/10/21 03:55:54 +dnl ----------------- +dnl Configure-option with platform-defaults for the "xterm+kbs" building block +dnl in the terminfo file. +dnl +dnl The terminfo "kbs" value corresponds to "stty erase", and is conventionally +dnl assigned to the key which has +dnl +dnl a "Backspace" label and/or +dnl a backarrow symbol. +dnl +dnl See XTerm FAQ "Why doesn't my delete key work?" +dnl https://invisible-island.net/xterm/xterm.faq.html#xterm_erase +AC_DEFUN([CF_WITH_XTERM_KBS],[ +case $host_os in +(linux*gnu*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc|linux*musl|openbsd*|darwin*) + want_xterm_kbs=DEL + ;; +(*) + want_xterm_kbs=BS + ;; +esac + +AC_MSG_CHECKING(if xterm backspace-key sends BS or DEL) +AC_ARG_WITH(xterm-kbs, + [[ --with-xterm-kbs[=XXX] specify if xterm backspace-key sends BS or DEL]], + [with_xterm_kbs=$withval], + [with_xterm_kbs=auto]) +case x$with_xterm_kbs in +(xyes|xno|xBS|xbs|x8) + with_xterm_kbs=BS + ;; +(xDEL|xdel|x127) + with_xterm_kbs=DEL + ;; +(xauto) + with_xterm_kbs=$want_xterm_kbs + ;; +(*) + with_xterm_kbs=$withval + ;; +esac +AC_MSG_RESULT($with_xterm_kbs) +XTERM_KBS=$with_xterm_kbs +AC_SUBST(XTERM_KBS) + +if test "x$with_xterm_kbs" != "x$want_xterm_kbs" +then + AC_MSG_WARN([expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_SOURCE version: 71 updated: 2025/12/14 17:40:20 dnl --------------- dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, dnl or adapt to the vendor's definitions to get equivalent functionality, @@ -10139,9 +10462,12 @@ case "$host_os" in cf_xopen_source="-D_SGI_SOURCE" cf_XOPEN_SOURCE= ;; -(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) +(linux*gnu*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) CF_GNU_SOURCE($cf_XOPEN_SOURCE) ;; +linux*musl) + cf_xopen_source="-D_BSD_SOURCE" + ;; (minix*) cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... ;; @@ -10193,7 +10519,7 @@ case "$host_os" in # Some of these niche implementations use copy/paste, double-check... if test "$cf_cv_xopen_source" = no ; then CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE) - AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY)],,[ AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable) CPPFLAGS="$cf_save_xopen_cppflags"]) fi @@ -10209,19 +10535,19 @@ dnl which is still not guaranteed to provide all of the entrypoints that dnl _XOPEN_SOURCE would yield. if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) - AC_TRY_COMPILE([#include <stdlib.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>],[ #ifndef _XOPEN_SOURCE #error _XOPEN_SOURCE is not defined -#endif], +#endif])], [cf_XOPEN_SOURCE_set=yes], [cf_XOPEN_SOURCE_set=no]) AC_MSG_RESULT($cf_XOPEN_SOURCE_set) if test "$cf_XOPEN_SOURCE_set" = yes then - AC_TRY_COMPILE([#include <stdlib.h>],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>],[ #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE #error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE -#endif], +#endif])], [cf_XOPEN_SOURCE_set_ok=yes], [cf_XOPEN_SOURCE_set_ok=no]) if test "$cf_XOPEN_SOURCE_set_ok" = no diff --git a/contrib/ncurses/announce.html.in b/contrib/ncurses/announce.html.in index 9889ef1bfb6c..79ced538f4f6 100644 --- a/contrib/ncurses/announce.html.in +++ b/contrib/ncurses/announce.html.in @@ -1,7 +1,7 @@ <!-- - $Id: announce.html.in,v 1.107 2024/04/27 16:45:27 tom Exp $ + $Id: announce.html.in,v 1.109 2025/12/30 20:21:46 tom Exp $ **************************************************************************** - * Copyright 2018-2023,2024 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -32,7 +32,7 @@ <html> <head> <meta name="generator" content= - "HTML Tidy for HTML5 for Linux version 5.6.0"> + "HTML Tidy for HTML5 for Linux version 5.8.0"> <title>Announcing ncurses @VERSION@</title> <link rel="author" href="mailto:bug-ncurses@gnu.org"> <meta http-equiv="Content-Type" content= @@ -154,10 +154,10 @@ Notes</a></h2> <p>These notes are for <span class="main-name">ncurses</span> - @VERSION@, released <strong>April 27, 2024</strong>.</p> + @VERSION@, released <strong>December 30, 2025</strong>.</p> <p>This release is designed to be source-compatible with - <span class="main-name">ncurses</span> 5.0 through 6.4; providing + <span class="main-name">ncurses</span> 5.0 through 6.5; providing extensions to the application binary interface (ABI). Although the source can still be configured to support the <span class= "main-name">ncurses</span> 5 ABI, the reason for the release is @@ -165,75 +165,130 @@ "main-name">ncurses</span> 6 ABI and the supporting utility programs.</p> - <p>There are, of course, numerous other improvements, listed in - this announcement.</p> + <p>There are numerous other improvements listed in this + announcement.</p> <p>The most <a href="#h3-bug-fixes">important bug-fixes/improvements</a> 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 - <span class="main-name">ncurses</span> 6.4 release.</p> + <span class="main-name">ncurses</span> 6.5 release.</p> <h3><a name="h3-library" id="h3-library">Library improvements</a></h3> - <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4> + <h4><a name="h4-term-driver" id="h4-term-driver">Terminal driver + improvements</a></h4> - <p>These are new features:</p> + <p>This release focuses on improvements to the MinGW/Windows + terminal driver. The terminal driver for MinGW32 was introduced + in <a href="@HOMEPAGE@/NEWS.html#t20090214">2009</a>. A new + version of the terminal driver to support Windows Terminal was + begun in <a href="@HOMEPAGE@/NEWS.html#t20200829">2020</a>. + However, there were some differences:</p> <ul> <li> - <p>The low-level terminfo and termcap interfaces are used - both by the higher-level curses library, as well as by many - applications.</p> + <p>Both drivers use <a href= + "https://learn.microsoft.com/en-us/windows/console/console-reference"> + Console API</a>; the later Windows driver also provides for + using character escape sequences.</p> + </li> - <p>The functions which convert parameterized terminal - capability strings for output to the terminal - (<code>tiparm</code> and <code>tparm</code>) analyze the - capability string to determine which parameters are strings - (i.e., addresses), versus numbers (not addresses).</p> + <li> + <p>The MinGW32 driver was designed to imitate POSIX terminal + I/O data types to simplify integration with the existing + sources.</p> - <p>The library's analysis of a capability string may differ - from the calling application's design if environment - variables are used to point to an invalid terminal database. - This is a longstanding problem with <em>all</em> - implementations of terminfo, dating from the early 1980s.</p> + <p>The newer Windows driver did not integrate with the + sources in the same way. In particular, the <a href= + "@HOMEPAGE@/man/tset.1.html">reset</a> utility was + incomplete.</p> + </li> - <p>Two new functions address this problem: by providing a - function which allows the calling application to tell ncurses - how many string-parameters to expect:</p> + <li> + <p>Windows Terminal support for Console API is incomplete, + lacking mouse support. Additionally, its developers took a + few years to resolve issues with carriage-return versus + line-feed translation.</p> - <ul> - <li><code>tiscan_s</code> helps applications check - formatting capabilities that would be passed to - <code>tiparm_s</code>.</li> + <p>Reflecting on these problems, both MinGW and Windows + drivers are still provided in ncurses through the current + release.</p> + </li> - <li><code>tiparm_s</code> provides applications a way to - tell ncurses what the expected parameters are for a - capability.</li> - </ul> + <li> + <p>The two drivers are similar, but in developing the Windows + driver some renaming and refactoring was done. That resulted + in duplicate source files. This release eliminates the + duplication.</p> </li> + </ul> + <p>These improvements have been made to the terminal driver:</p> + + <ul> <li> - <p>The ncurses library supports a compile-time feature - (enabled with the configure <code>--enable-check-size</code> - option) which simplifies initialization with terminals which - do not negotiate window (screen) size. This is done in - <code>setupterm</code>, by providing for using ANSI - cursor-position report (in user6/user7 terminfo capabilities) - to obtain the screen size if neither environment variables or - ioctl is used.</p> + <p>made <tt>win_driver.c</tt> obsolete in favor of + <tt>win32_driver.c</tt></p> + </li> - <p>The ncurses test-program with options - “<code>-E -T</code>” demonstrates this - feature.</p> + <li> + <p>made <tt>win32_curses.h</tt> obsolete in favor of + <tt>nc_win32.h</tt></p> </li> - <li>add functions to query tty-flags in - <code>SCREEN</code></li> - </ul> + <li> + <p>added configure check for Win32 named pipes feature, using + that to make <tt>nc_mingw.h</tt> obsolete in favor of + <tt>nc_win32.h</tt></p> + </li> + + <li>separated the <tt>_NC_WINDOWS</tt> platform macro into + <tt>_NC_WINDOWS_NATIVE</tt>, for MinGW and other native Win32 + support, and <tt>_NC_WINDOWS</tt>, to make some Win32 features + available under the Cygwin runtime, in this case the + term-driver.</li> + + <li> + <p>modified MinGW32 configuration to account for its use of + Windows-style pathnames in filesystem checks.</p> + </li> - <p>This release drops compatibility with obsolete versions of - <a href="@HOMEPAGE@/tack/">tack</a>, e.g., pre-1.08</p> + <li> + <p>changed <tt>MS_TERMINAL</tt> symbol to + <tt>DEFAULT_TERM_VAR</tt></p> + </li> + + <li> + <p>updated <tt>ncurses/wcwidth.c</tt>, for MinGW ports, from + xterm.</p> + </li> + + <li> + <p>made fixes for reading Unicode characters in MinGW/Windows + port</p> + </li> + + <li> + <p>improved Windows driver by restoring the scroll buffer and + console mode, e.g., when <tt>reset_prog_mode</tt> or + <tt>endwin</tt> is called</p> + </li> + + <li> + <p>simplified include for <tt>wchar.h</tt> in Windows port by + removing the platform ifdef's</p> + </li> + + <li> + <p>modified driver for MinGW to handle shift-tab and + control-tab as back-tab</p> + </li> + + <li> + <p>made fixes for port using clang-cl or cl MSVC</p> + </li> + </ul> <h4><a name="h4-fixes-library" id="h4-fixes-library">Other improvements</a></h4> @@ -242,108 +297,145 @@ <ul> <li> - <p>In addition to the new, safer function - <code>tiparm_s</code>, ncurses adds checks to make the older - <code>tiparm</code>, <code>tparm</code> and - <code>tgoto</code> functions safer:</p> + <p>add comments to generated <tt>term.h</tt> to hint the + configure options used</p> + </li> - <ul> - <li> - <p>the terminfo functions <code>tiparm</code> and - <code>tparm</code> ensure that the capability string - comes from the terminal description which ncurses loads, - rather than from random data which the application - happens to have.</p> - </li> + <li> + <p>change scope of <tt>TTY</tt>, <tt>GET_TTY</tt> and + <tt>SET_TTY</tt> to ncurses-internals</p> + </li> + + <li> + <p>improved mouse driver</p> + <ul> <li> - <p>the <code>tgoto</code> function disallows capabilities - which its analysis shows will attempt to use string - parameters.</p> + <p>modify <tt>handle_wheel</tt> case 2 to ignore the + event as in case 1 for mouse version 1, since that + corresponds to a button 6 or 7 event which is not + supported with ABI 6.</p> </li> <li> - <p>ncurses uses internal functions which correspond to - <code>tiparm</code>, and <code>tgoto</code> which ensure - that the capability strings which are passed to these - functions come from the loaded terminal description.</p> + <p>use separate read/write pointers in the mouse event + queue to work with too-close events for the + click-detection to work reliably, and further improve + that in case <tt>mouseinterval(0)</tt> is used to + suppress click-detection.</p> </li> </ul> </li> <li> - <p>improve check in <code>lib_tparm.c</code>, ensuring that a - char* fits into a <code>TPARM_ARG</code></p> + <p>modify treatment of <em>“n”</em> parameter for + <tt>waddnstr</tt>, <tt>waddnwstr</tt>, and + <tt>wins_nwstr</tt> to return <em>OK</em> when + <em>“n”</em> is zero, for consistency with other + implementations</p> + </li> + + <li> + <p>modify <tt>wattron</tt>/<tt>wattroff</tt> calls in + <tt>form/m_post.c</tt> to call <tt>wattr_on</tt> and + <tt>wattr_off</tt> to omit cast used in the former for X/Open + compatibility</p> + </li> + + <li> + <p>change <tt>winwstr</tt> to a generated function, using the + macro definition, moving its handling of negative length + parameter into <tt>winnwstr</tt>.</p> + </li> + + <li> + <p>change <tt>winwstr</tt> to return wide character count + instead of <em>OK</em>.</p> </li> <li> - <p>modify <code>_nc_syserr_abort</code> to use - <code>_nc_env_access</code>, rather than only checking root - uid</p> + <p>disallow directories and block/character devices in + safe-open.</p> </li> <li> - <p>improve thread lock in <code>lib_trace.c</code></p> + <p>amend <tt>scr_restore</tt> and <tt>scr_init</tt> to remove + the target window only after validating the source window + which will replace the target</p> </li> <li> - <p>modify <code>flushinp</code> to use file descriptors in - <code>SCREEN</code>, rather than from <code>TERMINAL</code>, - and check if they are for a terminal, like SVr4</p> + <p>modify <tt>_nc_flush</tt> to also flush <em>stderr</em> to + help the <em>flash</em> capability to work in + <tt>bash</tt></p> </li> <li> - <p>modify <code>mcprint</code> to use file descriptor in - <code>SCREEN</code>, for consistency</p> + <p>trim padding from <em>sgr</em> expression used in + <tt>trim_sgr0</tt>, to avoid copying the padding into the + resulting sgr0</p> </li> <li> - <p>modify internal function <code>_nc_read_file_entry</code> - to show relevant filename in warnings</p> + <p>modify <tt>misc/Makefile.in</tt> and + <tt>misc/run_tic.in</tt> so that <tt>$DESTDIR</tt> is set and + used only in the makefile.</p> </li> <li> - <p>improve checks in internal function - <code>convert_string</code> for corrupt terminfo entry</p> + <p>modify <tt>MKfallback.sh</tt> to eliminate + <tt>TERMINFO</tt> environment variable.</p> </li> <li> - <p>review/improve handling of out-of-memory conditions</p> + <p>add <tt>-x</tt> option to <tt>infocmp</tt> in + <tt>MKfallback.sh</tt></p> </li> <li> - <p>limit delays to 30 seconds, i.e., padding delays in - terminfo, as well as <code>napms</code> and - <code>delay_output</code> functions</p> + <p>limit value from <tt>ESCDELAY</tt> environment variable to + 30 seconds, like other delay limits.</p> </li> <li> - <p>fix reallocation loop for <code>vsnprintf</code> in - <code>_nc_sprintf_string</code> by copying the va_list - variable</p> + <p>limit values from <tt>LINES</tt> and <tt>COLUMNS</tt> + environment variables to 512</p> </li> <li> - <p>modify <code>delscreen</code> to limit the windows which - it creates to just those associated with the screen</p> + <p>added check in <tt>wresize</tt> for out-of-range + dimensions</p> </li> <li> - <p>modify <code>endwin</code> to return an error if it is - called again without an intervening screen update</p> + <p>improved error-handling in c++ binding</p> </li> <li> - <p>modify <code>wenclose</code> to handle pads</p> + <p>improved error-reporting in <tt>write_entry.c</tt></p> </li> <li> - <p>eliminate use of <code>PATH_MAX</code> in - <code>lib_trace.c</code></p> + <p>amended limit used in <tt>alloc_pair</tt>, by applying an + adjustment for default colors only when the maximum number of + color pairs is greater than the maximum number of colors</p> </li> <li> - <p>provide for any <code>CCHARW_MAX</code> greater than 1</p> + <p>added limit-checks in <tt>alloc_entry.c</tt> and + <tt>alloc_ttype.c</tt> to avoid indexing errors when using + <tt>infocmp</tt> to compare all capabilities when processing + a malformed terminfo binary which has a valid header</p> + </li> + + <li> + <p>added a null pointer check in mouse-initialization, for + the Windows driver</p> + </li> + + <li> + <p>added some null-pointer checks after <tt>malloc</tt>s in + test-programs.</p> </li> </ul> @@ -351,42 +443,41 @@ <ul> <li> - <p>correct loop termination condition in - <code>waddnstr</code> and <code>waddnwstr</code></p> + <p>removed test in <tt>wgetch</tt> which applied + <tt>notimeout</tt> to the initial read of a character</p> </li> <li> - <p>improve parsing in internal function - <code>_nc_msec_cost</code>, allowing a single decimal - point</p> + <p>added check for special case of <tt>wcrtomb</tt> + converting a single byte code to a different single byte + code, which glibc does for code 160 in the KOI8-R + encoding</p> </li> <li> - <p>amend parameter check for entire string versus specific - length in <code>winsnstr</code> and <code>wins_nwstr</code> - to match Solaris; make similar correction to - <code>wins_nwstr</code></p> + <p>corrected <tt>_nc_to_char</tt> for the case when + <tt>wctob</tt> is not found by configure script</p> </li> <li> - <p>correct internal function <code>wadd_wch_literal</code> - when adding a non-spacing character to a double-width + <p>revised loop in <tt>wins_nwstr</tt>, to ensure that + non-spacing characters are combined with the base spacing character</p> </li> <li> - <p>correct definition of <code>Charable</code> macro for - non-wide ncurses library .</p> + <p>modified checks in <tt>delwin</tt> to avoid checking if + the window is a pad until first checking if it is still on + the active window-list</p> </li> </ul> <h3><a name="h3-programs" id="h3-programs">Program improvements</a></h3> - <p id="h4-utilities">Several improvements were made to the - utility programs. Some were done to make the <code>infocmp</code> - option “<tt>-u</tt>” option help refactor the - terminal database.</p> + <h4><a name="h4-utilities" id="h4-utilities">Utilities</a></h4> + + <p>Several improvements were made to the utility programs.</p> <dl> <dt><span class="part-name"><a href= @@ -396,26 +487,32 @@ <dd> <ul> <li> - <p>add limit checks for processing extended capabilities - with the “<code>-u</code>” option</p> + <p>improved <tt>infocmp</tt> <tt>-E</tt>/<tt>-e</tt> + fallback feature</p> + + <ul> + <li>prefix names with “<tt>ti_</tt>” if + they begin with a digit, e.g., 9term</li> + + <li>escape backslashes and double-quotes in description + fields</li> + </ul> </li> <li> - <p>correct initial alignment of extended capabilities, so - that the “<code>-u</code>” option can be used - for more than two terminal types</p> + <p>modified <tt>infocmp</tt> <tt>-E</tt>/<tt>-e</tt> + fallback feature to reduce stricter compiler warnings for + the extended capability data.</p> </li> <li> - <p>modify “<code>-u</code>” option to not - report cancels for strings which were already cancelled - in a use'd chunk.</p> + <p>modified <tt>infocmp</tt> and <tt>tabs</tt> to use + actual name in usage and header.</p> </li> <li> - <p>correct an assignment “<code>-u</code>” - for detecting if a boolean is unset in a base entry and - set in a use'd chunk, i.e., if it was cancelled.</p> + <p>improved error-message from <tt>infocmp</tt> when a + terminal entry cannot be opened</p> </li> </ul> </dd> @@ -427,50 +524,32 @@ <dd> <ul> <li> - <p>correct limit-check when dumping tc/use clause via - “<code>-I</code>”</p> - </li> - - <li> - <p>check return value of <code>_nc_save_str</code>, in - special case where extended capabilities are processed - but the terminal description was not initialized</p> + <p>increased limit on use-clauses from 32 to 40, warn but + allow entries which exceed the old limit.</p> </li> <li> - <p>modify check for multiply defined aliases to report - problems within the current runtime rather than for - conflicts with pre-existing terminal descriptions.</p> + <p>added check for infinite loop in <tt>tic</tt>'s + use-resolution.</p> </li> <li> - <p>disallow using <code>$TERMINFO</code> or - <code>$HOME/.terminfo</code> when - “<code>-o</code>” option is used</p> + <p>added a buffer-limit check in + <tt>postprocess_termcap</tt></p> </li> </ul> </dd> <dt><span class="part-name"><a href= - "@HOMEPAGE@/man/tput.1.html">tput</a></span> and <span class= - "part-name"><a href= - "@HOMEPAGE@/man/tset.1.html">tset</a></span></dt> + "@HOMEPAGE@/man/tput.1m.html">tput</a></span> + </dt> <dd> <ul> <li> - <p>add “<code>-v</code>” option to tput, to - show warnings</p> - </li> - - <li> - <p>modify <em>reset</em> command to avoid altering clocal - if the terminal uses a modem</p> - </li> - - <li> - <p>modify <em>reset</em> feature to avoid 1-second sleep - if running in a pseudo-terminal</p> + <p>Warn about capabilities which expect parameters where + none are given. Also, repair the feature where multiple + capabilities can be handled on a single line.</p> </li> </ul> </dd> @@ -484,41 +563,53 @@ <ul> <li> - <p>modify <code>test_tparm</code> to account for extended - capabilities</p> + <p>add help-popup for <tt>test_instr.c</tt>, + <tt>test_inwstr.c</tt></p> </li> <li> - <p>corrected mouse mask in <code>test/testcurs.c</code></p> + <p>add options to <tt>test/worm.c</tt> for benchmarking.</p> </li> <li> - <p>modify <code>test/clip_printw.c</code> to optionally test - non-wrapped updates</p> + <p>improve <tt>-t</tt> option of <tt>test/gdc.c</tt>, + allowing hours only, or hours and minutes only.</p> </li> <li> - <p>modify <code>test/test_mouse.c</code> to use curses api - for raw/noraw</p> + <p>correct dimensions in <tt>test/popup_msg.c</tt>, fixing an + overrun.</p> </li> <li> - <p>modify <code>test/clip_printw.c</code> to optionally test - non-wrapped updates</p> + <p>modify <tt>test/demo_keyok.c</tt> to accept <tt>^Q</tt> + for quit, for consistency.</p> + </li> + + <li> + <p>add option “<tt>-c</tt>” to test programs to + illustrate a non-blank character in the window background + property.</p> + </li> + + <li> + <p>reserve <tt>-c</tt>/<tt>-l</tt> options in + <tt>test/*.c</tt> for command/logging like <a href= + "@WEBSITE@/vttest/">vttest</a>.</p> </li> </ul> - <p>There is one new demo/test programs:</p> + <p>There is one new demo/test program:</p> <dl> - <dt><span class="part-name"><em>test/test_endwin.c</em></span> + <dt><span class= + "part-name"><em>ncurses/report_ctype.c</em></span> </dt> <dd> - <p>This program shows the return-status from - <code>endwin</code> with different combinations of - <code>endwin</code> (repeated), <code>initscr</code>, - <code>newterm</code>.</p> + <p>Shows a chart of the first 256 character codes, which are + not as consistent across platforms for ctype versus wctype as + some suppose.</p> </dd> </dl> @@ -529,61 +620,82 @@ <ul> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-ansi_apparrows"><tt>ansi+apparrows</tt></a></p> + "@HOMEPAGE@/terminfo.src.html#tic-ghostty"><tt>ghostty</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-contour"><tt>contour</tt></a></p> + "@HOMEPAGE@/terminfo.src.html#tic-illumos"><tt>illumos</tt></a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-sun-16color"><tt>sun-16color</tt></a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-sun-256color"><tt>sun-256color</tt></a>, + and <a href= + "@HOMEPAGE@/terminfo.src.html#tic-sun-direct"><tt>sun-direct</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-linux_kbs"><tt>linux+kbs</tt></a> - for terminals which imitate xterm's behavior with Linux</p> + "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal-direct"><tt>ms-terminal-direct</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-rio"><tt>rio</tt></a>, - <a href= - "@HOMEPAGE@/terminfo.src.html#tic-rio-direct"><tt>rio-direct</tt></a></p> + "@HOMEPAGE@/terminfo.src.html#tic-pangoterm"><tt>pangoterm</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-mostlike"><tt>mostlike</tt></a></p> + "@HOMEPAGE@/terminfo.src.html#tic-rlogin-color"><tt>rlogin-color</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-ms-vt100-16color"><tt>ms-vt100-16color</tt></a>, - <a href= - "@HOMEPAGE@/terminfo.src.html#tic-winconsole"><tt>winconsole</tt></a></p> + "@HOMEPAGE@/terminfo.src.html#tic-sclp"><tt>sclp</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp"><tt>vt100+noapp</tt></a>, + "@HOMEPAGE@/terminfo.src.html#tic-vt520-w"><tt>vt520-w</tt></a> + and <a href= + "@HOMEPAGE@/terminfo.src.html#tic-vt525-w"><tt>vt525-w</tt></a></p> + </li> + </ul> + + <p>along with building blocks</p> + + <ul> + <li> + <p><a href= + "@HOMEPAGE@/terminfo.src.html#tic-linux_lockeys"><tt>linux+lockeys</tt></a>, <a href= - "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp_pc"><tt>vt100+noapp+pc</tt></a>, + "@HOMEPAGE@/terminfo.src.html#tic-xterm_r5_lockeys"><tt>xterm+r5+lockeys</tt></a>, <a href= - "@HOMEPAGE@/terminfo.src.html#tic-xterm_app_pc"><tt>xterm+app+pc</tt></a>, + "@HOMEPAGE@/terminfo.src.html#tic-xterm_r5_fkeys"><tt>xterm+r5+fkeys</tt></a></p> + </li> + + <li> + <p><a href= + "@HOMEPAGE@/terminfo.src.html#tic-vt100_pf1-pf4"><tt>vt100+pf1-pf4</tt></a></p> + </li> + + <li> + <p><a href= + "@HOMEPAGE@/terminfo.src.html#tic-vt220_ufkeys"><tt>vt220+ufkeys</tt></a>, <a href= - "@HOMEPAGE@/terminfo.src.html#tic-xterm_decedit"><tt>xterm+decedit</tt></a> - from <a href="@WEBSITE@/xterm/xterm.log.html#xterm_389">xterm - #389</a></p> + "@HOMEPAGE@/terminfo.src.html#tic-vt220_sfkeys"><tt>vt220+sfkeys</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-putty_cursor"><tt>putty+cursor</tt></a> - to reflect amending of modified cursor-keys in 2021</p> + "@HOMEPAGE@/terminfo.src.html#tic-ecma_standout"><tt>ecma+standout</tt></a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ecma_underline"><tt>ecma+underline</tt></a></p> </li> <li> <p><a href= - "@HOMEPAGE@/terminfo.src.html#tic-wezterm"><tt>wezterm</tt></a></p> + "@HOMEPAGE@/terminfo.src.html#tic-wyse+cvis"><tt>wyse+cvis</tt></a></p> </li> </ul> @@ -598,88 +710,149 @@ <ul> <li> - <p><a href= - "@HOMEPAGE@/terminfo.src.html#toc-_X_T_E_R_M__Extensions_">document</a> - XF, kxIN and kxOUT</p> + <p>use <a href= + "@HOMEPAGE@/terminfo.src.html#tic-xterm_keypad">xterm+keypad</a> + in <a href= + "@HOMEPAGE@/terminfo.src.html#tic-pccon_base">pccon+base</a></p> </li> <li> - <p>add note on <a href= - "@HOMEPAGE@/terminfo.src.html#tic-sun"><tt>sun</tt></a> - regarding wscons/cmdtool/shelltool</p> + <p>use <a href= + "@HOMEPAGE@/terminfo.src.html#tic-bracketed_paste">bracketed+paste</a> + in <a href= + "@HOMEPAGE@/terminfo.src.html#tic-nsterm">nsterm</a>, + <a href="@HOMEPAGE@/terminfo.src.html#tic-rlogin-color">rlogin-color</a>, + <a href="@HOMEPAGE@/terminfo.src.html#tic-screen">screen</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-terminology">terminology</a></p> </li> <li> - <p>remove DECCOLM+DECSCLM from <a href= - "@HOMEPAGE@/terminfo.src.html#tic-foot"><tt>foot</tt></a></p> + <p>use extended-keys in <a href= + "@HOMEPAGE@/terminfo.src.html#tic-djgpp">djgpp</a> 2.05</p> </li> <li> - <p>add xterm+focus to <a href= - "@HOMEPAGE@/terminfo.src.html#tic-foot_base"><tt>foot+base</tt></a></p> - </li> + <p>update/correct some of the rv/xr strings, checked with</p> - <li> - <p>add ecma+strikeout to <a href= - "@HOMEPAGE@/terminfo.src.html#tic-putty"><tt>putty</tt></a></p> - </li> + <p><a href="@HOMEPAGE@/tack.html">tack</a></p> - <li> - <p>use CSI 3J in <a href= - "@HOMEPAGE@/terminfo.src.html#tic-vte-2017"><tt>vte-2017</tt></a></p> + <ul> + <li>add rv code for <a href= + "@HOMEPAGE@/terminfo.src.html#tic-alacritty">alacritty</a></li> + + <li>add xr code for <a href= + "@HOMEPAGE@/terminfo.src.html#tic-putty">putty</a></li> + + <li>add rv/xr codes for <a href= + "@HOMEPAGE@/terminfo.src.html#tic-domterm">domterm</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-mintty">mintty</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-mlterm">mlterm</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-contour">contour</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ghostty">ghostty</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-iterm2">iterm2</a>, + <a href="@HOMEPAGE@/terminfo.src.html#tic-kitty">kitty</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-konsole">konsole</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-vscode">vscode</a>, + <a href="@HOMEPAGE@/terminfo.src.html#tic-vte">vte</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-wezterm">wezterm</a></li> + </ul> </li> <li> - <p>use oldxterm+sm+1006 in <a href= - "@HOMEPAGE@/terminfo.src.html#tic-vte-2014"><tt>vte-2014</tt></a></p> + <p>improve use-clauses: <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ansi_cup">ansi+cup</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ansi_idl1">ansi+idl1</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca">ansi+rca</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca2">ansi+rca2</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ansi_sgrso">ansi+sgrso</a>, + <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ansi_sgrul">ansi+sgrul</a></p> </li> <li> - <p>modify <a href= - "@HOMEPAGE@/terminfo.src.html#tic-xgterm"><tt>xgterm</tt></a> - to work around line-drawing bug</p> + <p><a href= + "@HOMEPAGE@/terminfo.src.html#tic-sclp">sclp</a>:</p> + + <ul> + <li>add kf1 to kf5</li> + + <li>use <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca">ansi+rca</a></li> + + <li>use <a href= + "@HOMEPAGE@/terminfo.src.html#tic-vt220_pcedit">vt220+pcedit</a></li> + </ul> </li> <li> - <p>add xterm focus mode 1004 to <a href= - "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a> - as fe/fd capabilities, like vim.</p> + <p><a href="@HOMEPAGE@/terminfo.src.html#tic-vt525">vt525</a></p> + + <ul> + <li>add color</li> + + <li>add op</li> + </ul> </li> <li> - <p>add xterm+focus to <a href= - "@HOMEPAGE@/terminfo.src.html#tic-alacritty_common"><tt>alacritty+common</tt></a></p> + <p><a href= + "@HOMEPAGE@/terminfo.src.html#tic-wezterm">wezterm</a>:</p> + + <ul> + <li>use <a href= + "@HOMEPAGE@/terminfo.src.html#tic-xterm_alt_title">xterm+alt+title</a></li> + + <li>omit its broken left/right margin feature</li> + </ul> </li> + <li>update <a href= + "@HOMEPAGE@/terminfo.src.html#tic-contour">contour</a></li> + <li> - <p>add XR/xr, to work with vim, and use RV/rv to denote DA2 - and its response</p> + <p>update <a href= + "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal">ms-terminal</a></p> + + <ul> + <li>add XM/xm to ms-terminal, to enable mouse with + experimental Windows driver</li> + </ul> </li> <li> - <p>add XF flag to <a href= - "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a> - so that termcap applications can be aware of terminals which - may support focus in/out</p> + <p>update <a href= + "@HOMEPAGE@/terminfo.src.html#tic-st">st</a> to 0.8.5</p> </li> <li> - <p>use xterm+focus in <a href= - "@HOMEPAGE@/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a> - and <a href= - "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p> + <p>update <a href= + "@HOMEPAGE@/terminfo.src.html#tic-teraterm">teraterm</a> to + 5.0</p> </li> <li> - <p>remove xterm+sm+1006 from <a href= - "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p> + <p>update <a href= + "@HOMEPAGE@/terminfo.src.html#tic-foot">foot</a> to + 1.18.1</p> </li> <li> - <p>NetBSD-related fixes for <a href= - "@HOMEPAGE@/terminfo.src.html#tic-x68k"><tt>x68k</tt></a> and - <a href= - "@HOMEPAGE@/terminfo.src.html#tic-wsvt25"><tt>wsvt25</tt></a></p> + <p>update <a href= + "@HOMEPAGE@/terminfo.src.html#tic-iterm2">iTerm2</a> to + 3.5.0</p> </li> </ul> @@ -715,67 +888,12 @@ <ul> <li> - <p>add assignment in <code>CF_MAN_PAGES</code> to fill in - value for <code>TERMINFO_DIRS</code> in ncurses, terminfo - and tic manpages.</p> - </li> - - <li> - <p>clarify interaction of <code>-R</code> option versus - <code>-C</code>, <code>-I</code> and <code>-r</code> in - <code>infocmp</code> manpage.</p> - </li> - - <li> - <p>correct manpage description of panel_hidden.</p> - </li> - - <li> - <p>improve manpage description for addch versus unctrl - format used for non-printable characters.</p> - </li> - - <li> - <p>improve manpages discussing file descriptors in - low-level functions.</p> - </li> - - <li> - <p>improve description of search rules for terminal - descriptions in terminfo manpage.</p> - </li> - - <li> - <p>modify dist.mk to avoid passing developer's comments - in manpages into the generated html documentation.</p> - </li> - - <li> - <p>modify test-package "ncurses6-doc" to use - manpage-aliases, which in turn required a change to the - configure script to factor in the extra-suffix option - when deriving alias names.</p> - </li> - </ul> - </li> - - <li> - <p>New/improved history and portability sections:</p> - - <ul> - <li> - <p>add information about "ttycap", termcap's forerunner, - to tset.1</p> - </li> - - <li> - <p>document limitations of tparm, and error-returns in - curs_terminfo.3x</p> + <p>corrected note about box() in curs_border.3x</p> </li> <li> - <p>document limitations of tgoto, and error-returns in - curs_termcap.3x</p> + <p>added note on scrolling and lower-right corner to + waddch and wadd_wch manual pages.</p> </li> </ul> </li> @@ -786,17 +904,17 @@ <ul> <li> <p>This release has many changes to improve the - formatting and style of the manpages.</p> + formatting and style of the man pages.</p> </li> <li> - <p>Manpages now use consistent section-naming, page - headers and footers (including the modification date for - each page).</p> + <p>Table layout in the man pages has been revised.</p> </li> <li> - <p>Table layout has been revised.</p> + <p>The <a href= + "@HOMEPAGE@/howto/NCURSES-Programming-HOWTO.html">ncurses + HOWTO</a> and its sample programs has been updated.</p> </li> </ul> </li> @@ -808,82 +926,66 @@ <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting bug-fixes</a></h3> - <p>The changes to <tt>tparm</tt>, <tt>tgoto</tt> which improve - the design of the low-level interfaces are <em>interesting</em>, - but are not bug-fixes <em>per se</em>.</p> - <h3><a name="h3-config-config" id= "h3-config-config">Configuration changes</a></h3> <h4><a name="h4-config-major" id="h4-config-major">Major changes</a></h4> - <p>These are the major changes (aside from introducing <a href= - "#h4-new-library"><tt>tiparm_s</tt></a>):</p> + <p>Improvements made to configure checks include</p> <ul> <li> - <p>use wide-character (ncursesw) by default</p> + <p>improve configure check for “install”.</p> </li> <li> - <p>use opaque typedefs by default</p> + <p>add check for build-time utilities, in case + cross-compiling is setup with an invalid + <tt>$BUILD_CC</tt></p> </li> - </ul> - - <p>However, most of the work on configure scripts was done to - reduce warnings within the configure script:</p> - <ul> <li> - <p>intrusive warnings from GNU grep regarding fgrep and - egrep</p> + <p>add configure check for <tt><sys/fsuid.h></tt>, + which may be needed for flatpacks</p> </li> <li> - <p>fatal errors in compile-checks, arising from recent - “Modern C” efforts by some developers which - caused longstanding configure checks to fail.</p> - - <p>After repairing the configure script, none of that - activity affected ncurses because stricter warnings are used - routinely in development.</p> + <p>add a consistency-check for termio(s)/tty headers, to help + with cross-compiles</p> </li> - </ul> - - <p>Other improvements made to configure checks include</p> - <ul> <li> - <p>use <a href= - "@HOMEPAGE@/INSTALL.html#option:enable-string-hacks">string-hacks</a> - in alloc_entry.c, alloc_type.c and hardscroll.c, overlooked - due to compiler changes in recent OpenBSD releases</p> + <p>modify configure check for + <tt>MAKEFLAGS</tt>/<tt>MFLAGS</tt> to ignore existing value + of these environment variables</p> </li> <li> - <p>revise progs.priv.h to provide for NC_ISATTY reuse</p> + <p>improve configurability of <tt>alloca</tt> as used in + Windows ports.</p> </li> <li> - <p>configure check for MB_LEN_MAX provides warning as - needed</p> + <p>modify configure script checks for <tt>stdbool.h</tt> to + fix build with older gcc version.</p> </li> <li> - <p>trim a space after some "-R" options, fixing builds for - applications built using clang and ncurses on Solaris</p> + <p>add <new> to the possible headers declaring the C++ + <tt>std::bad_alloc</tt>.</p> </li> <li> - <p>work around misconfiguration of MacPorts gcc13, which - exposes invalid definition of <tt>MB_LEN_MAX</tt> in gcc's - fallback copy of <tt>limits.h</tt></p> + <p>modify check for <tt>stdbool.h</tt> to be more + conservative in case the headers are used with a compiler + other than that which was used to configure</p> </li> <li> - <p>modified experimental Windows driver works with xterm - mouse protocol</p> + <p>remove dependency on <tt>stdbool.h</tt> from configure + script check for type of <em>bool</em> when C++ binding is + omitted.</p> </li> </ul> @@ -894,50 +996,26 @@ <dl> <dt><a href= - "@HOMEPAGE@/INSTALL.html#option:disable-setuid-environ"><tt>--disable-setuid-environ</tt></a> - </dt> - - <dd> - <p>Compile with environment restriction, so certain - environment variables are not available when running via a - setuid/setgid application. These are (for example - <tt>$TERMINFO</tt>) those that allow the search path for the - terminfo or termcap entry to be customized.</p> - - <p>A setuid/setgid application inherits its environment - variables from the current user, in contrast to sudo which - may limit the environment variables that ncurses uses.</p> - </dd> - - <dt><a href= - "@HOMEPAGE@/INSTALL.html#option:enable-check-size"><tt>--enable-check-size</tt></a> - </dt> - - <dd> - <p>Compile-in feature to detect screensize for terminals - which do not advertise their screensize, e.g., serial - terminals.</p> - </dd> - - <dt><a href= - "@HOMEPAGE@/INSTALL.html#option:with-abi-altered"><tt>--with-abi-altered=<em>NUM</em></tt></a> + "@HOMEPAGE@/INSTALL.html#option:enable-install-prefix"><tt>--enable-install-prefix</tt></a> </dt> <dd> - <p>Override the displayed (rather than compiled-in) ABI. Only - packagers who have created configurations where the ABI - differs from ncurses should be interested in this option.</p> + <p>Modify behavior of <tt>$DESTDIR</tt> to merge or replace + the value set by <tt>--prefix</tt>.</p> </dd> <dt><a href= - "@HOMEPAGE@/INSTALL.html#option:with-strip-program"><tt>--with-strip-program=<em>XXX</em></tt></a> + "@HOMEPAGE@/INSTALL.html#option:enable-named-pipes"><tt>--enable-named-pipes</tt></a> </dt> <dd> - <p>When stripping executables during install, use the - specified program rather than “strip” overriding - program chosen by the install program for stripping - executables.</p> + <p>The Windows driver uses named pipes for communicating with + a pseudo console, allowing it to use escape sequences rather + than Console API. This works well with mintty. On the + downside, this feature may not work well with the Windows + Terminal due to a longstanding bug in <tt>conhost.exe</tt> + (<a href= + "https://github.com/microsoft/terminal/issues/9461">#9461</a>).</p> </dd> </dl> @@ -945,146 +1023,186 @@ <dl> <dt><a href= - "@HOMEPAGE@/INSTALL.html#option:with-pkg-config-libdir"><tt>--with-pkg-config-libdir[=<em>DIR</em>]</tt></a> + "@HOMEPAGE@/INSTALL.html#option:enable-exp-win32"><tt>--enable-exp-win32</tt></a> </dt> <dd> - <p>The optional <em>DIR</em> parameter can now be - “auto” to automatically use pkg-config's library - directory.</p> - - <p>The default is <tt>$(libdir)</tt>.</p> + <p>This option is obsolete, replaced by + <tt>--enable-named-pipes</tt>.</p> </dd> <dt><a href= - "@HOMEPAGE@/INSTALL.html#option:with-xterm-kbs"><tt>--with-xterm-kbs[=<em>XXX</em>]</tt></a> + "@HOMEPAGE@/INSTALL.html#option:enable-term-driver"><tt>--enable-term-driver</tt></a> </dt> <dd> - <p>The default is “auto” which tells the - configure script to choose BS or DEL according to platform - defaults.</p> + <p>This is enabled by default on platforms where the Windows + driver can be compiled, e.g., Cygwin, MinGW32 and MSYS2.</p> </dd> </dl> - <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> + <h4><a name="h4-config-package" id="h4-config-package">Package + configuration scripts</a></h4> - <p>Many of the portability changes are implemented via the - configure script:</p> + <p>The configure script and makefiles optionally generate a + script which reports the compiler and linker options needed to + build a program with ncurses, as well as a data file which is + used via pkg-config for the same purpose. Several improvements + were made for these scripts:</p> <ul> <li> - <p>add/use configure check for <code>clock_gettime</code>, to - supersede <code>gettimeofday</code>.</p> + <p>improved filtering of <tt>-L</tt> options in + <tt>misc/gen-pkgconfig.in</tt> and in + <tt>misc/ncurses-config.in</tt></p> </li> <li> - <p>modify configure script check for pkg-config library - directory to take into account an older version 0.15.0 which - used PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR</p> + <p>modified <tt>ncurses*-config</tt> to add <tt>-I</tt> + option in <tt>--cflag</tt> where needed for + <tt>--disable-overwrite</tt> to match ".pc" files.</p> </li> <li> - <p>allow for MinGW32-/64-bit configurations to use - _DEFAULT_SOURCE</p> + <p>suppressed <tt>-g</tt> and <tt>-fXXX</tt> flags from + <tt>CFLAGS</tt> in <tt>misc/ncurses-config.in</tt></p> </li> <li> - <p>modify CF_XOPEN_SOURCE macro's amend default case to avoid - undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined</p> + <p>modified configure script to allow for <tt>pkg-config</tt> + using DOS/Windows pathname syntax</p> </li> <li> - <p>updated configure script macro CF_XOPEN_SOURCE, for - uClibc-ng</p> + <p>modified <tt>misc/ncurses-config.in</tt>, improved match + with <tt>pkg-config output</tt>.</p> </li> <li> - <p>modify version-check for gcc/g++, now works for msys2</p> + <p>adjusted naming of test packages for MinGW + <tt>*-config</tt> scripts to match the <tt>pkg-config</tt> + names</p> </li> <li> - <p>build-fixes related to configure-options and/or - platform:</p> - - <ul> - <li>fix for <tt>--enable-fvisibility</tt></li> - - <li>fix for unusual values of - <tt>--with-rel-version</tt></li> + <p>added <tt>--cflags-only-I</tt> and + <tt>--cflags-only-other</tt> options to + <tt>misc/ncurses-config.in</tt></p> + </li> + </ul> - <li>fix for unusual values of - <tt>--with-abi-version</tt></li> + <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> - <li>fix for <tt>--disable-tcap-names</tt></li> + <p>Many of the portability changes are implemented via the + configure script:</p> - <li>fix for termcap in <tt>nc_access.h</tt></li> - </ul> + <ul> + <li> + <p>disallow configure options which apply only to multiuser + systems, to improve ports to single-user systems such as + Haiku</p> </li> <li> - <p>other configure-script improvements:</p> + <p>add warning to configure script to address conflict + between the <tt>--enable-lp64</tt> option and the options for + overriding the types used for <tt>chtype</tt> and + <tt>mmask_t</tt>.</p> + </li> - <ul> - <li>recent msys2 headers work with - <tt>_DEFAULT_SOURCE</tt>; amend check</li> + <li> + <p>modify configure script cases for $host_os, to accommodate + 64-bit big-endian POWER Linux with glibc</p> + </li> - <li>use <tt>$ac_includes_default</tt> in most cases where - stdlib.h should work</li> + <li> + <p>modify configure script and misc/Makefile to accept glob + expressions that include Windows/DOS drive-letters</p> + </li> - <li>use <tt>#error</tt> consistently vs "make an - error"</li> + <li> + <p>change <tt>Ada95/configure</tt> to use + <tt>--with-screen</tt> option rather than + <tt>--enable-widec</tt>, to provide more choices of + underlying curses library.</p> + </li> - <li>add configure macro for <tt>gettimeofday</tt> vs inline - check</li> - </ul> + <li> + <p>modify configure script to work around broken gnatgcc + script found in gcc-13 builds.</p> </li> </ul> - <p>Here are some of the other portability fixes:</p> + <p>Other portability fixes include:</p> <ul> <li> - <p>modify configure scripts/makefiles to omit - <tt>KEY_RESIZE</tt> if the corresponding <tt>SIGWINCH</tt> - feature is disabled</p> + <p>improve pattern used for configure + <tt>--with-xterm-kbs</tt> option.</p> + </li> + + <li> + <p>modify recursive make rules to avoid interference with GNU + make's "-j" option</p> + </li> + + <li> + <p>when installing the terminfo database, check if symbolic + links are supported before attemping to link lib/terminfo + from share/terminfo</p> + </li> + + <li> + <p>improve logic in misc/run_tic.in for constructing symbolic + link when <tt>$DESTDIR</tt> is set.</p> </li> <li> - <p>increase <tt>MB_CUR_MAX</tt> to 16, matching glibc's - <tt>MB_LEN_MAX</tt></p> + <p>build-fix for ncurses-examples with newer PDCurses, which + no longer has stubs for unimplemented features.</p> </li> <li> - <p>add BSD <tt>erase2</tt> to characters handled by - tset/reset</p> + <p>change <tt>etip.h.in</tt> to include either/both of + <tt><new></tt> and <tt><exception></tt>, needed + for another old BSD.</p> </li> <li> - <p>use <tt>getauxval</tt> when available, to improve - <tt>setuid</tt>/<tt>setgid</tt> checks</p> + <p>correct conditional-compile for a case when the C compiler + does not have a bool type.</p> </li> <li> - <p>set <tt>dwShareMode</tt> in calls to - <tt>CreateConsoleScreenBuffer</tt></p> + <p>improve <tt>MKlib_gen.sh</tt> handling of + “bool” type, for building link_test.</p> </li> <li> - <p>use <tt>CreateFile</tt> with "<tt>CONIN$</tt>", - "<tt>CONOUT$</tt>" rather than <tt>GetStdHandle</tt> to - obtain a handle on the actual console, avoiding redirection - in the MinGW/Win32 configurations</p> + <p>modify <tt>ncurses/tinfo/MKfallback.sh</tt> to work with + MacOS <tt>sed</tt>, which lacks BSD-style <tt>\<</tt> and + <tt>\></tt>.</p> </li> <li> - <p>modify MinGW driver to return <tt>KEY_BACKSPACE</tt> when - an unmodified <tt>VK_BACK</tt> virtual key is entered</p> + <p>modify <tt>MKlib_gen.c</tt> to allow for Solaris's + definition of <tt>NULL</tt> as <tt>0L</tt>.</p> </li> <li> - <p>modify MinGW configuration to provide for running in - MSYS/MSYS2 shells, assuming ConPTY support</p> + <p>widen pattern in pc/*-config scripts to disallow more + linker options.</p> + </li> + + <li> + <p>avoid redefining bool in <tt>curses.h</tt> if the platform + already supports that type.</p> + </li> + + <li> + <p>move include <tt><curses.h></tt> from + <tt>etip.h.in</tt> to <tt>cursesw.h</tt>, to work around + breakage in Apple's port of ncurses.</p> </li> </ul> @@ -1116,8 +1234,8 @@ <ul> <li> - <p>the panel library, supporting a stack of windows with - backing store</p> + <p>the panel library, permitting windows to stack and + overlap</p> </li> <li> @@ -1627,10 +1745,10 @@ <blockquote> <p><a href= - "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/</a> + "https://invisible-island.net/archives/ncurses/6.5/">https://invisible-island.net/archives/ncurses/6.5/</a> and<br> <a href= - "https://invisible-mirror.net/archives/ncurses/6.4/">https://invisible-mirror.net/archives/ncurses/6.4/</a> .</p> + "https://invisible-mirror.net/archives/ncurses/6.5/">https://invisible-mirror.net/archives/ncurses/6.5/</a> .</p> </blockquote> <p>There is an archive of the mailing list here:</p> @@ -1701,7 +1819,7 @@ <li> <a href="#h3-library">Library improvements</a> <ul> - <li><a href="#h4-new-library">New features</a></li> + <li><a href="#h4-term-driver">Terminal driver</a></li> <li><a href="#h4-fixes-library">Other improvements</a></li> @@ -1730,6 +1848,9 @@ <li><a href="#h4-config-options">Configuration options</a></li> + + <li><a href="#h4-config-package">Package + configuration scripts</a></li> </ul> </li> diff --git a/contrib/ncurses/config.guess b/contrib/ncurses/config.guess index f47d666d340b..a9d01fde4617 100755 --- a/contrib/ncurses/config.guess +++ b/contrib/ncurses/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2023 Free Software Foundation, Inc. +# Copyright 1992-2025 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2023-10-19' +timestamp='2025-07-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -60,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2023 Free Software Foundation, Inc. +Copyright 1992-2025 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -123,7 +123,7 @@ set_cc_for_build() { dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" - for driver in cc gcc c89 c99 ; do + for driver in cc gcc c17 c99 c89 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break @@ -634,7 +634,8 @@ EOF sed 's/^ //' << EOF > "$dummy.c" #include <sys/systemcfg.h> - main() + int + main () { if (!__power_pc()) exit(1); @@ -718,7 +719,8 @@ EOF #include <stdlib.h> #include <unistd.h> - int main () + int + main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); @@ -1595,8 +1597,11 @@ EOF *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; - *:Ironclad:*:*) - GUESS=$UNAME_MACHINE-unknown-ironclad + x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-pc-ironclad-mlibc + ;; + *:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc ;; esac @@ -1621,6 +1626,7 @@ cat > "$dummy.c" <<EOF #endif #endif #endif +int main () { #if defined (sony) @@ -1805,8 +1811,8 @@ fi exit 1 # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-format: "%Y-%02m-%02d" # time-stamp-end: "'" # End: diff --git a/contrib/ncurses/config.sub b/contrib/ncurses/config.sub index e4c4e09b6540..3d35cde174de 100755 --- a/contrib/ncurses/config.sub +++ b/contrib/ncurses/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2023 Free Software Foundation, Inc. +# Copyright 1992-2025 Free Software Foundation, Inc. -# shellcheck disable=SC2006,SC2268 # see below for rationale +# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale -timestamp='2023-12-02' +timestamp='2025-07-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -76,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.sub ($timestamp) -Copyright 1992-2023 Free Software Foundation, Inc. +Copyright 1992-2025 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -120,7 +120,6 @@ case $# in esac # Split fields of configuration type -# shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <<EOF $1 @@ -142,10 +141,21 @@ case $1 in # parts maybe_os=$field2-$field3 case $maybe_os in - nto-qnx* | linux-* | uclinux-uclibc* \ - | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ - | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | ironclad-* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ | windows-* ) basic_machine=$field1 basic_os=$maybe_os @@ -161,8 +171,12 @@ case $1 in esac ;; *-*) - # A lone config we happen to match not fitting any pattern case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; decstation-3100) basic_machine=mips-dec basic_os= @@ -170,28 +184,87 @@ case $1 in *-*) # Second component is usually, but not always the OS case $field2 in - # Prevent following clause from handling this valid os + # Do not treat sunos as a manufacturer sun*os*) basic_machine=$field1 basic_os=$field2 ;; - zephyr*) - basic_machine=$field1-unknown - basic_os=$field2 - ;; # Manufacturers - dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ - | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ - | unicom* | ibm* | next | hp | isi* | apollo | altos* \ - | convergent* | ncr* | news | 32* | 3600* | 3100* \ - | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ - | ultra | tti* | harris | dolphin | highlevel | gould \ - | cbm | ns | masscomp | apple | axis | knuth | cray \ - | microblaze* | sim | cisco \ - | oki | wec | wrs | winbond) + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) basic_machine=$field1-$field2 basic_os= ;; + tock* | zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; *) basic_machine=$field1 basic_os=$field2 @@ -272,26 +345,6 @@ case $1 in basic_machine=arm-unknown basic_os=cegcc ;; - convex-c1) - basic_machine=c1-convex - basic_os=bsd - ;; - convex-c2) - basic_machine=c2-convex - basic_os=bsd - ;; - convex-c32) - basic_machine=c32-convex - basic_os=bsd - ;; - convex-c34) - basic_machine=c34-convex - basic_os=bsd - ;; - convex-c38) - basic_machine=c38-convex - basic_os=bsd - ;; cray) basic_machine=j90-cray basic_os=unicos @@ -714,15 +767,26 @@ case $basic_machine in vendor=dec basic_os=tops20 ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) cpu=m68k vendor=motorola ;; - dpx2*) + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) cpu=m68k vendor=bull - basic_os=sysv3 + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull ;; encore | umax | mmax) cpu=ns32k @@ -837,18 +901,6 @@ case $basic_machine in next | m*-next) cpu=m68k vendor=next - case $basic_os in - openstep*) - ;; - nextstep*) - ;; - ns2*) - basic_os=nextstep2 - ;; - *) - basic_os=nextstep3 - ;; - esac ;; np1) cpu=np1 @@ -937,7 +989,6 @@ case $basic_machine in ;; *-*) - # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <<EOF $basic_machine @@ -972,15 +1023,19 @@ unset -v basic_machine # Decode basic machines in the full and proper CPU-Company form. case $cpu-$vendor in - # Here we handle the default manufacturer of certain CPU types in canonical form. It is in - # some cases the only manufacturer, in others, it is the most popular. + # Here we handle the default manufacturer of certain CPU types in canonical form. + # It is in some cases the only manufacturer, in others, it is the most popular. + c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown) + vendor=convex + basic_os=${basic_os:-bsd} + ;; craynv-unknown) vendor=cray basic_os=${basic_os:-unicosmp} ;; c90-unknown | c90-cray) vendor=cray - basic_os=${Basic_os:-unicos} + basic_os=${basic_os:-unicos} ;; fx80-unknown) vendor=alliant @@ -1026,11 +1081,29 @@ case $cpu-$vendor in vendor=alt basic_os=${basic_os:-linux-gnueabihf} ;; - dpx20-unknown | dpx20-bull) - cpu=rs6000 - vendor=bull + + # Normalized CPU+vendor pairs that imply an OS, if not otherwise specified + m68k-isi) + basic_os=${basic_os:-sysv} + ;; + m68k-sony) + basic_os=${basic_os:-newsos} + ;; + m68k-tektronix) + basic_os=${basic_os:-bsd} + ;; + m88k-harris) + basic_os=${basic_os:-sysv3} + ;; + i386-bull | m68k-bull) + basic_os=${basic_os:-sysv3} + ;; + rs6000-bull) basic_os=${basic_os:-bosx} ;; + mips-sni) + basic_os=${basic_os:-sysv4} + ;; # Here we normalize CPU types irrespective of the vendor amd64-*) @@ -1038,7 +1111,7 @@ case $cpu-$vendor in ;; blackfin-*) cpu=bfin - basic_os=linux + basic_os=${basic_os:-linux} ;; c54x-*) cpu=tic54x @@ -1061,7 +1134,7 @@ case $cpu-$vendor in ;; m68knommu-*) cpu=m68k - basic_os=linux + basic_os=${basic_os:-linux} ;; m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) cpu=s12z @@ -1071,7 +1144,7 @@ case $cpu-$vendor in ;; parisc-*) cpu=hppa - basic_os=linux + basic_os=${basic_os:-linux} ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) cpu=i586 @@ -1085,9 +1158,6 @@ case $cpu-$vendor in pentium4-*) cpu=i786 ;; - pc98-*) - cpu=i386 - ;; ppc-* | ppcbe-*) cpu=powerpc ;; @@ -1121,13 +1191,10 @@ case $cpu-$vendor in tx39el-*) cpu=mipstx39el ;; - x64-*) - cpu=x86_64 - ;; xscale-* | xscalee[bl]-*) cpu=`echo "$cpu" | sed 's/^xscale/arm/'` ;; - arm64-* | aarch64le-*) + arm64-* | aarch64le-* | arm64_32-*) cpu=aarch64 ;; @@ -1179,90 +1246,228 @@ case $cpu-$vendor in # Recognize the canonical CPU types that are allowed with any # company name. case $cpu in - 1750a | 580 \ + 1750a \ + | 580 \ + | [cjt]90 \ | a29k \ - | aarch64 | aarch64_be | aarch64c | arm64ec \ + | aarch64 \ + | aarch64_be \ + | aarch64c \ | abacus \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ - | alphapca5[67] | alpha64pca5[67] \ + | alpha \ + | alpha64 \ + | alpha64ev56 \ + | alpha64ev6[78] \ + | alpha64ev[4-8] \ + | alpha64pca5[67] \ + | alphaev56 \ + | alphaev6[78] \ + | alphaev[4-8] \ + | alphapca5[67] \ | am33_2.0 \ | amdgcn \ - | arc | arceb | arc32 | arc64 \ - | arm | arm[lb]e | arme[lb] | armv* \ - | avr | avr32 \ + | arc \ + | arc32 \ + | arc64 \ + | arceb \ + | arm \ + | arm64e \ + | arm64ec \ + | arm[lb]e \ + | arme[lb] \ + | armv* \ | asmjs \ + | avr \ + | avr32 \ | ba \ - | be32 | be64 \ - | bfin | bpf | bs2000 \ - | c[123]* | c30 | [cjt]90 | c4x \ - | c8051 | clipper | craynv | csky | cydra \ - | d10v | d30v | dlx | dsp16xx \ - | e2k | elxsi | epiphany \ - | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ - | javascript \ - | h8300 | h8500 \ - | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | be32 \ + | be64 \ + | bfin \ + | bpf \ + | bs2000 \ + | c30 \ + | c4x \ + | c8051 \ + | c[123]* \ + | clipper \ + | craynv \ + | csky \ + | cydra \ + | d10v \ + | d30v \ + | dlx \ + | dsp16xx \ + | e2k \ + | elxsi \ + | epiphany \ + | f30[01] \ + | f700 \ + | fido \ + | fr30 \ + | frv \ + | ft32 \ + | fx80 \ + | h8300 \ + | h8500 \ | hexagon \ - | i370 | i*86 | i860 | i960 | ia16 | ia64 \ - | ip2k | iq2000 \ + | hppa \ + | hppa1.[01] \ + | hppa2.0 \ + | hppa2.0[nw] \ + | hppa64 \ + | i*86 \ + | i370 \ + | i860 \ + | i960 \ + | ia16 \ + | ia64 \ + | intelgt \ + | ip2k \ + | iq2000 \ + | javascript \ | k1om \ | kvx \ - | le32 | le64 \ + | le32 \ + | le64 \ | lm32 \ - | loongarch32 | loongarch64 \ - | m32c | m32r | m32rle \ - | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ - | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ - | m88110 | m88k | maxq | mb | mcore | mep | metag \ - | microblaze | microblazeel \ + | loongarch32 \ + | loongarch64 \ + | m32c \ + | m32r \ + | m32rle \ + | m5200 \ + | m68000 \ + | m680[012346]0 \ + | m6811 \ + | m6812 \ + | m68360 \ + | m683?2 \ + | m68hc11 \ + | m68hc12 \ + | m68hcs12x \ + | m68k \ + | m88110 \ + | m88k \ + | maxq \ + | mb \ + | mcore \ + | mep \ + | metag \ + | microblaze \ + | microblazeel \ | mips* \ | mmix \ - | mn10200 | mn10300 \ + | mn10200 \ + | mn10300 \ | moxie \ - | mt \ | msp430 \ + | mt \ | nanomips* \ - | nds32 | nds32le | nds32be \ + | nds32 \ + | nds32be \ + | nds32le \ | nfp \ - | nios | nios2 | nios2eb | nios2el \ - | none | np1 | ns16k | ns32k | nvptx \ + | nios \ + | nios2 \ + | nios2eb \ + | nios2el \ + | none \ + | np1 \ + | ns16k \ + | ns32k \ + | nvptx \ | open8 \ | or1k* \ | or32 \ | orion \ + | pdp10 \ + | pdp11 \ | picochip \ - | pdp10 | pdp11 | pj | pjl | pn | power \ - | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pj \ + | pjl \ + | pn \ + | power \ + | powerpc \ + | powerpc64 \ + | powerpc64le \ + | powerpcle \ + | powerpcspe \ | pru \ | pyramid \ - | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ - | rl78 | romp | rs6000 | rx \ - | s390 | s390x \ + | riscv \ + | riscv32 \ + | riscv32be \ + | riscv64 \ + | riscv64be \ + | rl78 \ + | romp \ + | rs6000 \ + | rx \ + | s390 \ + | s390x \ | score \ - | sh | shl \ - | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ - | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ + | sh \ + | sh64 \ + | sh64le \ + | sh[12345][lb]e \ + | sh[1234] \ + | sh[1234]e[lb] \ + | sh[23]e \ + | sh[23]ele \ + | sh[24]a \ + | sh[24]ae[lb] \ + | sh[lb]e \ + | she[lb] \ + | shl \ + | sparc \ + | sparc64 \ + | sparc64b \ + | sparc64v \ + | sparc86x \ + | sparclet \ | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ + | sparcv8 \ + | sparcv9 \ + | sparcv9b \ + | sparcv9v \ | spu \ + | sv1 \ + | sx* \ | tahoe \ | thumbv7* \ - | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ + | tic30 \ + | tic4x \ + | tic54x \ + | tic55x \ + | tic6x \ + | tic80 \ | tron \ | ubicom32 \ - | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | v70 \ + | v810 \ + | v850 \ + | v850e \ + | v850e1 \ + | v850e2 \ + | v850e2v3 \ + | v850es \ | vax \ | vc4 \ | visium \ | w65 \ - | wasm32 | wasm64 \ + | wasm32 \ + | wasm64 \ | we32k \ - | x86 | x86_64 | xc16x | xgate | xps100 \ - | xstormy16 | xtensa* \ + | x86 \ + | x86_64 \ + | xc16x \ + | xgate \ + | xps100 \ + | xstormy16 \ + | xtensa* \ | ymp \ - | z8k | z80) + | z80 \ + | z8k) ;; *) @@ -1307,7 +1512,6 @@ case $basic_os in os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) - # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <<EOF $basic_os @@ -1319,6 +1523,10 @@ EOF kernel=nto os=`echo "$basic_os" | sed -e 's|nto|qnx|'` ;; + ironclad*) + kernel=ironclad + os=`echo "$basic_os" | sed -e 's|ironclad|mlibc|'` + ;; linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|linux|gnu|'` @@ -1354,6 +1562,23 @@ case $os in unixware*) os=sysv4.2uw ;; + # The marketing names for NeXT's operating systems were + # NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4. 'openstep' is + # mapped to 'openstep3', but 'openstep1' and 'openstep2' are + # mapped to 'nextstep' and 'nextstep2', consistent with the + # treatment of SunOS/Solaris. + ns | ns1 | nextstep | nextstep1 | openstep1) + os=nextstep + ;; + ns2 | nextstep2 | openstep2) + os=nextstep2 + ;; + ns3 | nextstep3 | openstep | openstep3) + os=openstep3 + ;; + ns4 | nextstep4 | openstep4) + os=openstep4 + ;; # es1800 is here to avoid being matched by es* (a different OS) es1800*) os=ose @@ -1424,6 +1649,7 @@ case $os in ;; utek*) os=bsd + vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'` ;; dynix*) os=bsd @@ -1440,21 +1666,25 @@ case $os in 386bsd) os=bsd ;; - ctix* | uts*) + ctix*) os=sysv + vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'` ;; - nova*) - os=rtmk-nova + uts*) + os=sysv ;; - ns2) - os=nextstep2 + nova*) + kernel=rtmk + os=nova ;; # Preserve the version number of sinix5. sinix5.*) os=`echo "$os" | sed -e 's|sinix|sysv|'` + vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'` ;; sinix*) os=sysv4 + vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'` ;; tpf*) os=tpf @@ -1595,6 +1825,14 @@ case $cpu-$vendor in os= obj=elf ;; + # The -sgi and -siemens entries must be before the mips- entry + # or we get the wrong os. + *-sgi) + os=irix + ;; + *-siemens) + os=sysv4 + ;; mips*-cisco) os= obj=elf @@ -1607,7 +1845,8 @@ case $cpu-$vendor in os= obj=coff ;; - *-tti) # must be before sparc entry or we get the wrong os. + # This must be before the sparc-* entry or we get the wrong os. + *-tti) os=sysv3 ;; sparc-* | *-sun) @@ -1639,7 +1878,7 @@ case $cpu-$vendor in os=hpux ;; *-hitachi) - os=hiux + os=hiuxwe2 ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=sysv @@ -1683,12 +1922,6 @@ case $cpu-$vendor in *-encore) os=bsd ;; - *-sgi) - os=irix - ;; - *-siemens) - os=sysv4 - ;; *-masscomp) os=rtu ;; @@ -1735,40 +1968,194 @@ case $os in ghcjs) ;; # Now accept the basic system types. - # The portable systems comes first. # Each alternative MUST end in a * to match a version number. - gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ - | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ - | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ - | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ - | hiux* | abug | nacl* | netware* | windows* \ - | os9* | macos* | osx* | ios* | tvos* | watchos* \ - | mpw* | magic* | mmixware* | mon960* | lnews* \ - | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ - | aos* | aros* | cloudabi* | sortix* | twizzler* \ - | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ - | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ - | mirbsd* | netbsd* | dicos* | openedition* | ose* \ - | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ - | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ - | bosx* | nextstep* | cxux* | oabi* \ - | ptx* | ecoff* | winnt* | domain* | vsta* \ - | udi* | lites* | ieee* | go32* | aux* | hcos* \ - | chorusrdb* | cegcc* | glidix* | serenity* \ - | cygwin* | msys* | moss* | proelf* | rtems* \ - | midipix* | mingw32* | mingw64* | mint* \ - | uxpv* | beos* | mpeix* | udk* | moxiebox* \ - | interix* | uwin* | mks* | rhapsody* | darwin* \ - | openstep* | oskit* | conix* | pw32* | nonstopux* \ - | storm-chaos* | tops10* | tenex* | tops20* | its* \ - | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ - | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ - | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ - | skyos* | haiku* | rdos* | toppers* | drops* | es* \ - | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ - | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ - | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ - | fiwix* | mlibc* | cos* | mbr* | ironclad* ) + abug \ + | aix* \ + | amdhsa* \ + | amigados* \ + | amigaos* \ + | android* \ + | aof* \ + | aos* \ + | aros* \ + | atheos* \ + | auroraux* \ + | aux* \ + | banan_os* \ + | beos* \ + | bitrig* \ + | bme* \ + | bosx* \ + | bsd* \ + | cegcc* \ + | chorusos* \ + | chorusrdb* \ + | clix* \ + | cloudabi* \ + | cnk* \ + | conix* \ + | cos* \ + | cxux* \ + | cygwin* \ + | darwin* \ + | dgux* \ + | dicos* \ + | dnix* \ + | domain* \ + | dragonfly* \ + | drops* \ + | ebmon* \ + | ecoff* \ + | ekkobsd* \ + | emscripten* \ + | emx* \ + | es* \ + | fiwix* \ + | freebsd* \ + | fuchsia* \ + | genix* \ + | genode* \ + | glidix* \ + | gnu* \ + | go32* \ + | haiku* \ + | hcos* \ + | hiux* \ + | hms* \ + | hpux* \ + | ieee* \ + | interix* \ + | ios* \ + | iris* \ + | irix* \ + | isc* \ + | its* \ + | l4re* \ + | libertybsd* \ + | lites* \ + | lnews* \ + | luna* \ + | lynxos* \ + | mach* \ + | macos* \ + | magic* \ + | mbr* \ + | midipix* \ + | midnightbsd* \ + | mingw32* \ + | mingw64* \ + | minix* \ + | mint* \ + | mirbsd* \ + | mks* \ + | mlibc* \ + | mmixware* \ + | mon960* \ + | morphos* \ + | moss* \ + | moxiebox* \ + | mpeix* \ + | mpw* \ + | msdos* \ + | msys* \ + | mvs* \ + | nacl* \ + | netbsd* \ + | netware* \ + | newsos* \ + | nextstep* \ + | nindy* \ + | nonstopux* \ + | nova* \ + | nsk* \ + | nucleus* \ + | nx6 \ + | nx7 \ + | oabi* \ + | ohos* \ + | onefs* \ + | openbsd* \ + | openedition* \ + | openstep* \ + | os108* \ + | os2* \ + | os400* \ + | os68k* \ + | os9* \ + | ose* \ + | osf* \ + | oskit* \ + | osx* \ + | palmos* \ + | phoenix* \ + | plan9* \ + | powermax* \ + | powerunix* \ + | proelf* \ + | psos* \ + | psp* \ + | ptx* \ + | pw32* \ + | qnx* \ + | rdos* \ + | redox* \ + | rhapsody* \ + | riscix* \ + | riscos* \ + | rtems* \ + | rtmk* \ + | rtu* \ + | scout* \ + | secbsd* \ + | sei* \ + | serenity* \ + | sim* \ + | skyos* \ + | solaris* \ + | solidbsd* \ + | sortix* \ + | storm-chaos* \ + | sunos \ + | sunos[34]* \ + | superux* \ + | syllable* \ + | sym* \ + | sysv* \ + | tenex* \ + | tirtos* \ + | tock* \ + | toppers* \ + | tops10* \ + | tops20* \ + | tpf* \ + | tvos* \ + | twizzler* \ + | uclinux* \ + | udi* \ + | udk* \ + | ultrix* \ + | unicos* \ + | uniplus* \ + | unleashed* \ + | unos* \ + | uwin* \ + | uxpv* \ + | v88r* \ + |*vms* \ + | vos* \ + | vsta* \ + | vxsim* \ + | vxworks* \ + | wasi* \ + | watchos* \ + | wince* \ + | windiss* \ + | windows* \ + | winnt* \ + | xenix* \ + | xray* \ + | zephyr* \ + | zvmoe* ) ;; # This one is extra strict with allowed versions sco3.2v2 | sco3.2v[4-9]* | sco5v6*) @@ -1829,9 +2216,11 @@ esac case $kernel-$os-$obj in linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ | linux-mlibc*- | linux-musl*- | linux-newlib*- \ - | linux-relibc*- | linux-uclibc*- ) + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) ;; - uclinux-uclibc*- ) + ironclad-mlibc*-) ;; managarm-mlibc*- | managarm-kernel*- ) ;; @@ -1856,7 +2245,7 @@ case $kernel-$os-$obj in echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 exit 1 ;; - kfreebsd*-gnu*- | kopensolaris*-gnu*-) + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) ;; vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; @@ -1864,8 +2253,12 @@ case $kernel-$os-$obj in ;; os2-emx-) ;; + rtmk-nova-) + ;; *-eabi*- | *-gnueabi*-) ;; + ios*-simulator- | tvos*-simulator- | watchos*-simulator- ) + ;; none--*) # None (no kernel, i.e. freestanding / bare metal), # can be paired with an machine code file format @@ -1890,7 +2283,7 @@ case $vendor in *-riscix*) vendor=acorn ;; - *-sunos*) + *-sunos* | *-solaris*) vendor=sun ;; *-cnk* | *-aix*) @@ -1964,8 +2357,8 @@ echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-format: "%Y-%02m-%02d" # time-stamp-end: "'" # End: diff --git a/contrib/ncurses/configure b/contrib/ncurses/configure index 488d93fc1c02..48ad381ffd83 100755 --- a/contrib/ncurses/configure +++ b/contrib/ncurses/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.in Revision: 1.779 . +# From configure.in Revision: 1.824 . # Guess values for system-dependent variables and create Makefiles. -# Generated by Autoconf 2.52.20231210. +# Generated by Autoconf 2.52.20250126. # # Copyright 2003-2022,2023 Thomas E. Dickey # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 @@ -481,6 +481,10 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; + -*dir | -dvi* | -doc* | -html* | -local* | -pdf* | -ps* ) + echo "$as_me: WARNING: unsupported option: $ac_option" >&2 + ;; + -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } @@ -717,7 +721,7 @@ Optional Features: --with-abi-version=XXX override derived ABI version --with-system-type=XXX test: override derived host system-type --with-abi-altered=XXX override visible ABI version, for packaging - --without-ada suppress check for Ada compiler, don't build demo + --without-ada suppress check for Ada compiler --without-cxx do not adjust ncurses bool to match C++ --without-cxx-binding do not build C++ binding and demo --disable-db-install suppress install of terminal database @@ -732,6 +736,7 @@ Optional Features: --with-pc-suffix[=XXX] suffix pkg-config files with XXX --enable-mixed-case tic should assume mixed-case filenames --with-install-prefix=DESTDIR use DESTDIR as installation directory prefix + --enable-install-prefix merge DESTDIR with installation prefix Build-Tools Needed to Compile Temporary Applications for Cross-compiling: --with-build-cc=XXX the build C compiler ($BUILD_CC) --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP) @@ -773,7 +778,7 @@ Fine-Tuning Your Configuration: --with-tic-path=XXX specify path of tic for fallbacks --with-infocmp-path=XXX specify path of infocmp for fallbacks --without-xterm-new specify if xterm terminfo should be old version - --with-xterm-kbs[=XXX] specify if xterm backspace sends BS or DEL + --with-xterm-kbs[=XXX] specify if xterm backspace-key sends BS or DEL --with-terminfo-dirs=XXX specify list of terminfo directories (default: DATADIR/terminfo) --with-default-terminfo-dir=DIR default terminfo directory (default: DATADIR/terminfo) --disable-big-core assume machine has little memory @@ -805,25 +810,19 @@ Fine-Tuning Your Configuration: --enable-signed-char use signed chars for Boolean array in term.h --with-tparm-arg=TYPE override parameter type of tparm --with-rcs-ids compile-in RCS identifiers -Options to Specify How Manpages are Installed: - --with-manpage-format specify manpage-format: gzip/compress/bzip2/xz, - BSDI/normal and optionally formatted/catonly, - e.g., gzip,formatted - --with-manpage-renames specify manpage-renaming - --with-manpage-aliases specify manpage-aliases using .so - --with-manpage-symlinks specify manpage-aliases using symlinks - --with-manpage-tbl specify manpage processing with tbl Extensions: --disable-ext-funcs disable function-extensions --enable-sp-funcs enable SCREEN-extensions --enable-term-driver enable terminal-driver --enable-const compile with extra/non-standard const --enable-ext-colors compile for 256-color support + --enable-rgb-color compile for extended direct-color --enable-ext-mouse compile for extended mouse-encoding --enable-ext-putwin compile with extended putwin/screendump --enable-no-padding compile with $NCURSES_NO_PADDING code --enable-sigwinch compile with SIGWINCH handler --enable-tcap-names compile with user-definable terminal capabilities + --enable-named-pipes use named pipes with Windows driver Reentrant Code: --with-pthread use POSIX thread library --enable-pthreads-eintr enable EINTR in wgetch with pthreads @@ -848,7 +847,7 @@ Experimental Code: --enable-safe-sprintf compile with experimental safe-sprintf code --disable-scroll-hints compile without scroll-hints code --enable-wgetch-events compile with wgetch-events code - --enable-exp-win32 compile with experimental-Windows driver + --enable-exp-win32 obsolete option for Windows driver Testing/development Options: --disable-echo do not display "compiling" commands --disable-stripping do not strip (debug info) installed executables @@ -876,6 +875,14 @@ Library basenames for pkgsrc: --with-menu-libname[=XXX] override ifelse(,,menu,) basename of library --with-panel-libname[=XXX] override ifelse(,,panel,) basename of library --with-cxx-libname[=XXX] override ifelse(ncurses++,,cxx,ncurses++) basename of library +Options to Specify How Manpages are Installed: + --with-manpage-format specify man page format: gzip/compress/bzip2/xz, + BSDI/normal and optionally formatted/catonly, + e.g., gzip,formatted + --with-manpage-renames specify man page renaming + --with-manpage-aliases specify man page aliases using .so + --with-manpage-symlinks specify man page aliases using symlinks + --with-manpage-tbl specify man page processing with tbl Some influential environment variables: CC C compiler command @@ -949,7 +956,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.52.20231210. Invocation command line was +generated by GNU Autoconf 2.52.20250126. Invocation command line was $ $0 $@ @@ -1073,7 +1080,7 @@ if test -z "$CONFIG_SITE"; then fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then - { echo "$as_me:1076: loading site script $ac_site_file" >&5 + { echo "$as_me:1083: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} cat "$ac_site_file" >&5 . "$ac_site_file" @@ -1084,7 +1091,7 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then - { echo "$as_me:1087: loading cache $cache_file" >&5 + { echo "$as_me:1094: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; @@ -1092,7 +1099,7 @@ echo "$as_me: loading cache $cache_file" >&6;} esac fi else - { echo "$as_me:1095: creating cache $cache_file" >&5 + { echo "$as_me:1102: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1108,21 +1115,21 @@ for ac_var in `(set) 2>&1 | eval ac_new_val="\$ac_env_${ac_var}_value" case "$ac_old_set,$ac_new_set" in set,) - { echo "$as_me:1111: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 + { echo "$as_me:1118: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:1115: error: \`$ac_var' was not set in the previous run" >&5 + { echo "$as_me:1122: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:1121: error: \`$ac_var' has changed since the previous run:" >&5 + { echo "$as_me:1128: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:1123: former value: $ac_old_val" >&5 + { echo "$as_me:1130: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:1125: current value: $ac_new_val" >&5 + { echo "$as_me:1132: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; @@ -1141,9 +1148,9 @@ echo "$as_me: current value: $ac_new_val" >&2;} fi done if "$ac_cache_corrupted"; then - { echo "$as_me:1144: error: changes in the environment can compromise the build" >&5 + { echo "$as_me:1151: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:1146: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 + { { echo "$as_me:1153: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi @@ -1172,10 +1179,10 @@ esac echo "#! $SHELL" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh -if { (echo "$as_me:1175: PATH=\".;.\"; conftest.sh") >&5 +if { (echo "$as_me:1182: PATH=\".;.\"; conftest.sh") >&5 (PATH=".;."; conftest.sh) 2>&5 ac_status=$? - echo "$as_me:1178: \$? = $ac_status" >&5 + echo "$as_me:1185: \$? = $ac_status" >&5 (exit "$ac_status"); }; then ac_path_separator=';' else @@ -1192,7 +1199,7 @@ for ac_prog in ggrep grep do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:1195: checking for $ac_word" >&5 +echo "$as_me:1202: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1207,7 +1214,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_GREP="$ac_prog" -echo "$as_me:1210: found $ac_dir/$ac_word" >&5 +echo "$as_me:1217: found $ac_dir/$ac_word" >&5 break done @@ -1215,10 +1222,10 @@ fi fi GREP=$ac_cv_prog_GREP if test -n "$GREP"; then - echo "$as_me:1218: result: $GREP" >&5 + echo "$as_me:1225: result: $GREP" >&5 echo "${ECHO_T}$GREP" >&6 else - echo "$as_me:1221: result: no" >&5 + echo "$as_me:1228: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1226,7 +1233,7 @@ fi done test -n "$GREP" || GREP=": " -echo "$as_me:1229: checking for egrep" >&5 +echo "$as_me:1236: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1238,7 +1245,7 @@ else do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:1241: checking for $ac_word" >&5 +echo "$as_me:1248: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1255,7 +1262,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_EGREP="$ac_dir/$ac_word" - echo "$as_me:1258: found $ac_dir/$ac_word" >&5 + echo "$as_me:1265: found $ac_dir/$ac_word" >&5 break fi done @@ -1266,10 +1273,10 @@ fi EGREP=$ac_cv_path_EGREP if test -n "$EGREP"; then - echo "$as_me:1269: result: $EGREP" >&5 + echo "$as_me:1276: result: $EGREP" >&5 echo "${ECHO_T}$EGREP" >&6 else - echo "$as_me:1272: result: no" >&5 + echo "$as_me:1279: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1277,12 +1284,12 @@ fi done test -n "$EGREP" || EGREP=": " - test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:1280: error: cannot find workable egrep" >&5 + test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:1287: error: cannot find workable egrep" >&5 echo "$as_me: error: cannot find workable egrep" >&2;} { (exit 1); exit 1; }; } fi fi -echo "$as_me:1285: result: $ac_cv_path_EGREP" >&5 +echo "$as_me:1292: result: $ac_cv_path_EGREP" >&5 echo "${ECHO_T}$ac_cv_path_EGREP" >&6 EGREP="$ac_cv_path_EGREP" @@ -1293,11 +1300,11 @@ cf_cv_abi_version=${NCURSES_MAJOR} cf_cv_abi_default=${NCURSES_MAJOR} cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} cf_cv_timestamp=`date` -echo "$as_me:1296: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_default ($cf_cv_timestamp)" >&5 +echo "$as_me:1303: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_default ($cf_cv_timestamp)" >&5 echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_default ($cf_cv_timestamp)" >&6 if test -f "$srcdir/VERSION" ; then - echo "$as_me:1300: checking for package version" >&5 + echo "$as_me:1307: checking for package version" >&5 echo $ECHO_N "checking for package version... $ECHO_C" >&6 # if there are not enough fields, cut returns the last one... @@ -1309,39 +1316,39 @@ echo $ECHO_N "checking for package version... $ECHO_C" >&6 VERSION="$cf_field1" VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'` - test -z "$VERSION_MAJOR" && { { echo "$as_me:1312: error: missing major-version" >&5 + test -z "$VERSION_MAJOR" && { { echo "$as_me:1319: error: missing major-version" >&5 echo "$as_me: error: missing major-version" >&2;} { (exit 1); exit 1; }; } VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[^.]*\.//' -e 's/-.*//'` - test -z "$VERSION_MINOR" && { { echo "$as_me:1317: error: missing minor-version" >&5 + test -z "$VERSION_MINOR" && { { echo "$as_me:1324: error: missing minor-version" >&5 echo "$as_me: error: missing minor-version" >&2;} { (exit 1); exit 1; }; } - echo "$as_me:1321: result: ${VERSION_MAJOR}.${VERSION_MINOR}" >&5 + echo "$as_me:1328: result: ${VERSION_MAJOR}.${VERSION_MINOR}" >&5 echo "${ECHO_T}${VERSION_MAJOR}.${VERSION_MINOR}" >&6 - echo "$as_me:1324: checking for package patch date" >&5 + echo "$as_me:1331: checking for package patch date" >&5 echo $ECHO_N "checking for package patch date... $ECHO_C" >&6 VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[^-]*-//'` case .$VERSION_PATCH in (.) - { { echo "$as_me:1329: error: missing patch-date $VERSION_PATCH" >&5 + { { echo "$as_me:1336: error: missing patch-date $VERSION_PATCH" >&5 echo "$as_me: error: missing patch-date $VERSION_PATCH" >&2;} { (exit 1); exit 1; }; } ;; (.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) ;; (*) - { { echo "$as_me:1336: error: illegal patch-date $VERSION_PATCH" >&5 + { { echo "$as_me:1343: error: illegal patch-date $VERSION_PATCH" >&5 echo "$as_me: error: illegal patch-date $VERSION_PATCH" >&2;} { (exit 1); exit 1; }; } ;; esac - echo "$as_me:1341: result: $VERSION_PATCH" >&5 + echo "$as_me:1348: result: $VERSION_PATCH" >&5 echo "${ECHO_T}$VERSION_PATCH" >&6 else - { { echo "$as_me:1344: error: did not find $srcdir/VERSION" >&5 + { { echo "$as_me:1351: error: did not find $srcdir/VERSION" >&5 echo "$as_me: error: did not find $srcdir/VERSION" >&2;} { (exit 1); exit 1; }; } fi @@ -1349,35 +1356,33 @@ fi # show the actual data that we have for versions: test -n "$verbose" && echo " ABI VERSION $VERSION" 1>&6 -echo "${as_me:-configure}:1352: testing ABI VERSION $VERSION ..." 1>&5 +echo "${as_me:-configure}:1359: testing ABI VERSION $VERSION ..." 1>&5 test -n "$verbose" && echo " VERSION_MAJOR $VERSION_MAJOR" 1>&6 -echo "${as_me:-configure}:1356: testing VERSION_MAJOR $VERSION_MAJOR ..." 1>&5 +echo "${as_me:-configure}:1363: testing VERSION_MAJOR $VERSION_MAJOR ..." 1>&5 test -n "$verbose" && echo " VERSION_MINOR $VERSION_MINOR" 1>&6 -echo "${as_me:-configure}:1360: testing VERSION_MINOR $VERSION_MINOR ..." 1>&5 +echo "${as_me:-configure}:1367: testing VERSION_MINOR $VERSION_MINOR ..." 1>&5 test -n "$verbose" && echo " VERSION_PATCH $VERSION_PATCH" 1>&6 -echo "${as_me:-configure}:1364: testing VERSION_PATCH $VERSION_PATCH ..." 1>&5 +echo "${as_me:-configure}:1371: testing VERSION_PATCH $VERSION_PATCH ..." 1>&5 - cf_PACKAGE=NCURSES + PROGRAM=NCURSES PACKAGE=ncurses cat >>confdefs.h <<EOF #define PACKAGE "$PACKAGE" EOF -cf_PACKAGE=`echo "$cf_PACKAGE" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <<EOF -#define ${cf_PACKAGE}_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}" +cat >>confdefs.h <<EOF +#define NCURSES_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}" EOF - cat >>confdefs.h <<EOF -#define ${cf_PACKAGE}_PATCHDATE ${VERSION_PATCH} +cat >>confdefs.h <<EOF +#define NCURSES_PATCHDATE ${VERSION_PATCH} EOF test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0 @@ -1385,7 +1390,7 @@ test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0 # Check whether --with-rel-version or --without-rel-version was given. if test "${with_rel_version+set}" = set; then withval="$with_rel_version" - { echo "$as_me:1388: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5 + { echo "$as_me:1393: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5 echo "$as_me: WARNING: overriding release version $cf_cv_rel_version to $withval" >&2;} cf_cv_rel_version=$withval fi; @@ -1399,13 +1404,13 @@ if test -n "$NCURSES_MAJOR" ; then (0) ;; (*) - { { echo "$as_me:1402: error: Release major-version is not a number: $NCURSES_MAJOR" >&5 + { { echo "$as_me:1407: error: Release major-version is not a number: $NCURSES_MAJOR" >&5 echo "$as_me: error: Release major-version is not a number: $NCURSES_MAJOR" >&2;} { (exit 1); exit 1; }; } ;; esac else - { { echo "$as_me:1408: error: Release major-version value is empty" >&5 + { { echo "$as_me:1413: error: Release major-version value is empty" >&5 echo "$as_me: error: Release major-version value is empty" >&2;} { (exit 1); exit 1; }; } fi @@ -1415,13 +1420,13 @@ if test -n "$NCURSES_MINOR" ; then (0) ;; (*) - { { echo "$as_me:1418: error: Release minor-version is not a number: $NCURSES_MINOR" >&5 + { { echo "$as_me:1423: error: Release minor-version is not a number: $NCURSES_MINOR" >&5 echo "$as_me: error: Release minor-version is not a number: $NCURSES_MINOR" >&2;} { (exit 1); exit 1; }; } ;; esac else - { { echo "$as_me:1424: error: Release minor-version value is empty" >&5 + { { echo "$as_me:1429: error: Release minor-version value is empty" >&5 echo "$as_me: error: Release minor-version value is empty" >&2;} { (exit 1); exit 1; }; } fi @@ -1434,7 +1439,7 @@ if test "${with_abi_version+set}" = set; then if test "x$cf_cv_abi_version" != "x$withval" then - { echo "$as_me:1437: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5 + { echo "$as_me:1442: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5 echo "$as_me: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&2;} case "$cf_cv_rel_version" in (5.*) @@ -1453,13 +1458,13 @@ if test -n "$cf_cv_abi_version" ; then (0) ;; (*) - { { echo "$as_me:1456: error: ABI version is not a number: $cf_cv_abi_version" >&5 + { { echo "$as_me:1461: error: ABI version is not a number: $cf_cv_abi_version" >&5 echo "$as_me: error: ABI version is not a number: $cf_cv_abi_version" >&2;} { (exit 1); exit 1; }; } ;; esac else - { { echo "$as_me:1462: error: ABI version value is empty" >&5 + { { echo "$as_me:1467: error: ABI version value is empty" >&5 echo "$as_me: error: ABI version value is empty" >&2;} { (exit 1); exit 1; }; } fi @@ -1492,7 +1497,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:1495: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 + { { echo "$as_me:1500: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi @@ -1502,11 +1507,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:1505: error: cannot run $ac_config_sub" >&5 + { { echo "$as_me:1510: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:1509: checking build system type" >&5 +echo "$as_me:1514: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1515,23 +1520,23 @@ else test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && - { { echo "$as_me:1518: error: cannot guess build type; you must specify one" >&5 + { { echo "$as_me:1523: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub "$ac_cv_build_alias"` || - { { echo "$as_me:1522: error: $ac_config_sub $ac_cv_build_alias failed." >&5 + { { echo "$as_me:1527: error: $ac_config_sub $ac_cv_build_alias failed." >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:1527: result: $ac_cv_build" >&5 +echo "$as_me:1532: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$as_me:1534: checking host system type" >&5 +echo "$as_me:1539: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1540,12 +1545,12 @@ else test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub "$ac_cv_host_alias"` || - { { echo "$as_me:1543: error: $ac_config_sub $ac_cv_host_alias failed" >&5 + { { echo "$as_me:1548: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:1548: result: $ac_cv_host" >&5 +echo "$as_me:1553: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` @@ -1553,7 +1558,7 @@ host_vendor=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then - echo "$as_me:1556: checking target system type" >&5 + echo "$as_me:1561: checking target system type" >&5 echo $ECHO_N "checking target system type... $ECHO_C" >&6 if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1562,12 +1567,12 @@ else test "x$ac_cv_target_alias" = "x" && ac_cv_target_alias=$ac_cv_host_alias ac_cv_target=`$ac_config_sub "$ac_cv_target_alias"` || - { { echo "$as_me:1565: error: $ac_config_sub $ac_cv_target_alias failed" >&5 + { { echo "$as_me:1570: error: $ac_config_sub $ac_cv_target_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:1570: result: $ac_cv_target" >&5 +echo "$as_me:1575: result: $ac_cv_target" >&5 echo "${ECHO_T}$ac_cv_target" >&6 target=$ac_cv_target target_cpu=`echo "$ac_cv_target" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` @@ -1599,13 +1604,13 @@ else fi test -z "$system_name" && system_name="$cf_cv_system_name" -test -n "$cf_cv_system_name" && echo "$as_me:1602: result: Configuring for $cf_cv_system_name" >&5 +test -n "$cf_cv_system_name" && echo "$as_me:1607: result: Configuring for $cf_cv_system_name" >&5 echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6 if test ".$system_name" != ".$cf_cv_system_name" ; then - echo "$as_me:1606: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5 + echo "$as_me:1611: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5 echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6 - { { echo "$as_me:1608: error: \"Please remove config.cache and try again.\"" >&5 + { { echo "$as_me:1613: error: \"Please remove config.cache and try again.\"" >&5 echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;} { (exit 1); exit 1; }; } fi @@ -1613,7 +1618,7 @@ fi # Check whether --with-system-type or --without-system-type was given. if test "${with_system_type+set}" = set; then withval="$with_system_type" - { echo "$as_me:1616: WARNING: overriding system type to $withval" >&5 + { echo "$as_me:1621: WARNING: overriding system type to $withval" >&5 echo "$as_me: WARNING: overriding system type to $withval" >&2;} cf_cv_system_name=$withval host_os=$withval @@ -1624,7 +1629,7 @@ fi; cf_user_CFLAGS="$CFLAGS" ### Default install-location -echo "$as_me:1627: checking for fgrep" >&5 +echo "$as_me:1632: checking for fgrep" >&5 echo $ECHO_N "checking for fgrep... $ECHO_C" >&6 if test "${ac_cv_path_FGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1636,7 +1641,7 @@ else do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:1639: checking for $ac_word" >&5 +echo "$as_me:1644: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1653,7 +1658,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_FGREP="$ac_dir/$ac_word" - echo "$as_me:1656: found $ac_dir/$ac_word" >&5 + echo "$as_me:1661: found $ac_dir/$ac_word" >&5 break fi done @@ -1664,10 +1669,10 @@ fi FGREP=$ac_cv_path_FGREP if test -n "$FGREP"; then - echo "$as_me:1667: result: $FGREP" >&5 + echo "$as_me:1672: result: $FGREP" >&5 echo "${ECHO_T}$FGREP" >&6 else - echo "$as_me:1670: result: no" >&5 + echo "$as_me:1675: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1675,16 +1680,16 @@ fi done test -n "$FGREP" || FGREP=": " - test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1678: error: cannot find workable fgrep" >&5 + test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1683: error: cannot find workable fgrep" >&5 echo "$as_me: error: cannot find workable fgrep" >&2;} { (exit 1); exit 1; }; } fi fi -echo "$as_me:1683: result: $ac_cv_path_FGREP" >&5 +echo "$as_me:1688: result: $ac_cv_path_FGREP" >&5 echo "${ECHO_T}$ac_cv_path_FGREP" >&6 FGREP="$ac_cv_path_FGREP" -echo "$as_me:1687: checking for prefix" >&5 +echo "$as_me:1692: checking for prefix" >&5 echo $ECHO_N "checking for prefix... $ECHO_C" >&6 if test "x$prefix" = "xNONE" ; then case "$cf_cv_system_name" in @@ -1696,11 +1701,11 @@ if test "x$prefix" = "xNONE" ; then ;; esac fi -echo "$as_me:1699: result: $prefix" >&5 +echo "$as_me:1704: result: $prefix" >&5 echo "${ECHO_T}$prefix" >&6 if test "x$prefix" = "xNONE" ; then -echo "$as_me:1703: checking for default include-directory" >&5 +echo "$as_me:1708: checking for default include-directory" >&5 echo $ECHO_N "checking for default include-directory... $ECHO_C" >&6 test -n "$verbose" && echo 1>&6 for cf_symbol in \ @@ -1723,7 +1728,7 @@ do fi test -n "$verbose" && echo " tested $cf_dir" 1>&6 done -echo "$as_me:1726: result: $includedir" >&5 +echo "$as_me:1731: result: $includedir" >&5 echo "${ECHO_T}$includedir" >&6 fi @@ -1735,6 +1740,7 @@ cf_dft_chtype=auto cf_dft_ext_colors=no cf_dft_ext_const=no cf_dft_ext_mouse=no +cf_dft_ext_mouse2=no cf_dft_ext_putwin=no cf_dft_ext_spfuncs=no cf_dft_filter_syms=no @@ -1742,6 +1748,7 @@ cf_dft_interop=no cf_dft_mmask_t=auto cf_dft_opaque_curses=no cf_dft_ordinate_type=short +cf_dft_rgb_color=no cf_dft_signed_char=no cf_dft_tparm_arg=long cf_dft_widec=no @@ -1770,8 +1777,10 @@ esac case x$cf_cv_abi_default in (x[789]) cf_dft_ccharw_max=6 + cf_dft_ext_mouse2=yes cf_dft_mmask_t=uint64_t cf_dft_ordinate_type=int + cf_dft_rgb_color=yes cf_dft_signed_char=yes # also: remove the wgetch-events feature in ABI 7 ;; @@ -1788,20 +1797,20 @@ if test -n "$withval" ; then (0) ;; (*) - { { echo "$as_me:1791: error: ABI altered is not a number: $withval" >&5 + { { echo "$as_me:1800: error: ABI altered is not a number: $withval" >&5 echo "$as_me: error: ABI altered is not a number: $withval" >&2;} { (exit 1); exit 1; }; } ;; esac else - { { echo "$as_me:1797: error: ABI altered value is empty" >&5 + { { echo "$as_me:1806: error: ABI altered value is empty" >&5 echo "$as_me: error: ABI altered value is empty" >&2;} { (exit 1); exit 1; }; } fi if test "$cf_cv_abi_version" != "$withval" then - { echo "$as_me:1804: WARNING: altering visible ABI from $cf_cv_abi_version to $withval" >&5 + { echo "$as_me:1813: WARNING: altering visible ABI from $cf_cv_abi_version to $withval" >&5 echo "$as_me: WARNING: altering visible ABI from $cf_cv_abi_version to $withval" >&2;} cf_cv_abi_version=$withval fi @@ -1818,12 +1827,307 @@ else cf_with_ada=yes fi; +cf_prog_cc="gcc cc" if test "x$cf_with_ada" = xyes then - cf_prog_cc="gnatgcc gcc cc" + +for cf_prog_gnat in gnat gnatmake gprconfig gprbuild +do + +cf_upper_prog_gnat=`echo "${cf_prog_gnat}" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + unset ac_cv_path_cf_TEMP_gnat + unset cf_TEMP_gnat + # Extract the first word of "$cf_prog_gnat", so it can be a program name with args. +set dummy $cf_prog_gnat; ac_word=$2 +echo "$as_me:1843: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_cf_TEMP_gnat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $cf_TEMP_gnat in + [\\/]* | ?:[\\/]*) + ac_cv_path_cf_TEMP_gnat="$cf_TEMP_gnat" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_cf_TEMP_gnat="$ac_dir/$ac_word" + echo "$as_me:1860: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_cf_TEMP_gnat" && ac_cv_path_cf_TEMP_gnat="no" + ;; +esac +fi +cf_TEMP_gnat=$ac_cv_path_cf_TEMP_gnat + +if test -n "$cf_TEMP_gnat"; then + echo "$as_me:1872: result: $cf_TEMP_gnat" >&5 +echo "${ECHO_T}$cf_TEMP_gnat" >&6 +else + echo "$as_me:1875: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + eval "cf_cv_PATH_$cf_upper_prog_gnat=$ac_cv_path_cf_TEMP_gnat" + + if test "x$cf_TEMP_gnat" != xno; then + unset cf_cv_gnat_version + unset cf_TEMP_gnat + +echo "$as_me:1885: checking for $cf_prog_gnat version" >&5 +echo $ECHO_N "checking for $cf_prog_gnat version... $ECHO_C" >&6 +if test "${cf_cv_gnat_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_gnat_version=`$cf_prog_gnat --version 2>&1 | \ + grep '[0-9].[0-9][0-9]*' |\ + sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'` + +fi +echo "$as_me:1896: result: $cf_cv_gnat_version" >&5 +echo "${ECHO_T}$cf_cv_gnat_version" >&6 +test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no +eval cf_TEMP_gnat=$cf_cv_gnat_version; unset cf_cv_gnat_version + + fi + eval "cf_cv_VERSION_$cf_upper_prog_gnat=$cf_TEMP_gnat" + + unset cf_TEMP_gnat + unset cf_cv_gnat_version + unset ac_cv_path_cf_TEMP_gnat +done + +if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then + cf_ada_make= + cf_cv_prog_gnat_correct=no +else + cf_ada_make=gnatmake + if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then + # gprconfig is newer than gnatmake; we can continue... + cf_ada_config="##" + else + rm -rf ./conftest* ./*~conftest* + if mkdir conftest.src + then + cf_ada_config="" + cd conftest.src + for cf_gprconfig in Ada C + do + echo "$as_me:1925: checking for gprconfig name for $cf_gprconfig" >&5 +echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6 + if test "$cf_gprconfig" = C + then + for cf_gprconfig_param in \ + "$cf_gprconfig,,,,GNATGCC" \ + "$cf_gprconfig,,,,GCC" \ + "$cf_gprconfig" + do + cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1` + test -n "$cf_gprconfig_value" && break + done + else + cf_gprconfig_param=$cf_gprconfig + cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1` + fi + if test -n "$cf_gprconfig_value" + then + eval "cf_ada_config_$cf_gprconfig=$cf_gprconfig_value" + echo "$as_me:1944: result: $cf_gprconfig_value" >&5 +echo "${ECHO_T}$cf_gprconfig_value" >&6 + else + echo "$as_me:1947: result: missing" >&5 +echo "${ECHO_T}missing" >&6 + cf_ada_config="#" + break + fi + done + cd .. + rm -rf ./conftest* ./*~conftest* + fi + fi + if test "x$cf_ada_config" != "x#" + then + +echo "$as_me:1960: checking for gnat version" >&5 +echo $ECHO_N "checking for gnat version... $ECHO_C" >&6 +if test "${cf_cv_gnat_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_gnat_version=`${cf_ada_make:-gnatmake} --version 2>&1 | \ + grep '[0-9].[0-9][0-9]*' |\ + sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'` + +fi +echo "$as_me:1971: result: $cf_cv_gnat_version" >&5 +echo "${ECHO_T}$cf_cv_gnat_version" >&6 +test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no + +case "$cf_cv_gnat_version" in +(3.1[1-9]*|3.[2-9]*|[4-9].*|[1-9][0-9].[0-9]*|20[0-9][0-9]) + cf_cv_prog_gnat_correct=yes + ;; +(*) + { echo "$as_me:1980: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5 +echo "$as_me: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;} + cf_cv_prog_gnat_correct=no + ;; +esac + + # Extract the first word of "m4", so it can be a program name with args. +set dummy m4; ac_word=$2 +echo "$as_me:1988: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_M4_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$M4_exists"; then + ac_cv_prog_M4_exists="$M4_exists" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_M4_exists="yes" +echo "$as_me:2003: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_M4_exists" && ac_cv_prog_M4_exists="no" +fi +fi +M4_exists=$ac_cv_prog_M4_exists +if test -n "$M4_exists"; then + echo "$as_me:2012: result: $M4_exists" >&5 +echo "${ECHO_T}$M4_exists" >&6 +else + echo "$as_me:2015: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + if test "$ac_cv_prog_M4_exists" = no; then + cf_cv_prog_gnat_correct=no + { echo "$as_me:2021: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5 +echo "$as_me: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&2;} + fi + if test "$cf_cv_prog_gnat_correct" = yes; then + echo "$as_me:2025: checking if GNAT works" >&5 +echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6 + +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <<CF_EOF +procedure conftest; +CF_EOF +cat >>conftest.adb <<CF_EOF +with Text_IO; +with GNAT.OS_Lib; +procedure conftest is +begin + Text_IO.Put ("Hello World"); + Text_IO.New_Line; + GNAT.OS_Lib.OS_Exit (0); +end conftest; +CF_EOF +if ( "$cf_ada_make" $ADAFLAGS conftest 1>&5 2>&1 ) ; then + if ( ./conftest 1>&5 2>&1 ) ; then + cf_cv_prog_gnat_correct=yes + else + cf_cv_prog_gnat_correct=no + fi +else + cf_cv_prog_gnat_correct=no +fi +rm -rf ./conftest* ./*~conftest* + + echo "$as_me:2053: result: $cf_cv_prog_gnat_correct" >&5 +echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6 + fi + else + cf_cv_prog_gnat_correct=no + fi +fi + + if test "x$cf_cv_prog_gnat_correct" = xyes; then + # gcc's developers chose to deprecate gnatgcc before making gprconfig + # work. They replaced gnatgcc in gcc 13 with a script which spits out + # a warning offering advice which could never work. + # + # Here is a workaround. + # Extract the first word of "gnatgcc", so it can be a program name with args. +set dummy gnatgcc; ac_word=$2 +echo "$as_me:2069: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_cf_cv_path_gnatgcc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cf_prog_cc="gcc cc" + case $cf_cv_path_gnatgcc in + [\\/]* | ?:[\\/]*) + ac_cv_path_cf_cv_path_gnatgcc="$cf_cv_path_gnatgcc" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_cf_cv_path_gnatgcc="$ac_dir/$ac_word" + echo "$as_me:2086: found $ac_dir/$ac_word" >&5 + break fi +done + + test -z "$ac_cv_path_cf_cv_path_gnatgcc" && ac_cv_path_cf_cv_path_gnatgcc="no" + ;; +esac +fi +cf_cv_path_gnatgcc=$ac_cv_path_cf_cv_path_gnatgcc + +if test -n "$cf_cv_path_gnatgcc"; then + echo "$as_me:2098: result: $cf_cv_path_gnatgcc" >&5 +echo "${ECHO_T}$cf_cv_path_gnatgcc" >&6 +else + echo "$as_me:2101: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + if test "$cf_cv_path_gnatgcc" != no + then + echo "$as_me:2107: checking for improvement" >&5 +echo $ECHO_N "checking for improvement... $ECHO_C" >&6 + cf_file_gnatgcc=`file -L "$cf_cv_path_gnatgcc" 2>/dev/null` + case "x$cf_file_gnatgcc" in + (*script*) + cf_cv_path_gnatgcc=`sh -x "$cf_cv_path_gnatgcc" --version 2>&1 | grep -w exec | sed -e 's/^[ ]*+[ ]*//' -e 's/exec[ ]//' -e 's/ .*//'` + ;; + (*) + cf_cv_path_gnatgcc=no + ;; + esac + echo "$as_me:2118: result: $cf_cv_path_gnatgcc" >&5 +echo "${ECHO_T}$cf_cv_path_gnatgcc" >&6 + test "$cf_cv_path_gnatgcc" = no && cf_cv_path_gnatgcc=gnatgcc + cf_prog_cc="$cf_cv_path_gnatgcc $cf_prog_cc" + fi + fi +fi +case "$cf_prog_cc" in +(*/*) + CC="$cf_prog_cc" + + ;; +(*) ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -1836,7 +2140,7 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:1839: checking for $ac_word" >&5 +echo "$as_me:2143: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1851,7 +2155,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -echo "$as_me:1854: found $ac_dir/$ac_word" >&5 +echo "$as_me:2158: found $ac_dir/$ac_word" >&5 break done @@ -1859,10 +2163,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1862: result: $CC" >&5 + echo "$as_me:2166: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1865: result: no" >&5 + echo "$as_me:2169: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1875,7 +2179,7 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:1878: checking for $ac_word" >&5 +echo "$as_me:2182: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1890,7 +2194,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="$ac_prog" -echo "$as_me:1893: found $ac_dir/$ac_word" >&5 +echo "$as_me:2197: found $ac_dir/$ac_word" >&5 break done @@ -1898,10 +2202,10 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1901: result: $ac_ct_CC" >&5 + echo "$as_me:2205: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else - echo "$as_me:1904: result: no" >&5 + echo "$as_me:2208: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1911,32 +2215,32 @@ done CC=$ac_ct_CC fi -test -z "$CC" && { { echo "$as_me:1914: error: no acceptable cc found in \$PATH" >&5 +test -z "$CC" && { { echo "$as_me:2218: error: no acceptable cc found in \$PATH" >&5 echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:1919:" \ +echo "$as_me:2223:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo "$2"` -{ (eval echo "$as_me:1922: \"$ac_compiler --version </dev/null >&5\"") >&5 +{ (eval echo "$as_me:2226: \"$ac_compiler --version </dev/null >&5\"") >&5 (eval $ac_compiler --version </dev/null >&5) 2>&5 ac_status=$? - echo "$as_me:1925: \$? = $ac_status" >&5 + echo "$as_me:2229: \$? = $ac_status" >&5 (exit "$ac_status"); } -{ (eval echo "$as_me:1927: \"$ac_compiler -v </dev/null >&5\"") >&5 +{ (eval echo "$as_me:2231: \"$ac_compiler -v </dev/null >&5\"") >&5 (eval $ac_compiler -v </dev/null >&5) 2>&5 ac_status=$? - echo "$as_me:1930: \$? = $ac_status" >&5 + echo "$as_me:2234: \$? = $ac_status" >&5 (exit "$ac_status"); } -{ (eval echo "$as_me:1932: \"$ac_compiler -V </dev/null >&5\"") >&5 +{ (eval echo "$as_me:2236: \"$ac_compiler -V </dev/null >&5\"") >&5 (eval $ac_compiler -V </dev/null >&5) 2>&5 ac_status=$? - echo "$as_me:1935: \$? = $ac_status" >&5 + echo "$as_me:2239: \$? = $ac_status" >&5 (exit "$ac_status"); } cat >"conftest.$ac_ext" <<_ACEOF -#line 1939 "configure" +#line 2243 "configure" #include "confdefs.h" int @@ -1952,13 +2256,13 @@ ac_clean_files="$ac_clean_files a.out a.exe" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:1955: checking for C compiler default output" >&5 +echo "$as_me:2259: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *"conftest[^"]*"//'` -if { (eval echo "$as_me:1958: \"$ac_link_default\"") >&5 +if { (eval echo "$as_me:2262: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? - echo "$as_me:1961: \$? = $ac_status" >&5 + echo "$as_me:2265: \$? = $ac_status" >&5 (exit "$ac_status"); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last @@ -1981,34 +2285,34 @@ done else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 -{ { echo "$as_me:1984: error: C compiler cannot create executables" >&5 +{ { echo "$as_me:2288: error: C compiler cannot create executables" >&5 echo "$as_me: error: C compiler cannot create executables" >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext -echo "$as_me:1990: result: $ac_file" >&5 +echo "$as_me:2294: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:1995: checking whether the C compiler works" >&5 +echo "$as_me:2299: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:2001: \"$ac_try\"") >&5 + { (eval echo "$as_me:2305: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2004: \$? = $ac_status" >&5 + echo "$as_me:2308: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:2011: error: cannot run C compiled programs. + { { echo "$as_me:2315: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&2;} @@ -2016,24 +2320,24 @@ If you meant to cross compile, use \`--host'." >&2;} fi fi fi -echo "$as_me:2019: result: yes" >&5 +echo "$as_me:2323: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe "conftest$ac_cv_exeext" ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:2026: checking whether we are cross compiling" >&5 +echo "$as_me:2330: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:2028: result: $cross_compiling" >&5 +echo "$as_me:2332: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 -echo "$as_me:2031: checking for executable suffix" >&5 +echo "$as_me:2335: checking for executable suffix" >&5 echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 -if { (eval echo "$as_me:2033: \"$ac_link\"") >&5 +if { (eval echo "$as_me:2337: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:2036: \$? = $ac_status" >&5 + echo "$as_me:2340: \$? = $ac_status" >&5 (exit "$ac_status"); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will @@ -2049,25 +2353,25 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do esac done else - { { echo "$as_me:2052: error: cannot compute EXEEXT: cannot compile and link" >&5 + { { echo "$as_me:2356: error: cannot compute EXEEXT: cannot compile and link" >&5 echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} { (exit 1); exit 1; }; } fi rm -f "conftest$ac_cv_exeext" -echo "$as_me:2058: result: $ac_cv_exeext" >&5 +echo "$as_me:2362: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f "conftest.$ac_ext" EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:2064: checking for object suffix" >&5 +echo "$as_me:2368: checking for object suffix" >&5 echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 2070 "configure" +#line 2374 "configure" #include "confdefs.h" int @@ -2079,10 +2383,10 @@ main (void) } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:2082: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2386: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2085: \$? = $ac_status" >&5 + echo "$as_me:2389: \$? = $ac_status" >&5 (exit "$ac_status"); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in @@ -2094,24 +2398,24 @@ done else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 -{ { echo "$as_me:2097: error: cannot compute OBJEXT: cannot compile" >&5 +{ { echo "$as_me:2401: error: cannot compute OBJEXT: cannot compile" >&5 echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} { (exit 1); exit 1; }; } fi rm -f "conftest.$ac_cv_objext" "conftest.$ac_ext" fi -echo "$as_me:2104: result: $ac_cv_objext" >&5 +echo "$as_me:2408: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:2108: checking whether we are using the GNU C compiler" >&5 +echo "$as_me:2412: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 2114 "configure" +#line 2418 "configure" #include "confdefs.h" int @@ -2126,16 +2430,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2129: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2433: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2132: \$? = $ac_status" >&5 + echo "$as_me:2436: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2135: \"$ac_try\"") >&5 + { (eval echo "$as_me:2439: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2138: \$? = $ac_status" >&5 + echo "$as_me:2442: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_compiler_gnu=yes else @@ -2147,19 +2451,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:2150: result: $ac_cv_c_compiler_gnu" >&5 +echo "$as_me:2454: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" -echo "$as_me:2156: checking whether $CC accepts -g" >&5 +echo "$as_me:2460: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 2162 "configure" +#line 2466 "configure" #include "confdefs.h" int @@ -2171,16 +2475,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2174: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2478: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2177: \$? = $ac_status" >&5 + echo "$as_me:2481: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2180: \"$ac_try\"") >&5 + { (eval echo "$as_me:2484: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2183: \$? = $ac_status" >&5 + echo "$as_me:2487: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_prog_cc_g=yes else @@ -2190,7 +2494,7 @@ ac_cv_prog_cc_g=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:2193: result: $ac_cv_prog_cc_g" >&5 +echo "$as_me:2497: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS @@ -2217,16 +2521,16 @@ cat >"conftest.$ac_ext" <<_ACEOF #endif _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2220: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2524: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2223: \$? = $ac_status" >&5 + echo "$as_me:2527: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2226: \"$ac_try\"") >&5 + { (eval echo "$as_me:2530: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2229: \$? = $ac_status" >&5 + echo "$as_me:2533: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then for ac_declaration in \ ''\ @@ -2238,7 +2542,7 @@ if { (eval echo "$as_me:2220: \"$ac_compile\"") >&5 'void exit (int);' do cat >"conftest.$ac_ext" <<_ACEOF -#line 2241 "configure" +#line 2545 "configure" #include "confdefs.h" #include <stdlib.h> $ac_declaration @@ -2251,16 +2555,16 @@ exit (42); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2254: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2558: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2257: \$? = $ac_status" >&5 + echo "$as_me:2561: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2260: \"$ac_try\"") >&5 + { (eval echo "$as_me:2564: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2263: \$? = $ac_status" >&5 + echo "$as_me:2567: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -2270,7 +2574,7 @@ continue fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" cat >"conftest.$ac_ext" <<_ACEOF -#line 2273 "configure" +#line 2577 "configure" #include "confdefs.h" $ac_declaration int @@ -2282,16 +2586,16 @@ exit (42); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2285: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2589: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2288: \$? = $ac_status" >&5 + echo "$as_me:2592: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2291: \"$ac_try\"") >&5 + { (eval echo "$as_me:2595: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2294: \$? = $ac_status" >&5 + echo "$as_me:2598: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -2321,11 +2625,11 @@ ac_main_return="return" GCC_VERSION=none if test "$GCC" = yes ; then - echo "$as_me:2324: checking version of $CC" >&5 + echo "$as_me:2628: checking version of $CC" >&5 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[^(]*([^)][^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" test -z "$GCC_VERSION" && GCC_VERSION=unknown - echo "$as_me:2328: result: $GCC_VERSION" >&5 + echo "$as_me:2632: result: $GCC_VERSION" >&5 echo "${ECHO_T}$GCC_VERSION" >&6 fi @@ -2334,12 +2638,12 @@ INTEL_COMPILER=no if test "$GCC" = yes ; then case "$host_os" in (linux*|gnu*) - echo "$as_me:2337: checking if this is really Intel C compiler" >&5 + echo "$as_me:2641: checking if this is really Intel C compiler" >&5 echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6 cf_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -no-gcc" cat >"conftest.$ac_ext" <<_ACEOF -#line 2342 "configure" +#line 2646 "configure" #include "confdefs.h" int @@ -2356,16 +2660,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2359: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2663: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2362: \$? = $ac_status" >&5 + echo "$as_me:2666: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2365: \"$ac_try\"") >&5 + { (eval echo "$as_me:2669: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2368: \$? = $ac_status" >&5 + echo "$as_me:2672: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then INTEL_COMPILER=yes cf_save_CFLAGS="$cf_save_CFLAGS -we147" @@ -2376,7 +2680,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" CFLAGS="$cf_save_CFLAGS" - echo "$as_me:2379: result: $INTEL_COMPILER" >&5 + echo "$as_me:2683: result: $INTEL_COMPILER" >&5 echo "${ECHO_T}$INTEL_COMPILER" >&6 ;; esac @@ -2385,11 +2689,11 @@ fi CLANG_COMPILER=no if test "$GCC" = yes ; then - echo "$as_me:2388: checking if this is really Clang C compiler" >&5 + echo "$as_me:2692: checking if this is really Clang C compiler" >&5 echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6 cf_save_CFLAGS="$CFLAGS" cat >"conftest.$ac_ext" <<_ACEOF -#line 2392 "configure" +#line 2696 "configure" #include "confdefs.h" int @@ -2406,16 +2710,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2409: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2713: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2412: \$? = $ac_status" >&5 + echo "$as_me:2716: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2415: \"$ac_try\"") >&5 + { (eval echo "$as_me:2719: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2418: \$? = $ac_status" >&5 + echo "$as_me:2722: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then CLANG_COMPILER=yes @@ -2425,7 +2729,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" CFLAGS="$cf_save_CFLAGS" - echo "$as_me:2428: result: $CLANG_COMPILER" >&5 + echo "$as_me:2732: result: $CLANG_COMPILER" >&5 echo "${ECHO_T}$CLANG_COMPILER" >&6 fi @@ -2434,30 +2738,30 @@ CLANG_VERSION=none if test "x$CLANG_COMPILER" = "xyes" ; then case "$CC" in (c[1-9][0-9]|*/c[1-9][0-9]) - { echo "$as_me:2437: WARNING: replacing broken compiler alias $CC" >&5 + { echo "$as_me:2741: WARNING: replacing broken compiler alias $CC" >&5 echo "$as_me: WARNING: replacing broken compiler alias $CC" >&2;} CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" CC=clang ;; esac - echo "$as_me:2444: checking version of $CC" >&5 + echo "$as_me:2748: checking version of $CC" >&5 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" test -z "$CLANG_VERSION" && CLANG_VERSION=unknown - echo "$as_me:2448: result: $CLANG_VERSION" >&5 + echo "$as_me:2752: result: $CLANG_VERSION" >&5 echo "${ECHO_T}$CLANG_VERSION" >&6 for cf_clang_opt in \ -Qunused-arguments \ -Wno-error=implicit-function-declaration do - echo "$as_me:2455: checking if option $cf_clang_opt works" >&5 + echo "$as_me:2759: checking if option $cf_clang_opt works" >&5 echo $ECHO_N "checking if option $cf_clang_opt works... $ECHO_C" >&6 cf_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $cf_clang_opt" cat >"conftest.$ac_ext" <<_ACEOF -#line 2460 "configure" +#line 2764 "configure" #include "confdefs.h" #include <stdio.h> @@ -2471,16 +2775,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:2474: \"$ac_link\"") >&5 +if { (eval echo "$as_me:2778: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:2477: \$? = $ac_status" >&5 + echo "$as_me:2781: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:2480: \"$ac_try\"") >&5 + { (eval echo "$as_me:2784: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2483: \$? = $ac_status" >&5 + echo "$as_me:2787: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_clang_optok=yes @@ -2491,13 +2795,13 @@ cat "conftest.$ac_ext" >&5 cf_clang_optok=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" - echo "$as_me:2494: result: $cf_clang_optok" >&5 + echo "$as_me:2798: result: $cf_clang_optok" >&5 echo "${ECHO_T}$cf_clang_optok" >&6 CFLAGS="$cf_save_CFLAGS" if test "$cf_clang_optok" = yes; then test -n "$verbose" && echo " adding option $cf_clang_opt" 1>&6 -echo "${as_me:-configure}:2500: testing adding option $cf_clang_opt ..." 1>&5 +echo "${as_me:-configure}:2804: testing adding option $cf_clang_opt ..." 1>&5 test -n "$CFLAGS" && CFLAGS="$CFLAGS " CFLAGS="${CFLAGS}$cf_clang_opt" @@ -2506,7 +2810,7 @@ echo "${as_me:-configure}:2500: testing adding option $cf_clang_opt ..." 1>&5 done fi -echo "$as_me:2509: checking for $CC option to accept ANSI C" >&5 +echo "$as_me:2813: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2514,7 +2818,7 @@ else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >"conftest.$ac_ext" <<_ACEOF -#line 2517 "configure" +#line 2821 "configure" #include "confdefs.h" #include <stdarg.h> #include <stdio.h> @@ -2561,16 +2865,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO do CC="$ac_save_CC $ac_arg" rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:2564: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2868: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2567: \$? = $ac_status" >&5 + echo "$as_me:2871: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:2570: \"$ac_try\"") >&5 + { (eval echo "$as_me:2874: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2573: \$? = $ac_status" >&5 + echo "$as_me:2877: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_prog_cc_stdc=$ac_arg break @@ -2587,10 +2891,10 @@ fi case "x$ac_cv_prog_cc_stdc" in x|xno) - echo "$as_me:2590: result: none needed" >&5 + echo "$as_me:2894: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) - echo "$as_me:2593: result: $ac_cv_prog_cc_stdc" >&5 + echo "$as_me:2897: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac @@ -2598,13 +2902,13 @@ esac # This should have been defined by AC_PROG_CC : "${CC:=cc}" -echo "$as_me:2601: checking \$CFLAGS variable" >&5 +echo "$as_me:2905: checking \$CFLAGS variable" >&5 echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6 case "x$CFLAGS" in (*-[IUD]*) - echo "$as_me:2605: result: broken" >&5 + echo "$as_me:2909: result: broken" >&5 echo "${ECHO_T}broken" >&6 - { echo "$as_me:2607: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5 + { echo "$as_me:2911: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5 echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;} cf_flags="$CFLAGS" CFLAGS= @@ -2712,18 +3016,18 @@ fi done ;; (*) - echo "$as_me:2715: result: ok" >&5 + echo "$as_me:3019: result: ok" >&5 echo "${ECHO_T}ok" >&6 ;; esac -echo "$as_me:2720: checking \$CC variable" >&5 +echo "$as_me:3024: checking \$CC variable" >&5 echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6 case "$CC" in (*[\ \ ]-*) - echo "$as_me:2724: result: broken" >&5 + echo "$as_me:3028: result: broken" >&5 echo "${ECHO_T}broken" >&6 - { echo "$as_me:2726: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5 + { echo "$as_me:3030: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5 echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;} # humor him... cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'` @@ -2840,30 +3144,33 @@ fi done test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6 -echo "${as_me:-configure}:2843: testing resulting CC: '$CC' ..." 1>&5 +echo "${as_me:-configure}:3147: testing resulting CC: '$CC' ..." 1>&5 test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6 -echo "${as_me:-configure}:2847: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5 +echo "${as_me:-configure}:3151: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5 test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6 -echo "${as_me:-configure}:2851: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5 +echo "${as_me:-configure}:3155: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5 ;; (*) - echo "$as_me:2855: result: ok" >&5 + echo "$as_me:3159: result: ok" >&5 echo "${ECHO_T}ok" >&6 ;; esac + ;; +esac + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS "conftest.$ac_ext" >&5' ac_link='$CC -o "conftest$ac_exeext" $CFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ext" $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_main_return="return" -echo "$as_me:2866: checking how to run the C preprocessor" >&5 +echo "$as_me:3173: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then @@ -2884,18 +3191,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >"conftest.$ac_ext" <<_ACEOF -#line 2887 "configure" +#line 3194 "configure" #include "confdefs.h" #include <assert.h> Syntax error _ACEOF -if { (eval echo "$as_me:2892: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:3199: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2898: \$? = $ac_status" >&5 + echo "$as_me:3205: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2918,17 +3225,17 @@ rm -f conftest.err "conftest.$ac_ext" # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >"conftest.$ac_ext" <<_ACEOF -#line 2921 "configure" +#line 3228 "configure" #include "confdefs.h" #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:2925: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:3232: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2931: \$? = $ac_status" >&5 + echo "$as_me:3238: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2965,7 +3272,7 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:2968: result: $CPP" >&5 +echo "$as_me:3275: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes @@ -2975,18 +3282,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >"conftest.$ac_ext" <<_ACEOF -#line 2978 "configure" +#line 3285 "configure" #include "confdefs.h" #include <assert.h> Syntax error _ACEOF -if { (eval echo "$as_me:2983: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:3290: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2989: \$? = $ac_status" >&5 + echo "$as_me:3296: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -3009,17 +3316,17 @@ rm -f conftest.err "conftest.$ac_ext" # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >"conftest.$ac_ext" <<_ACEOF -#line 3012 "configure" +#line 3319 "configure" #include "confdefs.h" #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:3016: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:3323: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:3022: \$? = $ac_status" >&5 + echo "$as_me:3329: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -3047,7 +3354,7 @@ rm -f conftest.err "conftest.$ac_ext" if $ac_preproc_ok; then : else - { { echo "$as_me:3050: error: C preprocessor \"$CPP\" fails sanity check" >&5 + { { echo "$as_me:3357: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi @@ -3060,14 +3367,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_main_return="return" if test $ac_cv_c_compiler_gnu = yes; then - echo "$as_me:3063: checking whether $CC needs -traditional" >&5 + echo "$as_me:3370: checking whether $CC needs -traditional" >&5 echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 if test "${ac_cv_prog_gcc_traditional+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_pattern="Autoconf.*'x'" cat >"conftest.$ac_ext" <<_ACEOF -#line 3070 "configure" +#line 3377 "configure" #include "confdefs.h" #include <sgtty.h> int Autoconf = TIOCGETP; @@ -3082,7 +3389,7 @@ rm -rf conftest* if test $ac_cv_prog_gcc_traditional = no; then cat >"conftest.$ac_ext" <<_ACEOF -#line 3085 "configure" +#line 3392 "configure" #include "confdefs.h" #include <termio.h> int Autoconf = TCGETA; @@ -3095,14 +3402,14 @@ rm -rf conftest* fi fi -echo "$as_me:3098: result: $ac_cv_prog_gcc_traditional" >&5 +echo "$as_me:3405: result: $ac_cv_prog_gcc_traditional" >&5 echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi -echo "$as_me:3105: checking whether $CC understands -c and -o together" >&5 +echo "$as_me:3412: checking whether $CC understands -c and -o together" >&5 echo $ECHO_N "checking whether $CC understands -c and -o together... $ECHO_C" >&6 if test "${cf_cv_prog_CC_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3117,15 +3424,15 @@ CF_EOF # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC $CFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -if { (eval echo "$as_me:3120: \"$ac_try\"") >&5 +if { (eval echo "$as_me:3427: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:3123: \$? = $ac_status" >&5 + echo "$as_me:3430: \$? = $ac_status" >&5 (exit "$ac_status"); } && - test -f conftest2.$ac_objext && { (eval echo "$as_me:3125: \"$ac_try\"") >&5 + test -f conftest2.$ac_objext && { (eval echo "$as_me:3432: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:3128: \$? = $ac_status" >&5 + echo "$as_me:3435: \$? = $ac_status" >&5 (exit "$ac_status"); }; then eval cf_cv_prog_CC_c_o=yes @@ -3136,10 +3443,10 @@ rm -rf ./conftest* fi if test "$cf_cv_prog_CC_c_o" = yes; then - echo "$as_me:3139: result: yes" >&5 + echo "$as_me:3446: result: yes" >&5 echo "${ECHO_T}yes" >&6 else - echo "$as_me:3142: result: no" >&5 + echo "$as_me:3449: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -3153,7 +3460,7 @@ else (*) LDPATH=$PATH:/sbin:/usr/sbin # Extract the first word of "ldconfig", so it can be a program name with args. set dummy ldconfig; ac_word=$2 -echo "$as_me:3156: checking for $ac_word" >&5 +echo "$as_me:3463: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_LDCONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3170,7 +3477,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_LDCONFIG="$ac_dir/$ac_word" - echo "$as_me:3173: found $ac_dir/$ac_word" >&5 + echo "$as_me:3480: found $ac_dir/$ac_word" >&5 break fi done @@ -3181,10 +3488,10 @@ fi LDCONFIG=$ac_cv_path_LDCONFIG if test -n "$LDCONFIG"; then - echo "$as_me:3184: result: $LDCONFIG" >&5 + echo "$as_me:3491: result: $LDCONFIG" >&5 echo "${ECHO_T}$LDCONFIG" >&6 else - echo "$as_me:3187: result: no" >&5 + echo "$as_me:3494: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -3192,7 +3499,7 @@ fi esac fi -echo "$as_me:3195: checking if you want to ensure bool is consistent with C++" >&5 +echo "$as_me:3502: checking if you want to ensure bool is consistent with C++" >&5 echo $ECHO_N "checking if you want to ensure bool is consistent with C++... $ECHO_C" >&6 # Check whether --with-cxx or --without-cxx was given. @@ -3202,7 +3509,7 @@ if test "${with_cxx+set}" = set; then else cf_with_cxx=yes fi; -echo "$as_me:3205: result: $cf_with_cxx" >&5 +echo "$as_me:3512: result: $cf_with_cxx" >&5 echo "${ECHO_T}$cf_with_cxx" >&6 if test "X$cf_with_cxx" = Xno ; then CXX="" @@ -3220,7 +3527,7 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:3223: checking for $ac_word" >&5 +echo "$as_me:3530: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3235,7 +3542,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" -echo "$as_me:3238: found $ac_dir/$ac_word" >&5 +echo "$as_me:3545: found $ac_dir/$ac_word" >&5 break done @@ -3243,10 +3550,10 @@ fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - echo "$as_me:3246: result: $CXX" >&5 + echo "$as_me:3553: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else - echo "$as_me:3249: result: no" >&5 + echo "$as_me:3556: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -3259,7 +3566,7 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:3262: checking for $ac_word" >&5 +echo "$as_me:3569: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3274,7 +3581,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CXX="$ac_prog" -echo "$as_me:3277: found $ac_dir/$ac_word" >&5 +echo "$as_me:3584: found $ac_dir/$ac_word" >&5 break done @@ -3282,10 +3589,10 @@ fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - echo "$as_me:3285: result: $ac_ct_CXX" >&5 + echo "$as_me:3592: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else - echo "$as_me:3288: result: no" >&5 + echo "$as_me:3595: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -3297,32 +3604,32 @@ test -n "$ac_ct_CXX" || ac_ct_CXX="g++" fi # Provide some information about the compiler. -echo "$as_me:3300:" \ +echo "$as_me:3607:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:3303: \"$ac_compiler --version </dev/null >&5\"") >&5 +{ (eval echo "$as_me:3610: \"$ac_compiler --version </dev/null >&5\"") >&5 (eval $ac_compiler --version </dev/null >&5) 2>&5 ac_status=$? - echo "$as_me:3306: \$? = $ac_status" >&5 + echo "$as_me:3613: \$? = $ac_status" >&5 (exit "$ac_status"); } -{ (eval echo "$as_me:3308: \"$ac_compiler -v </dev/null >&5\"") >&5 +{ (eval echo "$as_me:3615: \"$ac_compiler -v </dev/null >&5\"") >&5 (eval $ac_compiler -v </dev/null >&5) 2>&5 ac_status=$? - echo "$as_me:3311: \$? = $ac_status" >&5 + echo "$as_me:3618: \$? = $ac_status" >&5 (exit "$ac_status"); } -{ (eval echo "$as_me:3313: \"$ac_compiler -V </dev/null >&5\"") >&5 +{ (eval echo "$as_me:3620: \"$ac_compiler -V </dev/null >&5\"") >&5 (eval $ac_compiler -V </dev/null >&5) 2>&5 ac_status=$? - echo "$as_me:3316: \$? = $ac_status" >&5 + echo "$as_me:3623: \$? = $ac_status" >&5 (exit "$ac_status"); } -echo "$as_me:3319: checking whether we are using the GNU C++ compiler" >&5 +echo "$as_me:3626: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 3325 "configure" +#line 3632 "configure" #include "confdefs.h" int @@ -3337,16 +3644,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:3340: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:3647: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:3343: \$? = $ac_status" >&5 + echo "$as_me:3650: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:3346: \"$ac_try\"") >&5 + { (eval echo "$as_me:3653: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:3349: \$? = $ac_status" >&5 + echo "$as_me:3656: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_compiler_gnu=yes else @@ -3358,19 +3665,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:3361: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "$as_me:3668: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" -echo "$as_me:3367: checking whether $CXX accepts -g" >&5 +echo "$as_me:3674: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 3373 "configure" +#line 3680 "configure" #include "confdefs.h" int @@ -3382,16 +3689,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:3385: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:3692: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:3388: \$? = $ac_status" >&5 + echo "$as_me:3695: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:3391: \"$ac_try\"") >&5 + { (eval echo "$as_me:3698: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:3394: \$? = $ac_status" >&5 + echo "$as_me:3701: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_prog_cxx_g=yes else @@ -3401,7 +3708,7 @@ ac_cv_prog_cxx_g=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:3404: result: $ac_cv_prog_cxx_g" >&5 +echo "$as_me:3711: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS @@ -3428,7 +3735,7 @@ for ac_declaration in \ 'void exit (int);' do cat >"conftest.$ac_ext" <<_ACEOF -#line 3431 "configure" +#line 3738 "configure" #include "confdefs.h" #include <stdlib.h> $ac_declaration @@ -3441,16 +3748,16 @@ exit (42); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:3444: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:3751: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:3447: \$? = $ac_status" >&5 + echo "$as_me:3754: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:3450: \"$ac_try\"") >&5 + { (eval echo "$as_me:3757: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:3453: \$? = $ac_status" >&5 + echo "$as_me:3760: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -3460,7 +3767,7 @@ continue fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" cat >"conftest.$ac_ext" <<_ACEOF -#line 3463 "configure" +#line 3770 "configure" #include "confdefs.h" $ac_declaration int @@ -3472,16 +3779,16 @@ exit (42); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:3475: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:3782: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:3478: \$? = $ac_status" >&5 + echo "$as_me:3785: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:3481: \"$ac_try\"") >&5 + { (eval echo "$as_me:3788: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:3484: \$? = $ac_status" >&5 + echo "$as_me:3791: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -3515,7 +3822,7 @@ ac_main_return="return" then # Several of the C++ configurations do not work, particularly when # cross-compiling (20140913 -TD) - echo "$as_me:3518: checking if $CXX works" >&5 + echo "$as_me:3825: checking if $CXX works" >&5 echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6 save_CPPFLAGS="$CPPFLAGS" @@ -3523,7 +3830,7 @@ echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6 CPPFLAGS="$CPPFLAGS -I${cf_includedir}" cat >"conftest.$ac_ext" <<_ACEOF -#line 3526 "configure" +#line 3833 "configure" #include "confdefs.h" #include <stdlib.h> @@ -3540,16 +3847,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:3543: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:3850: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:3546: \$? = $ac_status" >&5 + echo "$as_me:3853: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:3549: \"$ac_try\"") >&5 + { (eval echo "$as_me:3856: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:3552: \$? = $ac_status" >&5 + echo "$as_me:3859: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cxx_works=yes else @@ -3560,11 +3867,11 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" CPPFLAGS="$save_CPPFLAGS" - echo "$as_me:3563: result: $cf_cxx_works" >&5 + echo "$as_me:3870: result: $cf_cxx_works" >&5 echo "${ECHO_T}$cf_cxx_works" >&6 if test "x$cf_cxx_works" = xno then - { echo "$as_me:3567: WARNING: Ignore $CXX, since it cannot compile hello-world." >&5 + { echo "$as_me:3874: WARNING: Ignore $CXX, since it cannot compile hello-world." >&5 echo "$as_me: WARNING: Ignore $CXX, since it cannot compile hello-world." >&2;} cf_with_cxx=no; CXX=""; GXX=""; fi @@ -3580,7 +3887,7 @@ ac_main_return="return" if test "$CXX" = "g++" ; then # Extract the first word of "g++", so it can be a program name with args. set dummy g++; ac_word=$2 -echo "$as_me:3583: checking for $ac_word" >&5 +echo "$as_me:3890: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3597,7 +3904,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_CXX="$ac_dir/$ac_word" - echo "$as_me:3600: found $ac_dir/$ac_word" >&5 + echo "$as_me:3907: found $ac_dir/$ac_word" >&5 break fi done @@ -3608,17 +3915,17 @@ fi CXX=$ac_cv_path_CXX if test -n "$CXX"; then - echo "$as_me:3611: result: $CXX" >&5 + echo "$as_me:3918: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else - echo "$as_me:3614: result: no" >&5 + echo "$as_me:3921: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi case "x$CXX" in (x|xg++) - { echo "$as_me:3621: WARNING: You don't have any C++ compiler, too bad" >&5 + { echo "$as_me:3928: WARNING: You don't have any C++ compiler, too bad" >&5 echo "$as_me: WARNING: You don't have any C++ compiler, too bad" >&2;} cf_with_cxx=no; CXX=""; GXX=""; ;; @@ -3627,7 +3934,7 @@ fi GXX_VERSION=none if test "$GXX" = yes; then - echo "$as_me:3630: checking version of ${CXX:-g++}" >&5 + echo "$as_me:3937: checking version of ${CXX:-g++}" >&5 echo $ECHO_N "checking version of ${CXX:-g++}... $ECHO_C" >&6 GXX_VERSION="`${CXX:-g++} --version 2>/dev/null | sed -e '2,$d' -e 's/^[^(]*([^)][^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" if test -z "$GXX_VERSION" @@ -3635,7 +3942,7 @@ echo $ECHO_N "checking version of ${CXX:-g++}... $ECHO_C" >&6 GXX_VERSION=unknown GXX=no fi - echo "$as_me:3638: result: $GXX_VERSION" >&5 + echo "$as_me:3945: result: $GXX_VERSION" >&5 echo "${ECHO_T}$GXX_VERSION" >&6 fi @@ -3643,12 +3950,12 @@ case "$GXX_VERSION" in ([1-9][0-9].*) ;; (1.*|2.[0-6]*) - { echo "$as_me:3646: WARNING: templates do not work" >&5 + { echo "$as_me:3953: WARNING: templates do not work" >&5 echo "$as_me: WARNING: templates do not work" >&2;} ;; esac -echo "$as_me:3651: checking if you want to build C++ binding and demo" >&5 +echo "$as_me:3958: checking if you want to build C++ binding and demo" >&5 echo $ECHO_N "checking if you want to build C++ binding and demo... $ECHO_C" >&6 # Check whether --with-cxx-binding or --without-cxx-binding was given. @@ -3658,15 +3965,15 @@ if test "${with_cxx_binding+set}" = set; then else cf_with_cxx_binding=$cf_with_cxx fi; -echo "$as_me:3661: result: $cf_with_cxx_binding" >&5 +echo "$as_me:3968: result: $cf_with_cxx_binding" >&5 echo "${ECHO_T}$cf_with_cxx_binding" >&6 -echo "$as_me:3664: checking if you want to build with Ada" >&5 +echo "$as_me:3971: checking if you want to build with Ada" >&5 echo $ECHO_N "checking if you want to build with Ada... $ECHO_C" >&6 -echo "$as_me:3666: result: $cf_with_ada" >&5 +echo "$as_me:3973: result: $cf_with_ada" >&5 echo "${ECHO_T}$cf_with_ada" >&6 -echo "$as_me:3669: checking if you want to install terminal database" >&5 +echo "$as_me:3976: checking if you want to install terminal database" >&5 echo $ECHO_N "checking if you want to install terminal database... $ECHO_C" >&6 # Check whether --enable-db-install or --disable-db-install was given. @@ -3676,10 +3983,10 @@ if test "${enable_db_install+set}" = set; then else cf_with_db_install=yes fi; -echo "$as_me:3679: result: $cf_with_db_install" >&5 +echo "$as_me:3986: result: $cf_with_db_install" >&5 echo "${ECHO_T}$cf_with_db_install" >&6 -echo "$as_me:3682: checking if you want to install manpages" >&5 +echo "$as_me:3989: checking if you want to install manpages" >&5 echo $ECHO_N "checking if you want to install manpages... $ECHO_C" >&6 # Check whether --with-manpages or --without-manpages was given. @@ -3689,10 +3996,10 @@ if test "${with_manpages+set}" = set; then else cf_with_manpages=yes fi; -echo "$as_me:3692: result: $cf_with_manpages" >&5 +echo "$as_me:3999: result: $cf_with_manpages" >&5 echo "${ECHO_T}$cf_with_manpages" >&6 -echo "$as_me:3695: checking if you want to build programs such as tic" >&5 +echo "$as_me:4002: checking if you want to build programs such as tic" >&5 echo $ECHO_N "checking if you want to build programs such as tic... $ECHO_C" >&6 # Check whether --with-progs or --without-progs was given. @@ -3702,10 +4009,10 @@ if test "${with_progs+set}" = set; then else cf_with_progs=yes fi; -echo "$as_me:3705: result: $cf_with_progs" >&5 +echo "$as_me:4012: result: $cf_with_progs" >&5 echo "${ECHO_T}$cf_with_progs" >&6 -echo "$as_me:3708: checking if you want to build test-programs" >&5 +echo "$as_me:4015: checking if you want to build test-programs" >&5 echo $ECHO_N "checking if you want to build test-programs... $ECHO_C" >&6 # Check whether --with-tests or --without-tests was given. @@ -3715,10 +4022,10 @@ if test "${with_tests+set}" = set; then else cf_with_tests=yes fi; -echo "$as_me:3718: result: $cf_with_tests" >&5 +echo "$as_me:4025: result: $cf_with_tests" >&5 echo "${ECHO_T}$cf_with_tests" >&6 -echo "$as_me:3721: checking if you wish to install curses.h" >&5 +echo "$as_me:4028: checking if you wish to install curses.h" >&5 echo $ECHO_N "checking if you wish to install curses.h... $ECHO_C" >&6 # Check whether --with-curses-h or --without-curses-h was given. @@ -3728,7 +4035,7 @@ if test "${with_curses_h+set}" = set; then else with_curses_h=yes fi; -echo "$as_me:3731: result: $with_curses_h" >&5 +echo "$as_me:4038: result: $with_curses_h" >&5 echo "${ECHO_T}$with_curses_h" >&6 modules_to_build="ncurses" @@ -3752,7 +4059,7 @@ for ac_prog in mawk gawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:3755: checking for $ac_word" >&5 +echo "$as_me:4062: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3767,7 +4074,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_AWK="$ac_prog" -echo "$as_me:3770: found $ac_dir/$ac_word" >&5 +echo "$as_me:4077: found $ac_dir/$ac_word" >&5 break done @@ -3775,20 +4082,31 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - echo "$as_me:3778: result: $AWK" >&5 + echo "$as_me:4085: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else - echo "$as_me:3781: result: no" >&5 + echo "$as_me:4088: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done -test -z "$AWK" && { { echo "$as_me:3788: error: No awk program found" >&5 +test -z "$AWK" && { { echo "$as_me:4095: error: No awk program found" >&5 echo "$as_me: error: No awk program found" >&2;} { (exit 1); exit 1; }; } +case "$cf_cv_system_name" in +(cygwin*|msys*|mingw32*|mingw64|os2*) + GLOB_FULLPATH_POSIX='/*' + GLOB_FULLPATH_OTHER='[a-zA-Z]:[\\/]*' + ;; +(*) + GLOB_FULLPATH_POSIX='/*' + GLOB_FULLPATH_OTHER=$GLOB_FULLPATH_POSIX + ;; +esac + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -3801,7 +4119,7 @@ echo "$as_me: error: No awk program found" >&2;} # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:3804: checking for a BSD compatible install" >&5 +echo "$as_me:4122: checking for a BSD compatible install" >&5 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then @@ -3850,7 +4168,7 @@ fi INSTALL=$ac_install_sh fi fi -echo "$as_me:3853: result: $INSTALL" >&5 +echo "$as_me:4171: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. @@ -3861,8 +4179,17 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -case $INSTALL in -(/*) +if test "x$INSTALL" = "x./install-sh -c"; then + if test -f /usr/sbin/install ; then + case "$host_os" in + (linux*gnu*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) + INSTALL=/usr/sbin/install + ;; + esac + fi +fi +case x$INSTALL in +(x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; (*) cf_dir=`echo "$INSTALL" | sed -e 's%/[^/]*$%%'` @@ -3875,7 +4202,7 @@ for ac_prog in lint cppcheck splint do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:3878: checking for $ac_word" >&5 +echo "$as_me:4205: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_LINT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3890,7 +4217,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_LINT="$ac_prog" -echo "$as_me:3893: found $ac_dir/$ac_word" >&5 +echo "$as_me:4220: found $ac_dir/$ac_word" >&5 break done @@ -3898,10 +4225,10 @@ fi fi LINT=$ac_cv_prog_LINT if test -n "$LINT"; then - echo "$as_me:3901: result: $LINT" >&5 + echo "$as_me:4228: result: $LINT" >&5 echo "${ECHO_T}$LINT" >&6 else - echo "$as_me:3904: result: no" >&5 + echo "$as_me:4231: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -3909,23 +4236,26 @@ fi done case "x$LINT" in +(xlint|x*/lint) # NetBSD 10 + test -z "$LINT_OPTS" && LINT_OPTS="-chapbrxzgFS -v -Ac11" + ;; (xcppcheck|x*/cppcheck) - test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" + test -z "$LINT_OPTS" && LINT_OPTS="--enable=all -D__CPPCHECK__" ;; esac -echo "$as_me:3917: checking whether ln -s works" >&5 +echo "$as_me:4247: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - echo "$as_me:3921: result: yes" >&5 + echo "$as_me:4251: result: yes" >&5 echo "${ECHO_T}yes" >&6 else - echo "$as_me:3924: result: no, using $LN_S" >&5 + echo "$as_me:4254: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi -echo "$as_me:3928: checking if $LN_S -f options work" >&5 +echo "$as_me:4258: checking if $LN_S -f options work" >&5 echo $ECHO_N "checking if $LN_S -f options work... $ECHO_C" >&6 rm -f conf$$.src conf$$dst @@ -3937,12 +4267,12 @@ else cf_prog_ln_sf=no fi rm -f conf$$.dst conf$$src -echo "$as_me:3940: result: $cf_prog_ln_sf" >&5 +echo "$as_me:4270: result: $cf_prog_ln_sf" >&5 echo "${ECHO_T}$cf_prog_ln_sf" >&6 test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f" -echo "$as_me:3945: checking for long file names" >&5 +echo "$as_me:4275: checking for long file names" >&5 echo $ECHO_N "checking for long file names... $ECHO_C" >&6 if test "${ac_cv_sys_long_file_names+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3981,7 +4311,7 @@ for ac_dir in . $ac_tmpdirs `eval echo "$prefix/lib" "$exec_prefix/lib"` ; do rm -rf "$ac_xdir" 2>/dev/null done fi -echo "$as_me:3984: result: $ac_cv_sys_long_file_names" >&5 +echo "$as_me:4314: result: $ac_cv_sys_long_file_names" >&5 echo "${ECHO_T}$ac_cv_sys_long_file_names" >&6 if test "$ac_cv_sys_long_file_names" = yes; then @@ -4000,7 +4330,7 @@ if test "${with_config_suffix+set}" = set; then withval="$with_config_suffix" case "x$withval" in (xyes|xno) - { echo "$as_me:4003: WARNING: expected a value for config-suffix option" >&5 + { echo "$as_me:4333: WARNING: expected a value for config-suffix option" >&5 echo "$as_me: WARNING: expected a value for config-suffix option" >&2;} ;; (*) cf_config_suffix="$withval" @@ -4010,7 +4340,7 @@ fi; # If we find pkg-config, check if we should install the ".pc" files. -echo "$as_me:4013: checking if you want to use pkg-config" >&5 +echo "$as_me:4343: checking if you want to use pkg-config" >&5 echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6 # Check whether --with-pkg-config or --without-pkg-config was given. @@ -4020,7 +4350,7 @@ if test "${with_pkg_config+set}" = set; then else cf_pkg_config=yes fi; -echo "$as_me:4023: result: $cf_pkg_config" >&5 +echo "$as_me:4353: result: $cf_pkg_config" >&5 echo "${ECHO_T}$cf_pkg_config" >&6 case "$cf_pkg_config" in @@ -4032,7 +4362,7 @@ case "$cf_pkg_config" in if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -echo "$as_me:4035: checking for $ac_word" >&5 +echo "$as_me:4365: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4049,7 +4379,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:4052: found $ac_dir/$ac_word" >&5 + echo "$as_me:4382: found $ac_dir/$ac_word" >&5 break fi done @@ -4060,10 +4390,10 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - echo "$as_me:4063: result: $PKG_CONFIG" >&5 + echo "$as_me:4393: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6 else - echo "$as_me:4066: result: no" >&5 + echo "$as_me:4396: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4072,7 +4402,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -echo "$as_me:4075: checking for $ac_word" >&5 +echo "$as_me:4405: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4089,7 +4419,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:4092: found $ac_dir/$ac_word" >&5 + echo "$as_me:4422: found $ac_dir/$ac_word" >&5 break fi done @@ -4101,10 +4431,10 @@ fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then - echo "$as_me:4104: result: $ac_pt_PKG_CONFIG" >&5 + echo "$as_me:4434: result: $ac_pt_PKG_CONFIG" >&5 echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 else - echo "$as_me:4107: result: no" >&5 + echo "$as_me:4437: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4128,43 +4458,41 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$PKG_CONFIG" in -(.\$\(*\)*|.\'*\'*) +case "x$PKG_CONFIG" in +(x\$\(*\)*|x\'*\'*) ;; -(..|./*|.\\*) +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX - ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval PKG_CONFIG="$PKG_CONFIG" - case ".$PKG_CONFIG" in - (.NONE/*) + case "x$PKG_CONFIG" in + (xNONE/*) PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:4150: error: expected a pathname, not \"$PKG_CONFIG\"" >&5 + { { echo "$as_me:4478: error: expected a pathname, not \"$PKG_CONFIG\"" >&5 echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;} { (exit 1); exit 1; }; } ;; esac elif test "x$cf_pkg_config" != xno ; then - { echo "$as_me:4157: WARNING: pkg-config is not installed" >&5 + { echo "$as_me:4485: WARNING: pkg-config is not installed" >&5 echo "$as_me: WARNING: pkg-config is not installed" >&2;} fi case "$PKG_CONFIG" in (no|none|yes) - echo "$as_me:4163: checking for pkg-config library directory" >&5 + echo "$as_me:4491: checking for pkg-config library directory" >&5 echo $ECHO_N "checking for pkg-config library directory... $ECHO_C" >&6 ;; (*) - echo "$as_me:4167: checking for $PKG_CONFIG library directory" >&5 + echo "$as_me:4495: checking for $PKG_CONFIG library directory" >&5 echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6 ;; esac @@ -4191,27 +4519,27 @@ fi; case "x$cf_search_path" in (xlibdir) PKG_CONFIG_LIBDIR='${libdir}/pkgconfig' - echo "$as_me:4194: result: $PKG_CONFIG_LIBDIR" >&5 + echo "$as_me:4522: result: $PKG_CONFIG_LIBDIR" >&5 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6 cf_search_path= ;; (x) ;; -(x/*\ *) +(x$GLOB_FULLPATH_POSIX\ *|x$GLOB_FULLPATH_OTHER\ *) PKG_CONFIG_LIBDIR= ;; -(x/*) +(x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) PKG_CONFIG_LIBDIR="$cf_search_path" - echo "$as_me:4205: result: $PKG_CONFIG_LIBDIR" >&5 + echo "$as_me:4533: result: $PKG_CONFIG_LIBDIR" >&5 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6 cf_search_path= ;; (xyes|xauto) - echo "$as_me:4210: result: auto" >&5 + echo "$as_me:4538: result: auto" >&5 echo "${ECHO_T}auto" >&6 cf_search_path= # Look for the library directory using the same prefix as the executable - echo "$as_me:4214: checking for search-list" >&5 + echo "$as_me:4542: checking for search-list" >&5 echo $ECHO_N "checking for search-list... $ECHO_C" >&6 if test "x$PKG_CONFIG" != xnone then @@ -4222,7 +4550,15 @@ echo $ECHO_N "checking for search-list... $ECHO_C" >&6 pkg-config \ pkgconf do - cf_search_path=`"$PKG_CONFIG" --variable=pc_path "$cf_pkg_program" 2>/dev/null | tr : ' '` + cf_raw_search_path=`"$PKG_CONFIG" --variable=pc_path "$cf_pkg_program" 2>/dev/null` + case "$cf_raw_search_path" in + (*\\*) + cf_search_path=`echo "$cf_raw_search_path" | tr ';' ' ' | tr '\' '/'` + ;; + (*/*) + cf_search_path=`echo "$cf_raw_search_path" | tr : ' '` + ;; + esac test -n "$cf_search_path" && break done @@ -4238,11 +4574,11 @@ echo $ECHO_N "checking for search-list... $ECHO_C" >&6 "` fi - echo "$as_me:4241: result: $cf_search_path" >&5 + echo "$as_me:4577: result: $cf_search_path" >&5 echo "${ECHO_T}$cf_search_path" >&6 ;; (*) - { { echo "$as_me:4245: error: Unexpected option value: $cf_search_path" >&5 + { { echo "$as_me:4581: error: Unexpected option value: $cf_search_path" >&5 echo "$as_me: error: Unexpected option value: $cf_search_path" >&2;} { (exit 1); exit 1; }; } ;; @@ -4250,7 +4586,7 @@ esac if test -n "$cf_search_path" then - echo "$as_me:4253: checking for first directory" >&5 + echo "$as_me:4589: checking for first directory" >&5 echo $ECHO_N "checking for first directory... $ECHO_C" >&6 cf_pkg_config_path=none for cf_config in $cf_search_path @@ -4261,7 +4597,7 @@ echo $ECHO_N "checking for first directory... $ECHO_C" >&6 break fi done - echo "$as_me:4264: result: $cf_pkg_config_path" >&5 + echo "$as_me:4600: result: $cf_pkg_config_path" >&5 echo "${ECHO_T}$cf_pkg_config_path" >&6 if test "x$cf_pkg_config_path" != xnone ; then @@ -4271,7 +4607,7 @@ echo "${ECHO_T}$cf_pkg_config_path" >&6 if test -z "$PKG_CONFIG_LIBDIR" && test -n "$cf_search_path" then - echo "$as_me:4274: checking for workaround" >&5 + echo "$as_me:4610: checking for workaround" >&5 echo $ECHO_N "checking for workaround... $ECHO_C" >&6 if test "$prefix" = "NONE" ; then cf_prefix="$ac_default_prefix" @@ -4294,17 +4630,17 @@ echo $ECHO_N "checking for workaround... $ECHO_C" >&6 esac done test -z "$PKG_CONFIG_LIBDIR" && PKG_CONFIG_LIBDIR=$cf_backup - echo "$as_me:4297: result: $PKG_CONFIG_LIBDIR" >&5 + echo "$as_me:4633: result: $PKG_CONFIG_LIBDIR" >&5 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6 fi fi if test "x$PKG_CONFIG" != xnone then - echo "$as_me:4304: checking if we should install .pc files for $PKG_CONFIG" >&5 + echo "$as_me:4640: checking if we should install .pc files for $PKG_CONFIG" >&5 echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C" >&6 else - echo "$as_me:4307: checking if we should install .pc files" >&5 + echo "$as_me:4643: checking if we should install .pc files" >&5 echo $ECHO_N "checking if we should install .pc files... $ECHO_C" >&6 fi @@ -4315,7 +4651,7 @@ if test "${enable_pc_files+set}" = set; then else enable_pc_files=no fi; -echo "$as_me:4318: result: $enable_pc_files" >&5 +echo "$as_me:4654: result: $enable_pc_files" >&5 echo "${ECHO_T}$enable_pc_files" >&6 if test "x$enable_pc_files" != xno @@ -4323,7 +4659,7 @@ then MAKE_PC_FILES= case "x$PKG_CONFIG_LIBDIR" in (xno|xnone|xyes|x) - { echo "$as_me:4326: WARNING: no PKG_CONFIG_LIBDIR was found" >&5 + { echo "$as_me:4662: WARNING: no PKG_CONFIG_LIBDIR was found" >&5 echo "$as_me: WARNING: no PKG_CONFIG_LIBDIR was found" >&2;} ;; (*) @@ -4335,26 +4671,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$cf_pkg_config_libdir" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$cf_pkg_config_libdir" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval cf_pkg_config_libdir="$cf_pkg_config_libdir" - case ".$cf_pkg_config_libdir" in - (.NONE/*) + case "x$cf_pkg_config_libdir" in + (xNONE/*) cf_pkg_config_libdir=`echo "$cf_pkg_config_libdir" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) cf_pkg_config_libdir=`echo "$cf_pkg_config_libdir" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:4357: error: expected a pathname, not \"$cf_pkg_config_libdir\"" >&5 + { { echo "$as_me:4691: error: expected a pathname, not \"$cf_pkg_config_libdir\"" >&5 echo "$as_me: error: expected a pathname, not \"$cf_pkg_config_libdir\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -4368,7 +4702,7 @@ fi if test -z "$MAKE_PC_FILES" then - echo "$as_me:4371: checking for suffix to add to pkg-config files" >&5 + echo "$as_me:4705: checking for suffix to add to pkg-config files" >&5 echo $ECHO_N "checking for suffix to add to pkg-config files... $ECHO_C" >&6 # Check whether --with-pc-suffix or --without-pc-suffix was given. @@ -4383,13 +4717,13 @@ if test "${with_pc_suffix+set}" = set; then esac fi; test -z "$PC_MODULE_SUFFIX" && PC_MODULE_SUFFIX=none - echo "$as_me:4386: result: $PC_MODULE_SUFFIX" >&5 + echo "$as_me:4720: result: $PC_MODULE_SUFFIX" >&5 echo "${ECHO_T}$PC_MODULE_SUFFIX" >&6 test "$PC_MODULE_SUFFIX" = none && PC_MODULE_SUFFIX= fi -echo "$as_me:4392: checking if we should assume mixed-case filenames" >&5 +echo "$as_me:4726: checking if we should assume mixed-case filenames" >&5 echo $ECHO_N "checking if we should assume mixed-case filenames... $ECHO_C" >&6 # Check whether --enable-mixed-case or --disable-mixed-case was given. @@ -4399,11 +4733,11 @@ if test "${enable_mixed_case+set}" = set; then else enable_mixedcase=auto fi; -echo "$as_me:4402: result: $enable_mixedcase" >&5 +echo "$as_me:4736: result: $enable_mixedcase" >&5 echo "${ECHO_T}$enable_mixedcase" >&6 if test "$enable_mixedcase" = "auto" ; then -echo "$as_me:4406: checking if filesystem supports mixed-case filenames" >&5 +echo "$as_me:4740: checking if filesystem supports mixed-case filenames" >&5 echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6 if test "${cf_cv_mixedcase+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4430,7 +4764,7 @@ else fi fi -echo "$as_me:4433: result: $cf_cv_mixedcase" >&5 +echo "$as_me:4767: result: $cf_cv_mixedcase" >&5 echo "${ECHO_T}$cf_cv_mixedcase" >&6 test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF @@ -4449,7 +4783,7 @@ EOF fi # do this after mixed-case option (tags/TAGS is not as important as tic). -echo "$as_me:4452: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "$as_me:4786: checking whether ${MAKE-make} sets \${MAKE}" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then @@ -4469,16 +4803,16 @@ fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:4472: result: yes" >&5 + echo "$as_me:4806: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else - echo "$as_me:4476: result: no" >&5 + echo "$as_me:4810: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi -echo "$as_me:4481: checking for \".PHONY\" make-support" >&5 +echo "$as_me:4815: checking for \".PHONY\" make-support" >&5 echo $ECHO_N "checking for \".PHONY\" make-support... $ECHO_C" >&6 if test "${cf_cv_make_PHONY+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4533,7 +4867,7 @@ CF_EOF rm -rf conftest* fi -echo "$as_me:4536: result: $cf_cv_make_PHONY" >&5 +echo "$as_me:4870: result: $cf_cv_make_PHONY" >&5 echo "${ECHO_T}$cf_cv_make_PHONY" >&6 MAKE_NO_PHONY="#" MAKE_PHONY="#" @@ -4544,7 +4878,7 @@ for ac_prog in exctags ctags do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:4547: checking for $ac_word" >&5 +echo "$as_me:4881: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CTAGS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4559,7 +4893,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CTAGS="$ac_prog" -echo "$as_me:4562: found $ac_dir/$ac_word" >&5 +echo "$as_me:4896: found $ac_dir/$ac_word" >&5 break done @@ -4567,10 +4901,10 @@ fi fi CTAGS=$ac_cv_prog_CTAGS if test -n "$CTAGS"; then - echo "$as_me:4570: result: $CTAGS" >&5 + echo "$as_me:4904: result: $CTAGS" >&5 echo "${ECHO_T}$CTAGS" >&6 else - echo "$as_me:4573: result: no" >&5 + echo "$as_me:4907: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4581,7 +4915,7 @@ for ac_prog in exetags etags do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:4584: checking for $ac_word" >&5 +echo "$as_me:4918: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ETAGS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4596,7 +4930,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ETAGS="$ac_prog" -echo "$as_me:4599: found $ac_dir/$ac_word" >&5 +echo "$as_me:4933: found $ac_dir/$ac_word" >&5 break done @@ -4604,10 +4938,10 @@ fi fi ETAGS=$ac_cv_prog_ETAGS if test -n "$ETAGS"; then - echo "$as_me:4607: result: $ETAGS" >&5 + echo "$as_me:4941: result: $ETAGS" >&5 echo "${ECHO_T}$ETAGS" >&6 else - echo "$as_me:4610: result: no" >&5 + echo "$as_me:4944: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4616,7 +4950,7 @@ done # Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args. set dummy ${CTAGS:-ctags}; ac_word=$2 -echo "$as_me:4619: checking for $ac_word" >&5 +echo "$as_me:4953: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4631,7 +4965,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_MAKE_LOWER_TAGS="yes" -echo "$as_me:4634: found $ac_dir/$ac_word" >&5 +echo "$as_me:4968: found $ac_dir/$ac_word" >&5 break done @@ -4640,17 +4974,17 @@ fi fi MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS if test -n "$MAKE_LOWER_TAGS"; then - echo "$as_me:4643: result: $MAKE_LOWER_TAGS" >&5 + echo "$as_me:4977: result: $MAKE_LOWER_TAGS" >&5 echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 else - echo "$as_me:4646: result: no" >&5 + echo "$as_me:4980: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$cf_cv_mixedcase" = yes ; then # Extract the first word of "${ETAGS:-etags}", so it can be a program name with args. set dummy ${ETAGS:-etags}; ac_word=$2 -echo "$as_me:4653: checking for $ac_word" >&5 +echo "$as_me:4987: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4665,7 +4999,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_MAKE_UPPER_TAGS="yes" -echo "$as_me:4668: found $ac_dir/$ac_word" >&5 +echo "$as_me:5002: found $ac_dir/$ac_word" >&5 break done @@ -4674,10 +5008,10 @@ fi fi MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS if test -n "$MAKE_UPPER_TAGS"; then - echo "$as_me:4677: result: $MAKE_UPPER_TAGS" >&5 + echo "$as_me:5011: result: $MAKE_UPPER_TAGS" >&5 echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 else - echo "$as_me:4680: result: no" >&5 + echo "$as_me:5014: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4697,51 +5031,10 @@ else MAKE_LOWER_TAGS="#" fi -echo "$as_me:4700: checking for makeflags variable" >&5 -echo $ECHO_N "checking for makeflags variable... $ECHO_C" >&6 -if test "${cf_cv_makeflags+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_cv_makeflags='' - for cf_option in '-${MAKEFLAGS}' '${MFLAGS}' - do - cat >cf_makeflags.tmp <<CF_EOF -SHELL = $SHELL -all : - @ echo '.$cf_option' -CF_EOF - cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | ${FGREP-fgrep} -v "ing directory" | sed -e 's,[ ]*$,,'` - case "$cf_result" in - (.*k|.*kw) - cf_result="`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`" - case "$cf_result" in - (.*CC=*) cf_cv_makeflags= - ;; - (*) cf_cv_makeflags=$cf_option - ;; - esac - break - ;; - (.-) - ;; - (*) - -echo "${as_me:-configure}:4730: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5 - - ;; - esac - done - rm -f cf_makeflags.tmp - -fi -echo "$as_me:4738: result: $cf_cv_makeflags" >&5 -echo "${ECHO_T}$cf_cv_makeflags" >&6 - if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:4744: checking for $ac_word" >&5 +echo "$as_me:5037: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4756,7 +5049,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -echo "$as_me:4759: found $ac_dir/$ac_word" >&5 +echo "$as_me:5052: found $ac_dir/$ac_word" >&5 break done @@ -4764,10 +5057,10 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$as_me:4767: result: $RANLIB" >&5 + echo "$as_me:5060: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else - echo "$as_me:4770: result: no" >&5 + echo "$as_me:5063: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4776,7 +5069,7 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -echo "$as_me:4779: checking for $ac_word" >&5 +echo "$as_me:5072: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4791,7 +5084,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_RANLIB="ranlib" -echo "$as_me:4794: found $ac_dir/$ac_word" >&5 +echo "$as_me:5087: found $ac_dir/$ac_word" >&5 break done @@ -4800,10 +5093,10 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - echo "$as_me:4803: result: $ac_ct_RANLIB" >&5 + echo "$as_me:5096: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else - echo "$as_me:4806: result: no" >&5 + echo "$as_me:5099: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4815,7 +5108,7 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args. set dummy ${ac_tool_prefix}ld; ac_word=$2 -echo "$as_me:4818: checking for $ac_word" >&5 +echo "$as_me:5111: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4830,7 +5123,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_LD="${ac_tool_prefix}ld" -echo "$as_me:4833: found $ac_dir/$ac_word" >&5 +echo "$as_me:5126: found $ac_dir/$ac_word" >&5 break done @@ -4838,10 +5131,10 @@ fi fi LD=$ac_cv_prog_LD if test -n "$LD"; then - echo "$as_me:4841: result: $LD" >&5 + echo "$as_me:5134: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else - echo "$as_me:4844: result: no" >&5 + echo "$as_me:5137: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4850,7 +5143,7 @@ if test -z "$ac_cv_prog_LD"; then ac_ct_LD=$LD # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 -echo "$as_me:4853: checking for $ac_word" >&5 +echo "$as_me:5146: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4865,7 +5158,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_LD="ld" -echo "$as_me:4868: found $ac_dir/$ac_word" >&5 +echo "$as_me:5161: found $ac_dir/$ac_word" >&5 break done @@ -4874,10 +5167,10 @@ fi fi ac_ct_LD=$ac_cv_prog_ac_ct_LD if test -n "$ac_ct_LD"; then - echo "$as_me:4877: result: $ac_ct_LD" >&5 + echo "$as_me:5170: result: $ac_ct_LD" >&5 echo "${ECHO_T}$ac_ct_LD" >&6 else - echo "$as_me:4880: result: no" >&5 + echo "$as_me:5173: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4889,7 +5182,7 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:4892: checking for $ac_word" >&5 +echo "$as_me:5185: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4904,7 +5197,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_AR="${ac_tool_prefix}ar" -echo "$as_me:4907: found $ac_dir/$ac_word" >&5 +echo "$as_me:5200: found $ac_dir/$ac_word" >&5 break done @@ -4912,10 +5205,10 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - echo "$as_me:4915: result: $AR" >&5 + echo "$as_me:5208: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else - echo "$as_me:4918: result: no" >&5 + echo "$as_me:5211: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4924,7 +5217,7 @@ if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -echo "$as_me:4927: checking for $ac_word" >&5 +echo "$as_me:5220: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4939,7 +5232,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_AR="ar" -echo "$as_me:4942: found $ac_dir/$ac_word" >&5 +echo "$as_me:5235: found $ac_dir/$ac_word" >&5 break done @@ -4948,10 +5241,10 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - echo "$as_me:4951: result: $ac_ct_AR" >&5 + echo "$as_me:5244: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else - echo "$as_me:4954: result: no" >&5 + echo "$as_me:5247: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4963,7 +5256,7 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. set dummy ${ac_tool_prefix}nm; ac_word=$2 -echo "$as_me:4966: checking for $ac_word" >&5 +echo "$as_me:5259: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4978,7 +5271,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_NM="${ac_tool_prefix}nm" -echo "$as_me:4981: found $ac_dir/$ac_word" >&5 +echo "$as_me:5274: found $ac_dir/$ac_word" >&5 break done @@ -4986,10 +5279,10 @@ fi fi NM=$ac_cv_prog_NM if test -n "$NM"; then - echo "$as_me:4989: result: $NM" >&5 + echo "$as_me:5282: result: $NM" >&5 echo "${ECHO_T}$NM" >&6 else - echo "$as_me:4992: result: no" >&5 + echo "$as_me:5285: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -4998,7 +5291,7 @@ if test -z "$ac_cv_prog_NM"; then ac_ct_NM=$NM # Extract the first word of "nm", so it can be a program name with args. set dummy nm; ac_word=$2 -echo "$as_me:5001: checking for $ac_word" >&5 +echo "$as_me:5294: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5013,7 +5306,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_NM="nm" -echo "$as_me:5016: found $ac_dir/$ac_word" >&5 +echo "$as_me:5309: found $ac_dir/$ac_word" >&5 break done @@ -5022,10 +5315,10 @@ fi fi ac_ct_NM=$ac_cv_prog_ac_ct_NM if test -n "$ac_ct_NM"; then - echo "$as_me:5025: result: $ac_ct_NM" >&5 + echo "$as_me:5318: result: $ac_ct_NM" >&5 echo "${ECHO_T}$ac_ct_NM" >&6 else - echo "$as_me:5028: result: no" >&5 + echo "$as_me:5321: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5037,7 +5330,7 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:5040: checking for $ac_word" >&5 +echo "$as_me:5333: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5052,7 +5345,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_AR="${ac_tool_prefix}ar" -echo "$as_me:5055: found $ac_dir/$ac_word" >&5 +echo "$as_me:5348: found $ac_dir/$ac_word" >&5 break done @@ -5060,10 +5353,10 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - echo "$as_me:5063: result: $AR" >&5 + echo "$as_me:5356: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else - echo "$as_me:5066: result: no" >&5 + echo "$as_me:5359: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5072,7 +5365,7 @@ if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -echo "$as_me:5075: checking for $ac_word" >&5 +echo "$as_me:5368: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5087,7 +5380,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_AR="ar" -echo "$as_me:5090: found $ac_dir/$ac_word" >&5 +echo "$as_me:5383: found $ac_dir/$ac_word" >&5 break done @@ -5096,10 +5389,10 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - echo "$as_me:5099: result: $ac_ct_AR" >&5 + echo "$as_me:5392: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else - echo "$as_me:5102: result: no" >&5 + echo "$as_me:5395: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5108,7 +5401,7 @@ else AR="$ac_cv_prog_AR" fi -echo "$as_me:5111: checking for options to update archives" >&5 +echo "$as_me:5404: checking for options to update archives" >&5 echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6 if test "${cf_cv_ar_flags+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5145,13 +5438,13 @@ else rm -f conftest.a cat >"conftest.$ac_ext" <<EOF -#line 5148 "configure" +#line 5441 "configure" int testdata[3] = { 123, 456, 789 }; EOF - if { (eval echo "$as_me:5151: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:5444: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:5154: \$? = $ac_status" >&5 + echo "$as_me:5447: \$? = $ac_status" >&5 (exit "$ac_status"); } ; then echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&5 $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&5 1>/dev/null @@ -5162,7 +5455,7 @@ EOF else test -n "$verbose" && echo " cannot compile test-program" 1>&6 -echo "${as_me:-configure}:5165: testing cannot compile test-program ..." 1>&5 +echo "${as_me:-configure}:5458: testing cannot compile test-program ..." 1>&5 break fi @@ -5172,7 +5465,7 @@ echo "${as_me:-configure}:5165: testing cannot compile test-program ..." 1>&5 esac fi -echo "$as_me:5175: result: $cf_cv_ar_flags" >&5 +echo "$as_me:5468: result: $cf_cv_ar_flags" >&5 echo "${ECHO_T}$cf_cv_ar_flags" >&6 if test -n "$ARFLAGS" ; then @@ -5183,7 +5476,7 @@ else ARFLAGS=$cf_cv_ar_flags fi -echo "$as_me:5186: checking for an installation directory prefix" >&5 +echo "$as_me:5479: checking for an installation directory prefix" >&5 echo $ECHO_N "checking for an installation directory prefix... $ECHO_C" >&6 # Check whether --with-install-prefix or --without-install-prefix was given. @@ -5196,9 +5489,38 @@ if test "${with_install_prefix+set}" = set; then ;; esac fi; -echo "$as_me:5199: result: ${DESTDIR:-(none)}" >&5 +echo "$as_me:5492: result: ${DESTDIR:-(none)}" >&5 echo "${ECHO_T}${DESTDIR:-(none)}" >&6 +SET_DESTDIR= +test -n "$DESTDIR" && SET_DESTDIR="DESTDIR=$DESTDIR" + +echo "$as_me:5498: checking if installation directory prefix should be merged" >&5 +echo $ECHO_N "checking if installation directory prefix should be merged... $ECHO_C" >&6 + +# Check whether --enable-install-prefix or --disable-install-prefix was given. +if test "${enable_install_prefix+set}" = set; then + enableval="$enable_install_prefix" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + cf_install_prefix=yes + else + cf_install_prefix=no + fi +else + enableval=no + cf_install_prefix=no + +fi; +echo "$as_me:5515: result: $cf_install_prefix" >&5 +echo "${ECHO_T}$cf_install_prefix" >&6 + +if test "$cf_install_prefix" = yes ; then + MERGE_PREFIX=':$(prefix)%=%' +else + MERGE_PREFIX='' +fi + ############################################################################### # If we're cross-compiling, allow the user to override the tools and their @@ -5231,7 +5553,7 @@ else do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:5234: checking for $ac_word" >&5 +echo "$as_me:5556: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_BUILD_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5246,7 +5568,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_BUILD_CC="$ac_prog" -echo "$as_me:5249: found $ac_dir/$ac_word" >&5 +echo "$as_me:5571: found $ac_dir/$ac_word" >&5 break done @@ -5254,10 +5576,10 @@ fi fi BUILD_CC=$ac_cv_prog_BUILD_CC if test -n "$BUILD_CC"; then - echo "$as_me:5257: result: $BUILD_CC" >&5 + echo "$as_me:5579: result: $BUILD_CC" >&5 echo "${ECHO_T}$BUILD_CC" >&6 else - echo "$as_me:5260: result: no" >&5 + echo "$as_me:5582: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5266,12 +5588,12 @@ done test -n "$BUILD_CC" || BUILD_CC="none" fi; - echo "$as_me:5269: checking for native build C compiler" >&5 + echo "$as_me:5591: checking for native build C compiler" >&5 echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6 - echo "$as_me:5271: result: $BUILD_CC" >&5 + echo "$as_me:5593: result: $BUILD_CC" >&5 echo "${ECHO_T}$BUILD_CC" >&6 - echo "$as_me:5274: checking for native build C preprocessor" >&5 + echo "$as_me:5596: checking for native build C preprocessor" >&5 echo $ECHO_N "checking for native build C preprocessor... $ECHO_C" >&6 # Check whether --with-build-cpp or --without-build-cpp was given. @@ -5281,10 +5603,10 @@ if test "${with_build_cpp+set}" = set; then else BUILD_CPP='${BUILD_CC} -E' fi; - echo "$as_me:5284: result: $BUILD_CPP" >&5 + echo "$as_me:5606: result: $BUILD_CPP" >&5 echo "${ECHO_T}$BUILD_CPP" >&6 - echo "$as_me:5287: checking for native build C flags" >&5 + echo "$as_me:5609: checking for native build C flags" >&5 echo $ECHO_N "checking for native build C flags... $ECHO_C" >&6 # Check whether --with-build-cflags or --without-build-cflags was given. @@ -5292,10 +5614,10 @@ if test "${with_build_cflags+set}" = set; then withval="$with_build_cflags" BUILD_CFLAGS="$withval" fi; - echo "$as_me:5295: result: $BUILD_CFLAGS" >&5 + echo "$as_me:5617: result: $BUILD_CFLAGS" >&5 echo "${ECHO_T}$BUILD_CFLAGS" >&6 - echo "$as_me:5298: checking for native build C preprocessor-flags" >&5 + echo "$as_me:5620: checking for native build C preprocessor-flags" >&5 echo $ECHO_N "checking for native build C preprocessor-flags... $ECHO_C" >&6 # Check whether --with-build-cppflags or --without-build-cppflags was given. @@ -5303,10 +5625,10 @@ if test "${with_build_cppflags+set}" = set; then withval="$with_build_cppflags" BUILD_CPPFLAGS="$withval" fi; - echo "$as_me:5306: result: $BUILD_CPPFLAGS" >&5 + echo "$as_me:5628: result: $BUILD_CPPFLAGS" >&5 echo "${ECHO_T}$BUILD_CPPFLAGS" >&6 - echo "$as_me:5309: checking for native build linker-flags" >&5 + echo "$as_me:5631: checking for native build linker-flags" >&5 echo $ECHO_N "checking for native build linker-flags... $ECHO_C" >&6 # Check whether --with-build-ldflags or --without-build-ldflags was given. @@ -5314,10 +5636,10 @@ if test "${with_build_ldflags+set}" = set; then withval="$with_build_ldflags" BUILD_LDFLAGS="$withval" fi; - echo "$as_me:5317: result: $BUILD_LDFLAGS" >&5 + echo "$as_me:5639: result: $BUILD_LDFLAGS" >&5 echo "${ECHO_T}$BUILD_LDFLAGS" >&6 - echo "$as_me:5320: checking for native build linker-libraries" >&5 + echo "$as_me:5642: checking for native build linker-libraries" >&5 echo $ECHO_N "checking for native build linker-libraries... $ECHO_C" >&6 # Check whether --with-build-libs or --without-build-libs was given. @@ -5325,7 +5647,7 @@ if test "${with_build_libs+set}" = set; then withval="$with_build_libs" BUILD_LIBS="$withval" fi; - echo "$as_me:5328: result: $BUILD_LIBS" >&5 + echo "$as_me:5650: result: $BUILD_LIBS" >&5 echo "${ECHO_T}$BUILD_LIBS" >&6 # this assumes we're on Unix. @@ -5334,7 +5656,7 @@ echo "${ECHO_T}$BUILD_LIBS" >&6 : ${BUILD_CC:='${CC}'} - echo "$as_me:5337: checking if the build-compiler \"$BUILD_CC\" works" >&5 + echo "$as_me:5659: checking if the build-compiler \"$BUILD_CC\" works" >&5 echo $ECHO_N "checking if the build-compiler \"$BUILD_CC\" works... $ECHO_C" >&6 cf_save_crossed=$cross_compiling @@ -5348,25 +5670,25 @@ echo $ECHO_N "checking if the build-compiler \"$BUILD_CC\" works... $ECHO_C" >&6 cf_ok_build_cc=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 5351 "configure" +#line 5673 "configure" #include "confdefs.h" #include <stdio.h> int main(int argc, char *argv[]) { - ${cf_cv_main_return:-return}(argc < 0 || argv == 0 || argv[0] == 0); + ${cf_cv_main_return:-return}(argc < 0 || argv == (void*)0 || argv[0] == (void*)0); } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:5361: \"$ac_link\"") >&5 +if { (eval echo "$as_me:5683: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:5364: \$? = $ac_status" >&5 + echo "$as_me:5686: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:5366: \"$ac_try\"") >&5 + { (eval echo "$as_me:5688: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:5369: \$? = $ac_status" >&5 + echo "$as_me:5691: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_ok_build_cc=yes else @@ -5381,12 +5703,12 @@ fi cross_compiling=$cf_save_crossed ac_link=$cf_save_ac_link - echo "$as_me:5384: result: $cf_ok_build_cc" >&5 + echo "$as_me:5706: result: $cf_ok_build_cc" >&5 echo "${ECHO_T}$cf_ok_build_cc" >&6 if test "$cf_ok_build_cc" != yes then - { { echo "$as_me:5389: error: Cross-build requires two compilers. + { { echo "$as_me:5711: error: Cross-build requires two compilers. Use --with-build-cc to specify the native compiler." >&5 echo "$as_me: error: Cross-build requires two compilers. Use --with-build-cc to specify the native compiler." >&2;} @@ -5411,7 +5733,7 @@ fi ### shared, for example. cf_list_models="" -echo "$as_me:5414: checking if libtool -version-number should be used" >&5 +echo "$as_me:5736: checking if libtool -version-number should be used" >&5 echo $ECHO_N "checking if libtool -version-number should be used... $ECHO_C" >&6 # Check whether --enable-libtool-version or --disable-libtool-version was given. @@ -5428,7 +5750,7 @@ else cf_libtool_version=yes fi; -echo "$as_me:5431: result: $cf_libtool_version" >&5 +echo "$as_me:5753: result: $cf_libtool_version" >&5 echo "${ECHO_T}$cf_libtool_version" >&6 if test "$cf_libtool_version" = yes ; then @@ -5437,25 +5759,25 @@ else LIBTOOL_VERSION="-version-info" case "x$VERSION" in (x) - { echo "$as_me:5440: WARNING: VERSION was not set" >&5 + { echo "$as_me:5762: WARNING: VERSION was not set" >&5 echo "$as_me: WARNING: VERSION was not set" >&2;} ;; (x*.*.*) ABI_VERSION="$VERSION" test -n "$verbose" && echo " ABI_VERSION: $ABI_VERSION" 1>&6 -echo "${as_me:-configure}:5447: testing ABI_VERSION: $ABI_VERSION ..." 1>&5 +echo "${as_me:-configure}:5769: testing ABI_VERSION: $ABI_VERSION ..." 1>&5 ;; (x*:*:*) ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'` test -n "$verbose" && echo " ABI_VERSION: $ABI_VERSION" 1>&6 -echo "${as_me:-configure}:5454: testing ABI_VERSION: $ABI_VERSION ..." 1>&5 +echo "${as_me:-configure}:5776: testing ABI_VERSION: $ABI_VERSION ..." 1>&5 ;; (*) - { echo "$as_me:5458: WARNING: unexpected VERSION value: $VERSION" >&5 + { echo "$as_me:5780: WARNING: unexpected VERSION value: $VERSION" >&5 echo "$as_me: WARNING: unexpected VERSION value: $VERSION" >&2;} ;; esac @@ -5477,7 +5799,7 @@ LIB_LINK='${CC}' LIB_INSTALL= LIB_UNINSTALL= -echo "$as_me:5480: checking if you want to build libraries with libtool" >&5 +echo "$as_me:5802: checking if you want to build libraries with libtool" >&5 echo $ECHO_N "checking if you want to build libraries with libtool... $ECHO_C" >&6 # Check whether --with-libtool or --without-libtool was given. @@ -5487,7 +5809,7 @@ if test "${with_libtool+set}" = set; then else with_libtool=no fi; -echo "$as_me:5490: result: $with_libtool" >&5 +echo "$as_me:5812: result: $with_libtool" >&5 echo "${ECHO_T}$with_libtool" >&6 if test "$with_libtool" != "no"; then @@ -5499,26 +5821,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$with_libtool" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$with_libtool" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval with_libtool="$with_libtool" - case ".$with_libtool" in - (.NONE/*) + case "x$with_libtool" in + (xNONE/*) with_libtool=`echo "$with_libtool" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) with_libtool=`echo "$with_libtool" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:5521: error: expected a pathname, not \"$with_libtool\"" >&5 + { { echo "$as_me:5841: error: expected a pathname, not \"$with_libtool\"" >&5 echo "$as_me: error: expected a pathname, not \"$with_libtool\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -5531,7 +5851,7 @@ esac do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:5534: checking for $ac_word" >&5 +echo "$as_me:5854: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_LIBTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5546,7 +5866,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog" -echo "$as_me:5549: found $ac_dir/$ac_word" >&5 +echo "$as_me:5869: found $ac_dir/$ac_word" >&5 break done @@ -5554,10 +5874,10 @@ fi fi LIBTOOL=$ac_cv_prog_LIBTOOL if test -n "$LIBTOOL"; then - echo "$as_me:5557: result: $LIBTOOL" >&5 + echo "$as_me:5877: result: $LIBTOOL" >&5 echo "${ECHO_T}$LIBTOOL" >&6 else - echo "$as_me:5560: result: no" >&5 + echo "$as_me:5880: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5570,7 +5890,7 @@ if test -z "$LIBTOOL"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:5573: checking for $ac_word" >&5 +echo "$as_me:5893: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5585,7 +5905,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_LIBTOOL="$ac_prog" -echo "$as_me:5588: found $ac_dir/$ac_word" >&5 +echo "$as_me:5908: found $ac_dir/$ac_word" >&5 break done @@ -5593,10 +5913,10 @@ fi fi ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL if test -n "$ac_ct_LIBTOOL"; then - echo "$as_me:5596: result: $ac_ct_LIBTOOL" >&5 + echo "$as_me:5916: result: $ac_ct_LIBTOOL" >&5 echo "${ECHO_T}$ac_ct_LIBTOOL" >&6 else - echo "$as_me:5599: result: no" >&5 + echo "$as_me:5919: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5627,7 +5947,7 @@ unset LIBTOOL do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:5630: checking for $ac_word" >&5 +echo "$as_me:5950: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_LIBTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5642,7 +5962,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog" -echo "$as_me:5645: found $ac_dir/$ac_word" >&5 +echo "$as_me:5965: found $ac_dir/$ac_word" >&5 break done @@ -5650,10 +5970,10 @@ fi fi LIBTOOL=$ac_cv_prog_LIBTOOL if test -n "$LIBTOOL"; then - echo "$as_me:5653: result: $LIBTOOL" >&5 + echo "$as_me:5973: result: $LIBTOOL" >&5 echo "${ECHO_T}$LIBTOOL" >&6 else - echo "$as_me:5656: result: no" >&5 + echo "$as_me:5976: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5666,7 +5986,7 @@ if test -z "$LIBTOOL"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:5669: checking for $ac_word" >&5 +echo "$as_me:5989: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5681,7 +6001,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_LIBTOOL="$ac_prog" -echo "$as_me:5684: found $ac_dir/$ac_word" >&5 +echo "$as_me:6004: found $ac_dir/$ac_word" >&5 break done @@ -5689,10 +6009,10 @@ fi fi ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL if test -n "$ac_ct_LIBTOOL"; then - echo "$as_me:5692: result: $ac_ct_LIBTOOL" >&5 + echo "$as_me:6012: result: $ac_ct_LIBTOOL" >&5 echo "${ECHO_T}$ac_ct_LIBTOOL" >&6 else - echo "$as_me:5695: result: no" >&5 + echo "$as_me:6015: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -5714,12 +6034,12 @@ test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version fi fi if test -z "$LIBTOOL" ; then - { { echo "$as_me:5717: error: Cannot find libtool" >&5 + { { echo "$as_me:6037: error: Cannot find libtool" >&5 echo "$as_me: error: Cannot find libtool" >&2;} { (exit 1); exit 1; }; } fi LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o' - LIB_OBJECT='${OBJECTS:.o=.lo}' + LIB_OBJECT='${OBJECTS:.${OBJEXT}=.lo}' LIB_SUFFIX=.la LIB_CLEAN='${LIBTOOL} --mode=clean' LIB_COMPILE='${LIBTOOL} --mode=compile' @@ -5730,7 +6050,7 @@ echo "$as_me: error: Cannot find libtool" >&2;} if test -n "$LIBTOOL" && test "$LIBTOOL" != none then - echo "$as_me:5733: checking version of $LIBTOOL" >&5 + echo "$as_me:6053: checking version of $LIBTOOL" >&5 echo $ECHO_N "checking version of $LIBTOOL... $ECHO_C" >&6 if test -n "$LIBTOOL" && test "$LIBTOOL" != none @@ -5741,8 +6061,9 @@ else fi test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version - echo "$as_me:5744: result: $cf_cv_libtool_version" >&5 + echo "$as_me:6064: result: $cf_cv_libtool_version" >&5 echo "${ECHO_T}$cf_cv_libtool_version" >&6 + if test -n "$cf_cv_libtool_version" then cf_check_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' -e 's,[()],...,g' -e 's,[ ],-,g' -e '2,$d'` @@ -5750,18 +6071,19 @@ echo "${ECHO_T}$cf_cv_libtool_version" >&6 (*...GNU-libtool...*) ;; (*) - { { echo "$as_me:5753: error: This is not GNU libtool" >&5 + { { echo "$as_me:6074: error: This is not GNU libtool" >&5 echo "$as_me: error: This is not GNU libtool" >&2;} { (exit 1); exit 1; }; } ;; esac else - { { echo "$as_me:5759: error: No version found for $LIBTOOL" >&5 + { { echo "$as_me:6080: error: No version found for $LIBTOOL" >&5 echo "$as_me: error: No version found for $LIBTOOL" >&2;} { (exit 1); exit 1; }; } fi + else - { { echo "$as_me:5764: error: GNU libtool has not been found" >&5 + { { echo "$as_me:6086: error: GNU libtool has not been found" >&5 echo "$as_me: error: GNU libtool has not been found" >&2;} { (exit 1); exit 1; }; } fi @@ -5797,7 +6119,7 @@ cf_list_models="$cf_list_models libtool" else -echo "$as_me:5800: checking if you want to build shared libraries" >&5 +echo "$as_me:6122: checking if you want to build shared libraries" >&5 echo $ECHO_N "checking if you want to build shared libraries... $ECHO_C" >&6 # Check whether --with-shared or --without-shared was given. @@ -5807,11 +6129,11 @@ if test "${with_shared+set}" = set; then else with_shared=no fi; -echo "$as_me:5810: result: $with_shared" >&5 +echo "$as_me:6132: result: $with_shared" >&5 echo "${ECHO_T}$with_shared" >&6 test "x$with_shared" = "xyes" && cf_list_models="$cf_list_models shared" -echo "$as_me:5814: checking if you want to build static libraries" >&5 +echo "$as_me:6136: checking if you want to build static libraries" >&5 echo $ECHO_N "checking if you want to build static libraries... $ECHO_C" >&6 # Check whether --with-normal or --without-normal was given. @@ -5821,11 +6143,11 @@ if test "${with_normal+set}" = set; then else with_normal=yes fi; -echo "$as_me:5824: result: $with_normal" >&5 +echo "$as_me:6146: result: $with_normal" >&5 echo "${ECHO_T}$with_normal" >&6 test "x$with_normal" = "xyes" && cf_list_models="$cf_list_models normal" -echo "$as_me:5828: checking if you want to build debug libraries" >&5 +echo "$as_me:6150: checking if you want to build debug libraries" >&5 echo $ECHO_N "checking if you want to build debug libraries... $ECHO_C" >&6 # Check whether --with-debug or --without-debug was given. @@ -5835,11 +6157,11 @@ if test "${with_debug+set}" = set; then else with_debug=yes fi; -echo "$as_me:5838: result: $with_debug" >&5 +echo "$as_me:6160: result: $with_debug" >&5 echo "${ECHO_T}$with_debug" >&6 test "x$with_debug" = "xyes" && cf_list_models="$cf_list_models debug" -echo "$as_me:5842: checking if you want to build profiling libraries" >&5 +echo "$as_me:6164: checking if you want to build profiling libraries" >&5 echo $ECHO_N "checking if you want to build profiling libraries... $ECHO_C" >&6 # Check whether --with-profile or --without-profile was given. @@ -5849,7 +6171,7 @@ if test "${with_profile+set}" = set; then else with_profile=no fi; -echo "$as_me:5852: result: $with_profile" >&5 +echo "$as_me:6174: result: $with_profile" >&5 echo "${ECHO_T}$with_profile" >&6 test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile" @@ -5857,7 +6179,7 @@ fi if test "X$cf_with_cxx_binding" != Xno; then if test "x$with_shared" = "xyes"; then -echo "$as_me:5860: checking if you want to build C++ shared libraries" >&5 +echo "$as_me:6182: checking if you want to build C++ shared libraries" >&5 echo $ECHO_N "checking if you want to build C++ shared libraries... $ECHO_C" >&6 # Check whether --with-cxx-shared or --without-cxx-shared was given. @@ -5867,26 +6189,26 @@ if test "${with_cxx_shared+set}" = set; then else with_shared_cxx=no fi; -echo "$as_me:5870: result: $with_shared_cxx" >&5 +echo "$as_me:6192: result: $with_shared_cxx" >&5 echo "${ECHO_T}$with_shared_cxx" >&6 fi fi ############################################################################### -echo "$as_me:5877: checking for specified models" >&5 +echo "$as_me:6199: checking for specified models" >&5 echo $ECHO_N "checking for specified models... $ECHO_C" >&6 test -z "$cf_list_models" && cf_list_models=normal test "$with_libtool" != "no" && cf_list_models=libtool -echo "$as_me:5881: result: $cf_list_models" >&5 +echo "$as_me:6203: result: $cf_list_models" >&5 echo "${ECHO_T}$cf_list_models" >&6 ### Use the first model as the default, and save its suffix for use in building ### up test-applications. -echo "$as_me:5886: checking for default model" >&5 +echo "$as_me:6208: checking for default model" >&5 echo $ECHO_N "checking for default model... $ECHO_C" >&6 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'` -echo "$as_me:5889: result: $DFT_LWR_MODEL" >&5 +echo "$as_me:6211: result: $DFT_LWR_MODEL" >&5 echo "${ECHO_T}$DFT_LWR_MODEL" >&6 DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` @@ -5900,7 +6222,7 @@ LIB_NAME=ncurses LIB_DIR=../lib LIB_2ND=../../lib -echo "$as_me:5903: checking if you want to have a library-prefix" >&5 +echo "$as_me:6225: checking if you want to have a library-prefix" >&5 echo $ECHO_N "checking if you want to have a library-prefix... $ECHO_C" >&6 # Check whether --with-lib-prefix or --without-lib-prefix was given. @@ -5910,7 +6232,7 @@ if test "${with_lib_prefix+set}" = set; then else with_lib_prefix=auto fi; -echo "$as_me:5913: result: $with_lib_prefix" >&5 +echo "$as_me:6235: result: $with_lib_prefix" >&5 echo "${ECHO_T}$with_lib_prefix" >&6 if test "$with_lib_prefix" = auto @@ -5941,24 +6263,24 @@ fi LIB_SUFFIX= - echo "$as_me:5944: checking for PATH separator" >&5 + echo "$as_me:6266: checking for PATH separator" >&5 echo $ECHO_N "checking for PATH separator... $ECHO_C" >&6 case "$cf_cv_system_name" in (os2*) PATH_SEPARATOR=';' ;; (*) ${PATH_SEPARATOR:=':'} ;; esac - echo "$as_me:5951: result: $PATH_SEPARATOR" >&5 + echo "$as_me:6273: result: $PATH_SEPARATOR" >&5 echo "${ECHO_T}$PATH_SEPARATOR" >&6 # headers needed for checks... -echo "$as_me:5955: checking for ANSI C header files" >&5 +echo "$as_me:6277: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 5961 "configure" +#line 6283 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -5966,13 +6288,13 @@ else #include <float.h> _ACEOF -if { (eval echo "$as_me:5969: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:6291: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:5975: \$? = $ac_status" >&5 + echo "$as_me:6297: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -5994,7 +6316,7 @@ rm -f conftest.err "conftest.$ac_ext" if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >"conftest.$ac_ext" <<_ACEOF -#line 5997 "configure" +#line 6319 "configure" #include "confdefs.h" #include <string.h> @@ -6012,7 +6334,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >"conftest.$ac_ext" <<_ACEOF -#line 6015 "configure" +#line 6337 "configure" #include "confdefs.h" #include <stdlib.h> @@ -6033,7 +6355,7 @@ if test $ac_cv_header_stdc = yes; then : else cat >"conftest.$ac_ext" <<_ACEOF -#line 6036 "configure" +#line 6358 "configure" #include "confdefs.h" #include <ctype.h> #if ((' ' & 0x0FF) == 0x020) @@ -6059,15 +6381,15 @@ main (void) } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:6062: \"$ac_link\"") >&5 +if { (eval echo "$as_me:6384: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:6065: \$? = $ac_status" >&5 + echo "$as_me:6387: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:6067: \"$ac_try\"") >&5 + { (eval echo "$as_me:6389: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6070: \$? = $ac_status" >&5 + echo "$as_me:6392: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -6080,7 +6402,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes fi fi fi -echo "$as_me:6083: result: $ac_cv_header_stdc" >&5 +echo "$as_me:6405: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then @@ -6096,28 +6418,28 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:6099: checking for $ac_header" >&5 +echo "$as_me:6421: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 6105 "configure" +#line 6427 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:6111: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:6433: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:6114: \$? = $ac_status" >&5 + echo "$as_me:6436: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:6117: \"$ac_try\"") >&5 + { (eval echo "$as_me:6439: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6120: \$? = $ac_status" >&5 + echo "$as_me:6442: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_Header=yes" else @@ -6127,7 +6449,7 @@ eval "$as_ac_Header=no" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:6130: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:6452: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -6137,13 +6459,13 @@ EOF fi done -echo "$as_me:6140: checking whether exit is declared" >&5 +echo "$as_me:6462: checking whether exit is declared" >&5 echo $ECHO_N "checking whether exit is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_exit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 6146 "configure" +#line 6468 "configure" #include "confdefs.h" $ac_includes_default int @@ -6158,16 +6480,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:6161: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:6483: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:6164: \$? = $ac_status" >&5 + echo "$as_me:6486: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:6167: \"$ac_try\"") >&5 + { (eval echo "$as_me:6489: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6170: \$? = $ac_status" >&5 + echo "$as_me:6492: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_have_decl_exit=yes else @@ -6177,19 +6499,19 @@ ac_cv_have_decl_exit=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:6180: result: $ac_cv_have_decl_exit" >&5 +echo "$as_me:6502: result: $ac_cv_have_decl_exit" >&5 echo "${ECHO_T}$ac_cv_have_decl_exit" >&6 ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -echo "$as_me:6186: checking for $ac_hdr that defines DIR" >&5 +echo "$as_me:6508: checking for $ac_hdr that defines DIR" >&5 echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 6192 "configure" +#line 6514 "configure" #include "confdefs.h" #include <sys/types.h> #include <$ac_hdr> @@ -6204,16 +6526,16 @@ return 0; } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:6207: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:6529: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:6210: \$? = $ac_status" >&5 + echo "$as_me:6532: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:6213: \"$ac_try\"") >&5 + { (eval echo "$as_me:6535: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6216: \$? = $ac_status" >&5 + echo "$as_me:6538: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_Header=yes" else @@ -6223,7 +6545,7 @@ eval "$as_ac_Header=no" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:6226: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:6548: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -6236,7 +6558,7 @@ fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - echo "$as_me:6239: checking for opendir in -ldir" >&5 + echo "$as_me:6561: checking for opendir in -ldir" >&5 echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6 if test "${ac_cv_lib_dir_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -6244,7 +6566,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldir $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 6247 "configure" +#line 6569 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -6263,16 +6585,16 @@ opendir (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:6266: \"$ac_link\"") >&5 +if { (eval echo "$as_me:6588: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:6269: \$? = $ac_status" >&5 + echo "$as_me:6591: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:6272: \"$ac_try\"") >&5 + { (eval echo "$as_me:6594: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6275: \$? = $ac_status" >&5 + echo "$as_me:6597: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_dir_opendir=yes else @@ -6283,14 +6605,14 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:6286: result: $ac_cv_lib_dir_opendir" >&5 +echo "$as_me:6608: result: $ac_cv_lib_dir_opendir" >&5 echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6 if test "$ac_cv_lib_dir_opendir" = yes; then LIBS="$LIBS -ldir" fi else - echo "$as_me:6293: checking for opendir in -lx" >&5 + echo "$as_me:6615: checking for opendir in -lx" >&5 echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6 if test "${ac_cv_lib_x_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -6298,7 +6620,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lx $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 6301 "configure" +#line 6623 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -6317,16 +6639,16 @@ opendir (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:6320: \"$ac_link\"") >&5 +if { (eval echo "$as_me:6642: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:6323: \$? = $ac_status" >&5 + echo "$as_me:6645: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:6326: \"$ac_try\"") >&5 + { (eval echo "$as_me:6648: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6329: \$? = $ac_status" >&5 + echo "$as_me:6651: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_x_opendir=yes else @@ -6337,7 +6659,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:6340: result: $ac_cv_lib_x_opendir" >&5 +echo "$as_me:6662: result: $ac_cv_lib_x_opendir" >&5 echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6 if test "$ac_cv_lib_x_opendir" = yes; then LIBS="$LIBS -lx" @@ -6347,7 +6669,7 @@ fi ############################################################################### -echo "$as_me:6350: checking if you want to build a separate terminfo library" >&5 +echo "$as_me:6672: checking if you want to build a separate terminfo library" >&5 echo $ECHO_N "checking if you want to build a separate terminfo library... $ECHO_C" >&6 # Check whether --with-termlib or --without-termlib was given. @@ -6357,10 +6679,10 @@ if test "${with_termlib+set}" = set; then else with_termlib=no fi; -echo "$as_me:6360: result: $with_termlib" >&5 +echo "$as_me:6682: result: $with_termlib" >&5 echo "${ECHO_T}$with_termlib" >&6 -echo "$as_me:6363: checking if you want to build a separate tic library" >&5 +echo "$as_me:6685: checking if you want to build a separate tic library" >&5 echo $ECHO_N "checking if you want to build a separate tic library... $ECHO_C" >&6 # Check whether --with-ticlib or --without-ticlib was given. @@ -6370,7 +6692,7 @@ if test "${with_ticlib+set}" = set; then else with_ticlib=no fi; -echo "$as_me:6373: result: $with_ticlib" >&5 +echo "$as_me:6695: result: $with_ticlib" >&5 echo "${ECHO_T}$with_ticlib" >&6 if test X"$CC_G_OPT" = X"" ; then @@ -6383,7 +6705,7 @@ if test X"$CXX_G_OPT" = X"" ; then test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT='' fi -echo "$as_me:6386: checking for default loader flags" >&5 +echo "$as_me:6708: checking for default loader flags" >&5 echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6 case "$DFT_LWR_MODEL" in (libtool) LD_MODEL='' ;; @@ -6392,13 +6714,13 @@ case "$DFT_LWR_MODEL" in (profile) LD_MODEL='-pg';; (shared) LD_MODEL='' ;; esac -echo "$as_me:6395: result: ${LD_MODEL:-(none)}" >&5 +echo "$as_me:6717: result: ${LD_MODEL:-(none)}" >&5 echo "${ECHO_T}${LD_MODEL:-(none)}" >&6 case "$DFT_LWR_MODEL" in (shared) -echo "$as_me:6401: checking if rpath option should be used" >&5 +echo "$as_me:6723: checking if rpath option should be used" >&5 echo $ECHO_N "checking if rpath option should be used... $ECHO_C" >&6 # Check whether --enable-rpath or --disable-rpath was given. @@ -6408,10 +6730,10 @@ if test "${enable_rpath+set}" = set; then else cf_cv_enable_rpath=no fi; -echo "$as_me:6411: result: $cf_cv_enable_rpath" >&5 +echo "$as_me:6733: result: $cf_cv_enable_rpath" >&5 echo "${ECHO_T}$cf_cv_enable_rpath" >&6 -echo "$as_me:6414: checking if shared libraries should be relinked during install" >&5 +echo "$as_me:6736: checking if shared libraries should be relinked during install" >&5 echo $ECHO_N "checking if shared libraries should be relinked during install... $ECHO_C" >&6 # Check whether --enable-relink or --disable-relink was given. @@ -6421,7 +6743,7 @@ if test "${enable_relink+set}" = set; then else cf_cv_do_relink=yes fi; -echo "$as_me:6424: result: $cf_cv_do_relink" >&5 +echo "$as_me:6746: result: $cf_cv_do_relink" >&5 echo "${ECHO_T}$cf_cv_do_relink" >&6 ;; esac @@ -6432,7 +6754,7 @@ rel_builddir=.. LD_RPATH_OPT= if test "x$cf_cv_enable_rpath" != xno then - echo "$as_me:6435: checking for an rpath option" >&5 + echo "$as_me:6757: checking for an rpath option" >&5 echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 case "$cf_cv_system_name" in (irix*) @@ -6463,12 +6785,12 @@ echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 (*) ;; esac - echo "$as_me:6466: result: $LD_RPATH_OPT" >&5 + echo "$as_me:6788: result: $LD_RPATH_OPT" >&5 echo "${ECHO_T}$LD_RPATH_OPT" >&6 case "x$LD_RPATH_OPT" in (x-R*) - echo "$as_me:6471: checking if we need a space after rpath option" >&5 + echo "$as_me:6793: checking if we need a space after rpath option" >&5 echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6 cf_save_LIBS="$LIBS" @@ -6489,7 +6811,7 @@ done LIBS="$cf_add_libs" cat >"conftest.$ac_ext" <<_ACEOF -#line 6492 "configure" +#line 6814 "configure" #include "confdefs.h" int @@ -6501,16 +6823,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:6504: \"$ac_link\"") >&5 +if { (eval echo "$as_me:6826: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:6507: \$? = $ac_status" >&5 + echo "$as_me:6829: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:6510: \"$ac_try\"") >&5 + { (eval echo "$as_me:6832: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6513: \$? = $ac_status" >&5 + echo "$as_me:6835: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_rpath_space=no else @@ -6520,7 +6842,7 @@ cf_rpath_space=yes fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS="$cf_save_LIBS" - echo "$as_me:6523: result: $cf_rpath_space" >&5 + echo "$as_me:6845: result: $cf_rpath_space" >&5 echo "${ECHO_T}$cf_rpath_space" >&6 test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " ;; @@ -6542,7 +6864,7 @@ fi cf_ld_rpath_opt= test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" - echo "$as_me:6545: checking whether to use release or ABI version in shared library file names" >&5 + echo "$as_me:6867: checking whether to use release or ABI version in shared library file names" >&5 echo $ECHO_N "checking whether to use release or ABI version in shared library file names... $ECHO_C" >&6 # Check whether --with-shlib-version or --without-shlib-version was given. @@ -6557,9 +6879,9 @@ if test "${with_shlib_version+set}" = set; then cf_cv_shlib_version=$withval ;; (*) - echo "$as_me:6560: result: $withval" >&5 + echo "$as_me:6882: result: $withval" >&5 echo "${ECHO_T}$withval" >&6 - { { echo "$as_me:6562: error: option value must be one of: rel, abi, or auto" >&5 + { { echo "$as_me:6884: error: option value must be one of: rel, abi, or auto" >&5 echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;} { (exit 1); exit 1; }; } ;; @@ -6568,7 +6890,7 @@ echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;} else cf_cv_shlib_version=auto fi; - echo "$as_me:6571: result: $cf_cv_shlib_version" >&5 + echo "$as_me:6893: result: $cf_cv_shlib_version" >&5 echo "${ECHO_T}$cf_cv_shlib_version" >&6 cf_cv_rm_so_locs=no @@ -6591,14 +6913,14 @@ echo "${ECHO_T}$cf_cv_shlib_version" >&6 if test "$cf_try_fPIC" = yes then - echo "$as_me:6594: checking which $CC option to use" >&5 + echo "$as_me:6916: checking which $CC option to use" >&5 echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6 cf_save_CFLAGS="$CFLAGS" for CC_SHARED_OPTS in -fPIC -fpic '' do CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" cat >"conftest.$ac_ext" <<_ACEOF -#line 6601 "configure" +#line 6923 "configure" #include "confdefs.h" #include <stdio.h> int @@ -6610,16 +6932,16 @@ int x = 1; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:6613: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:6935: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:6616: \$? = $ac_status" >&5 + echo "$as_me:6938: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:6619: \"$ac_try\"") >&5 + { (eval echo "$as_me:6941: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6622: \$? = $ac_status" >&5 + echo "$as_me:6944: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -6628,7 +6950,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" done - echo "$as_me:6631: result: $CC_SHARED_OPTS" >&5 + echo "$as_me:6953: result: $CC_SHARED_OPTS" >&5 echo "${ECHO_T}$CC_SHARED_OPTS" >&6 CFLAGS="$cf_save_CFLAGS" fi @@ -6699,7 +7021,7 @@ CF_EOF MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@' test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi cf_cv_shlib_version_infix=yes - echo "$as_me:6702: checking if ld -search_paths_first works" >&5 + echo "$as_me:7024: checking if ld -search_paths_first works" >&5 echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6 if test "${cf_cv_ldflags_search_paths_first+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -6708,7 +7030,7 @@ else cf_save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" cat >"conftest.$ac_ext" <<_ACEOF -#line 6711 "configure" +#line 7033 "configure" #include "confdefs.h" int @@ -6720,16 +7042,16 @@ int i; } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:6723: \"$ac_link\"") >&5 +if { (eval echo "$as_me:7045: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:6726: \$? = $ac_status" >&5 + echo "$as_me:7048: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:6729: \"$ac_try\"") >&5 + { (eval echo "$as_me:7051: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:6732: \$? = $ac_status" >&5 + echo "$as_me:7054: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_ldflags_search_paths_first=yes else @@ -6740,7 +7062,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LDFLAGS=$cf_save_LDFLAGS fi -echo "$as_me:6743: result: $cf_cv_ldflags_search_paths_first" >&5 +echo "$as_me:7065: result: $cf_cv_ldflags_search_paths_first" >&5 echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6 if test "$cf_cv_ldflags_search_paths_first" = yes; then LDFLAGS="$LDFLAGS -Wl,-search_paths_first" @@ -6884,7 +7206,7 @@ CF_EOF -L*) ldopts+=("\`echo \"\$1\" | sed \"s/^-L/-LIBPATH:/\"\`") ;; - *.obj | *.o) + *.obj | *.$OBJEXT) ldopts+=("\$1") ;; -Wl,*) @@ -7090,7 +7412,7 @@ CF_EOF do CFLAGS="$cf_shared_opts $cf_save_CFLAGS" cat >"conftest.$ac_ext" <<_ACEOF -#line 7093 "configure" +#line 7415 "configure" #include "confdefs.h" #include <stdio.h> int @@ -7102,16 +7424,16 @@ printf("Hello\\n"); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:7105: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:7427: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:7108: \$? = $ac_status" >&5 + echo "$as_me:7430: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:7111: \"$ac_try\"") >&5 + { (eval echo "$as_me:7433: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:7114: \$? = $ac_status" >&5 + echo "$as_me:7436: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -7148,7 +7470,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes ;; (*) - { echo "$as_me:7151: WARNING: ignored --with-shlib-version" >&5 + { echo "$as_me:7473: WARNING: ignored --with-shlib-version" >&5 echo "$as_me: WARNING: ignored --with-shlib-version" >&2;} ;; esac @@ -7158,30 +7480,30 @@ echo "$as_me: WARNING: ignored --with-shlib-version" >&2;} if test -n "$cf_try_cflags" then cat > conftest.$ac_ext <<EOF -#line 7161 "${as_me:-configure}" +#line 7483 "${as_me:-configure}" #include <stdio.h> int main(int argc, char *argv[]) { printf("hello\\n"); - return (argv[argc-1] == 0) ; + return (argv[argc-1] == NULL) ; } EOF cf_save_CFLAGS="$CFLAGS" for cf_opt in $cf_try_cflags do CFLAGS="$cf_save_CFLAGS -$cf_opt" - echo "$as_me:7173: checking if CFLAGS option -$cf_opt works" >&5 + echo "$as_me:7495: checking if CFLAGS option -$cf_opt works" >&5 echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6 - if { (eval echo "$as_me:7175: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:7497: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:7178: \$? = $ac_status" >&5 + echo "$as_me:7500: \$? = $ac_status" >&5 (exit "$ac_status"); }; then - echo "$as_me:7180: result: yes" >&5 + echo "$as_me:7502: result: yes" >&5 echo "${ECHO_T}yes" >&6 cf_save_CFLAGS="$CFLAGS" else - echo "$as_me:7184: result: no" >&5 + echo "$as_me:7506: result: no" >&5 echo "${ECHO_T}no" >&6 fi done @@ -7196,17 +7518,17 @@ echo "${ECHO_T}no" >&6 test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6 -echo "${as_me:-configure}:7199: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5 +echo "${as_me:-configure}:7521: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5 test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6 -echo "${as_me:-configure}:7203: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 +echo "${as_me:-configure}:7525: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 for model in $cf_list_models ; do case "$model" in (libtool) -echo "$as_me:7209: checking for additional libtool options" >&5 +echo "$as_me:7531: checking for additional libtool options" >&5 echo $ECHO_N "checking for additional libtool options... $ECHO_C" >&6 # Check whether --with-libtool-opts or --without-libtool-opts was given. @@ -7216,7 +7538,7 @@ if test "${with_libtool_opts+set}" = set; then else with_libtool_opts=no fi; -echo "$as_me:7219: result: $with_libtool_opts" >&5 +echo "$as_me:7541: result: $with_libtool_opts" >&5 echo "${ECHO_T}$with_libtool_opts" >&6 case .$with_libtool_opts in @@ -7227,7 +7549,7 @@ case .$with_libtool_opts in ;; esac -echo "$as_me:7230: checking if exported-symbols file should be used" >&5 +echo "$as_me:7552: checking if exported-symbols file should be used" >&5 echo $ECHO_N "checking if exported-symbols file should be used... $ECHO_C" >&6 # Check whether --with-export-syms or --without-export-syms was given. @@ -7242,7 +7564,7 @@ then with_export_syms='${top_srcdir}/package/${PACKAGE}.sym' fi -echo "$as_me:7245: result: $with_export_syms" >&5 +echo "$as_me:7567: result: $with_export_syms" >&5 echo "${ECHO_T}$with_export_syms" >&6 if test "x$with_export_syms" != xno then @@ -7253,15 +7575,15 @@ fi ;; (shared) if test "$CC_SHARED_OPTS" = "unknown"; then - { { echo "$as_me:7256: error: Shared libraries are not supported in this version" >&5 + { { echo "$as_me:7578: error: Shared libraries are not supported in this version" >&5 echo "$as_me: error: Shared libraries are not supported in this version" >&2;} { (exit 1); exit 1; }; } fi # workaround for inept transition to PIE vs PIC... - echo "$as_me:7261: checking if current CFLAGS link properly" >&5 + echo "$as_me:7583: checking if current CFLAGS link properly" >&5 echo $ECHO_N "checking if current CFLAGS link properly... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 7264 "configure" +#line 7586 "configure" #include "confdefs.h" #include <stdio.h> int @@ -7273,16 +7595,16 @@ printf("Hello work\\n"); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:7276: \"$ac_link\"") >&5 +if { (eval echo "$as_me:7598: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:7279: \$? = $ac_status" >&5 + echo "$as_me:7601: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:7282: \"$ac_try\"") >&5 + { (eval echo "$as_me:7604: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:7285: \$? = $ac_status" >&5 + echo "$as_me:7607: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cflags_work=yes else @@ -7291,18 +7613,21 @@ cat "conftest.$ac_ext" >&5 cf_cflags_work=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" - echo "$as_me:7294: result: $cf_cflags_work" >&5 + echo "$as_me:7616: result: $cf_cflags_work" >&5 echo "${ECHO_T}$cf_cflags_work" >&6 if test "$cf_cflags_work" = no then test -n "$verbose" && echo " try to work around by appending shared-options" 1>&6 -echo "${as_me:-configure}:7300: testing try to work around by appending shared-options ..." 1>&5 +echo "${as_me:-configure}:7622: testing try to work around by appending shared-options ..." 1>&5 CFLAGS="$CFLAGS $CC_SHARED_OPTS" fi -echo "$as_me:7305: checking if versioned-symbols file should be used" >&5 +if test "$with_libtool" = "yes" ; then + : +elif test "$with_shared" = "yes" ; then +echo "$as_me:7630: checking if versioned-symbols file should be used" >&5 echo $ECHO_N "checking if versioned-symbols file should be used... $ECHO_C" >&6 # Check whether --with-versioned-syms or --without-versioned-syms was given. @@ -7319,19 +7644,19 @@ case "x$with_versioned_syms" in ;; (xno) ;; -(x/*) - test -f "$with_versioned_syms" || { { echo "$as_me:7323: error: expected a filename: $with_versioned_syms" >&5 +(x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) + test -f "$with_versioned_syms" || { { echo "$as_me:7648: error: expected a filename: $with_versioned_syms" >&5 echo "$as_me: error: expected a filename: $with_versioned_syms" >&2;} { (exit 1); exit 1; }; } ;; (*) - test -f "$with_versioned_syms" || { { echo "$as_me:7328: error: expected a filename: $with_versioned_syms" >&5 + test -f "$with_versioned_syms" || { { echo "$as_me:7653: error: expected a filename: $with_versioned_syms" >&5 echo "$as_me: error: expected a filename: $with_versioned_syms" >&2;} { (exit 1); exit 1; }; } with_versioned_syms=`pwd`/"$with_versioned_syms" ;; esac -echo "$as_me:7334: result: $with_versioned_syms" >&5 +echo "$as_me:7659: result: $with_versioned_syms" >&5 echo "${ECHO_T}$with_versioned_syms" >&6 RESULTING_SYMS= @@ -7347,19 +7672,21 @@ then MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\${VERSIONED_SYMS} -Wl,%"` test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6 -echo "${as_me:-configure}:7350: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 +echo "${as_me:-configure}:7675: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + LIB_CREATE="$MK_SHARED_LIB" ;; (*-dy\ *) VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}" MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\${VERSIONED_SYMS} -dy%"` test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6 -echo "${as_me:-configure}:7358: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 +echo "${as_me:-configure}:7684: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + LIB_CREATE="$MK_SHARED_LIB" ;; (*) - { echo "$as_me:7362: WARNING: this system does not support versioned-symbols" >&5 + { echo "$as_me:7689: WARNING: this system does not support versioned-symbols" >&5 echo "$as_me: WARNING: this system does not support versioned-symbols" >&2;} ;; esac @@ -7371,7 +7698,7 @@ echo "$as_me: WARNING: this system does not support versioned-symbols" >&2;} # symbols. if test "x$VERSIONED_SYMS" != "x" then - echo "$as_me:7374: checking if wildcards can be used to selectively omit symbols" >&5 + echo "$as_me:7701: checking if wildcards can be used to selectively omit symbols" >&5 echo $ECHO_N "checking if wildcards can be used to selectively omit symbols... $ECHO_C" >&6 WILDCARD_SYMS=no @@ -7408,7 +7735,7 @@ local: } submodule_1.0; EOF cat >conftest.$ac_ext <<EOF -#line 7411 "configure" +#line 7738 "configure" extern int _ismissing(void); int _ismissing(void) { return 1; } extern int _localf1(void); int _localf1(void) { return 1; } extern int _localf2(void); int _localf2(void) { return 2; } @@ -7439,12 +7766,14 @@ EOF cf_missing="`nm -P conftest.so 2>&5 |${FGREP-fgrep} _ismissing | ${EGREP-egrep} '[ ][DT][ ]'`" test -n "$cf_missing" && WILDCARD_SYMS=yes fi - echo "$as_me:7442: result: $WILDCARD_SYMS" >&5 + echo "$as_me:7769: result: $WILDCARD_SYMS" >&5 echo "${ECHO_T}$WILDCARD_SYMS" >&6 rm -f conftest.* fi fi +fi + ;; esac done @@ -7452,7 +7781,7 @@ done ### Checks for special libraries, must be done up-front. SHLIB_LIST="" -echo "$as_me:7455: checking if you want to link with the GPM mouse library" >&5 +echo "$as_me:7784: checking if you want to link with the GPM mouse library" >&5 echo $ECHO_N "checking if you want to link with the GPM mouse library... $ECHO_C" >&6 # Check whether --with-gpm or --without-gpm was given. @@ -7462,27 +7791,27 @@ if test "${with_gpm+set}" = set; then else with_gpm=maybe fi; -echo "$as_me:7465: result: $with_gpm" >&5 +echo "$as_me:7794: result: $with_gpm" >&5 echo "${ECHO_T}$with_gpm" >&6 if test "$with_gpm" != no ; then - echo "$as_me:7469: checking for gpm.h" >&5 + echo "$as_me:7798: checking for gpm.h" >&5 echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6 if test "${ac_cv_header_gpm_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 7475 "configure" +#line 7804 "configure" #include "confdefs.h" #include <gpm.h> _ACEOF -if { (eval echo "$as_me:7479: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:7808: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:7485: \$? = $ac_status" >&5 + echo "$as_me:7814: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -7501,7 +7830,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:7504: result: $ac_cv_header_gpm_h" >&5 +echo "$as_me:7833: result: $ac_cv_header_gpm_h" >&5 echo "${ECHO_T}$ac_cv_header_gpm_h" >&6 if test "$ac_cv_header_gpm_h" = yes; then @@ -7512,7 +7841,7 @@ EOF if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then test -n "$verbose" && echo " assuming we really have GPM library" 1>&6 -echo "${as_me:-configure}:7515: testing assuming we really have GPM library ..." 1>&5 +echo "${as_me:-configure}:7844: testing assuming we really have GPM library ..." 1>&5 cat >>confdefs.h <<\EOF #define HAVE_LIBGPM 1 @@ -7520,7 +7849,7 @@ EOF with_gpm=yes else - echo "$as_me:7523: checking for Gpm_Open in -lgpm" >&5 + echo "$as_me:7852: checking for Gpm_Open in -lgpm" >&5 echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -7528,7 +7857,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lgpm $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 7531 "configure" +#line 7860 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -7547,16 +7876,16 @@ Gpm_Open (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:7550: \"$ac_link\"") >&5 +if { (eval echo "$as_me:7879: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:7553: \$? = $ac_status" >&5 + echo "$as_me:7882: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:7556: \"$ac_try\"") >&5 + { (eval echo "$as_me:7885: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:7559: \$? = $ac_status" >&5 + echo "$as_me:7888: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_gpm_Gpm_Open=yes else @@ -7567,18 +7896,18 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:7570: result: $ac_cv_lib_gpm_Gpm_Open" >&5 +echo "$as_me:7899: result: $ac_cv_lib_gpm_Gpm_Open" >&5 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6 if test "$ac_cv_lib_gpm_Gpm_Open" = yes; then with_gpm=yes else if test "$with_gpm" = maybe; then - { echo "$as_me:7577: WARNING: Cannot link with GPM library" >&5 + { echo "$as_me:7906: WARNING: Cannot link with GPM library" >&5 echo "$as_me: WARNING: Cannot link with GPM library" >&2;} with_gpm=no else - { { echo "$as_me:7581: error: Cannot link with GPM library" >&5 + { { echo "$as_me:7910: error: Cannot link with GPM library" >&5 echo "$as_me: error: Cannot link with GPM library" >&2;} { (exit 1); exit 1; }; } fi @@ -7589,7 +7918,7 @@ fi else - test "$with_gpm" != maybe && { echo "$as_me:7592: WARNING: Cannot find GPM header" >&5 + test "$with_gpm" != maybe && { echo "$as_me:7921: WARNING: Cannot find GPM header" >&5 echo "$as_me: WARNING: Cannot find GPM header" >&2;} with_gpm=no @@ -7598,7 +7927,7 @@ fi fi if test "$with_gpm" != no ; then - echo "$as_me:7601: checking if you want to load GPM dynamically" >&5 + echo "$as_me:7930: checking if you want to load GPM dynamically" >&5 echo $ECHO_N "checking if you want to load GPM dynamically... $ECHO_C" >&6 # Check whether --with-dlsym or --without-dlsym was given. @@ -7608,18 +7937,18 @@ if test "${with_dlsym+set}" = set; then else with_dlsym=yes fi; - echo "$as_me:7611: result: $with_dlsym" >&5 + echo "$as_me:7940: result: $with_dlsym" >&5 echo "${ECHO_T}$with_dlsym" >&6 if test "x$with_dlsym" = xyes ; then cf_have_dlsym=no -echo "$as_me:7616: checking for dlsym" >&5 +echo "$as_me:7945: checking for dlsym" >&5 echo $ECHO_N "checking for dlsym... $ECHO_C" >&6 if test "${ac_cv_func_dlsym+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 7622 "configure" +#line 7951 "configure" #include "confdefs.h" #define dlsym autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -7650,16 +7979,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:7653: \"$ac_link\"") >&5 +if { (eval echo "$as_me:7982: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:7656: \$? = $ac_status" >&5 + echo "$as_me:7985: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:7659: \"$ac_try\"") >&5 + { (eval echo "$as_me:7988: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:7662: \$? = $ac_status" >&5 + echo "$as_me:7991: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_dlsym=yes else @@ -7669,14 +7998,14 @@ ac_cv_func_dlsym=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:7672: result: $ac_cv_func_dlsym" >&5 +echo "$as_me:8001: result: $ac_cv_func_dlsym" >&5 echo "${ECHO_T}$ac_cv_func_dlsym" >&6 if test "$ac_cv_func_dlsym" = yes; then cf_have_dlsym=yes else cf_have_libdl=no -echo "$as_me:7679: checking for dlsym in -ldl" >&5 +echo "$as_me:8008: checking for dlsym in -ldl" >&5 echo $ECHO_N "checking for dlsym in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlsym+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -7684,7 +8013,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 7687 "configure" +#line 8016 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -7703,16 +8032,16 @@ dlsym (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:7706: \"$ac_link\"") >&5 +if { (eval echo "$as_me:8035: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:7709: \$? = $ac_status" >&5 + echo "$as_me:8038: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:7712: \"$ac_try\"") >&5 + { (eval echo "$as_me:8041: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:7715: \$? = $ac_status" >&5 + echo "$as_me:8044: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_dl_dlsym=yes else @@ -7723,7 +8052,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:7726: result: $ac_cv_lib_dl_dlsym" >&5 +echo "$as_me:8055: result: $ac_cv_lib_dl_dlsym" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlsym" >&6 if test "$ac_cv_lib_dl_dlsym" = yes; then @@ -7752,18 +8081,21 @@ done LIBS="$cf_add_libs" } - echo "$as_me:7755: checking whether able to link to dl*() functions" >&5 + echo "$as_me:8084: checking whether able to link to dl*() functions" >&5 echo $ECHO_N "checking whether able to link to dl*() functions... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 7758 "configure" +#line 8087 "configure" #include "confdefs.h" -#include <dlfcn.h> + + #include <stdio.h> + #include <dlfcn.h> + int main (void) { void *obj; - if ((obj = dlopen("filename", 0)) != 0) { + if ((obj = dlopen("filename", 0)) != NULL) { if (dlsym(obj, "symbolname") == 0) { dlclose(obj); } @@ -7773,16 +8105,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:7776: \"$ac_link\"") >&5 +if { (eval echo "$as_me:8108: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:7779: \$? = $ac_status" >&5 + echo "$as_me:8111: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:7782: \"$ac_try\"") >&5 + { (eval echo "$as_me:8114: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:7785: \$? = $ac_status" >&5 + echo "$as_me:8117: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cat >>confdefs.h <<\EOF @@ -7793,15 +8125,15 @@ else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 - { { echo "$as_me:7796: error: Cannot link test program for libdl" >&5 + { { echo "$as_me:8128: error: Cannot link test program for libdl" >&5 echo "$as_me: error: Cannot link test program for libdl" >&2;} { (exit 1); exit 1; }; } fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" - echo "$as_me:7801: result: ok" >&5 + echo "$as_me:8133: result: ok" >&5 echo "${ECHO_T}ok" >&6 else - { { echo "$as_me:7804: error: Cannot find dlsym function" >&5 + { { echo "$as_me:8136: error: Cannot find dlsym function" >&5 echo "$as_me: error: Cannot find dlsym function" >&2;} { (exit 1); exit 1; }; } fi @@ -7809,12 +8141,12 @@ fi if test "x$with_gpm" != xyes ; then test -n "$verbose" && echo " assuming soname for gpm is $with_gpm" 1>&6 -echo "${as_me:-configure}:7812: testing assuming soname for gpm is $with_gpm ..." 1>&5 +echo "${as_me:-configure}:8144: testing assuming soname for gpm is $with_gpm ..." 1>&5 cf_cv_gpm_soname="$with_gpm" else -echo "$as_me:7817: checking for soname of gpm library" >&5 +echo "$as_me:8149: checking for soname of gpm library" >&5 echo $ECHO_N "checking for soname of gpm library... $ECHO_C" >&6 if test "${cf_cv_gpm_soname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -7848,15 +8180,15 @@ for cf_add_1lib in $cf_add_0lib; do done LIBS="$cf_add_libs" - if { (eval echo "$as_me:7851: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:8183: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:7854: \$? = $ac_status" >&5 + echo "$as_me:8186: \$? = $ac_status" >&5 (exit "$ac_status"); } ; then - if { (eval echo "$as_me:7856: \"$ac_link\"") >&5 + if { (eval echo "$as_me:8188: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:7859: \$? = $ac_status" >&5 + echo "$as_me:8191: \$? = $ac_status" >&5 (exit "$ac_status"); } ; then cf_cv_gpm_soname="`ldd \"conftest$ac_exeext\" 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | ${FGREP-fgrep} libgpm.`" test -z "$cf_cv_gpm_soname" && cf_cv_gpm_soname=unknown @@ -7867,7 +8199,7 @@ LIBS="$cf_save_LIBS" fi fi -echo "$as_me:7870: result: $cf_cv_gpm_soname" >&5 +echo "$as_me:8202: result: $cf_cv_gpm_soname" >&5 echo "${ECHO_T}$cf_cv_gpm_soname" >&6 fi @@ -7935,7 +8267,7 @@ cat >>confdefs.h <<\EOF #define HAVE_LIBGPM 1 EOF -echo "$as_me:7938: checking for Gpm_Wgetch in -lgpm" >&5 +echo "$as_me:8270: checking for Gpm_Wgetch in -lgpm" >&5 echo $ECHO_N "checking for Gpm_Wgetch in -lgpm... $ECHO_C" >&6 if test "${ac_cv_lib_gpm_Gpm_Wgetch+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -7943,7 +8275,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lgpm $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 7946 "configure" +#line 8278 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -7962,16 +8294,16 @@ Gpm_Wgetch (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:7965: \"$ac_link\"") >&5 +if { (eval echo "$as_me:8297: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:7968: \$? = $ac_status" >&5 + echo "$as_me:8300: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:7971: \"$ac_try\"") >&5 + { (eval echo "$as_me:8303: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:7974: \$? = $ac_status" >&5 + echo "$as_me:8306: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_gpm_Gpm_Wgetch=yes else @@ -7982,11 +8314,11 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:7985: result: $ac_cv_lib_gpm_Gpm_Wgetch" >&5 +echo "$as_me:8317: result: $ac_cv_lib_gpm_Gpm_Wgetch" >&5 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Wgetch" >&6 if test "$ac_cv_lib_gpm_Gpm_Wgetch" = yes; then -echo "$as_me:7989: checking if GPM is weakly bound to curses library" >&5 +echo "$as_me:8321: checking if GPM is weakly bound to curses library" >&5 echo $ECHO_N "checking if GPM is weakly bound to curses library... $ECHO_C" >&6 if test "${cf_cv_check_gpm_wgetch+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -8010,15 +8342,15 @@ CF_EOF # to rely on the static library, noting that some packagers may not # include it. LIBS="-static -lgpm -dynamic $LIBS" - if { (eval echo "$as_me:8013: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:8345: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:8016: \$? = $ac_status" >&5 + echo "$as_me:8348: \$? = $ac_status" >&5 (exit "$ac_status"); } ; then - if { (eval echo "$as_me:8018: \"$ac_link\"") >&5 + if { (eval echo "$as_me:8350: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:8021: \$? = $ac_status" >&5 + echo "$as_me:8353: \$? = $ac_status" >&5 (exit "$ac_status"); } ; then cf_cv_check_gpm_wgetch="`nm \"conftest$ac_exeext\" | ${EGREP-egrep} '\<wgetch\>' | ${EGREP-egrep} '\<[vVwW]\>'`" test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes @@ -8030,11 +8362,11 @@ CF_EOF fi fi -echo "$as_me:8033: result: $cf_cv_check_gpm_wgetch" >&5 +echo "$as_me:8365: result: $cf_cv_check_gpm_wgetch" >&5 echo "${ECHO_T}$cf_cv_check_gpm_wgetch" >&6 if test "$cf_cv_check_gpm_wgetch" != yes ; then - { echo "$as_me:8037: WARNING: GPM library is already linked with curses - read the FAQ" >&5 + { echo "$as_me:8369: WARNING: GPM library is already linked with curses - read the FAQ" >&5 echo "$as_me: WARNING: GPM library is already linked with curses - read the FAQ" >&2;} fi @@ -8042,7 +8374,7 @@ fi fi -echo "$as_me:8045: checking if you want to use PCRE2 for regular-expressions" >&5 +echo "$as_me:8377: checking if you want to use PCRE2 for regular-expressions" >&5 echo $ECHO_N "checking if you want to use PCRE2 for regular-expressions... $ECHO_C" >&6 # Check whether --with-pcre2 or --without-pcre2 was given. @@ -8051,7 +8383,7 @@ if test "${with_pcre2+set}" = set; then fi; test -z "$with_pcre2" && with_pcre2=no -echo "$as_me:8054: result: $with_pcre2" >&5 +echo "$as_me:8386: result: $with_pcre2" >&5 echo "${ECHO_T}$with_pcre2" >&6 if test "x$with_pcre2" != xno ; then @@ -8062,17 +8394,31 @@ if test "x$with_pcre2" != xno ; then if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$cf_with_pcre2"; then test -n "$verbose" && echo " found package $cf_with_pcre2" 1>&6 -echo "${as_me:-configure}:8065: testing found package $cf_with_pcre2 ..." 1>&5 +echo "${as_me:-configure}:8397: testing found package $cf_with_pcre2 ..." 1>&5 cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$cf_with_pcre2" 2>/dev/null`" cf_pkgconfig_libs="`$PKG_CONFIG --libs "$cf_with_pcre2" 2>/dev/null`" test -n "$verbose" && echo " package $cf_with_pcre2 CFLAGS: $cf_pkgconfig_incs" 1>&6 -echo "${as_me:-configure}:8071: testing package $cf_with_pcre2 CFLAGS: $cf_pkgconfig_incs ..." 1>&5 +echo "${as_me:-configure}:8403: testing package $cf_with_pcre2 CFLAGS: $cf_pkgconfig_incs ..." 1>&5 test -n "$verbose" && echo " package $cf_with_pcre2 LIBS: $cf_pkgconfig_libs" 1>&6 -echo "${as_me:-configure}:8075: testing package $cf_with_pcre2 LIBS: $cf_pkgconfig_libs ..." 1>&5 +echo "${as_me:-configure}:8407: testing package $cf_with_pcre2 LIBS: $cf_pkgconfig_libs ..." 1>&5 + +for cf_required in $cf_with_pcre2 +do + # check for duplicates + for cf_require_pkg in $REQUIRE_PKG + do + if test "$cf_required" = "$cf_require_pkg" + then + cf_required= + break + fi + done + test -n "$cf_required" && REQUIRE_PKG="$REQUIRE_PKG $cf_required" +done cf_fix_cppflags=no cf_new_cflags= @@ -8196,7 +8542,7 @@ else fi done - cf_with_pcre2_ok=yes || { { echo "$as_me:8199: error: Cannot find PCRE2 library" >&5 + cf_with_pcre2_ok=yes || { { echo "$as_me:8545: error: Cannot find PCRE2 library" >&5 echo "$as_me: error: Cannot find PCRE2 library" >&2;} { (exit 1); exit 1; }; } @@ -8209,7 +8555,7 @@ EOF (*pcre2-posix*|*pcreposix*) ;; (*) - echo "$as_me:8212: checking for regcomp in -lpcre2-posix" >&5 + echo "$as_me:8558: checking for regcomp in -lpcre2-posix" >&5 echo $ECHO_N "checking for regcomp in -lpcre2-posix... $ECHO_C" >&6 if test "${ac_cv_lib_pcre2_posix_regcomp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -8217,7 +8563,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lpcre2-posix $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 8220 "configure" +#line 8566 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -8236,16 +8582,16 @@ regcomp (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:8239: \"$ac_link\"") >&5 +if { (eval echo "$as_me:8585: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:8242: \$? = $ac_status" >&5 + echo "$as_me:8588: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:8245: \"$ac_try\"") >&5 + { (eval echo "$as_me:8591: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:8248: \$? = $ac_status" >&5 + echo "$as_me:8594: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_pcre2_posix_regcomp=yes else @@ -8256,7 +8602,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:8259: result: $ac_cv_lib_pcre2_posix_regcomp" >&5 +echo "$as_me:8605: result: $ac_cv_lib_pcre2_posix_regcomp" >&5 echo "${ECHO_T}$ac_cv_lib_pcre2_posix_regcomp" >&6 if test "$ac_cv_lib_pcre2_posix_regcomp" = yes; then @@ -8277,7 +8623,7 @@ done LIBS="$cf_add_libs" else - echo "$as_me:8280: checking for regcomp in -lpcreposix" >&5 + echo "$as_me:8626: checking for regcomp in -lpcreposix" >&5 echo $ECHO_N "checking for regcomp in -lpcreposix... $ECHO_C" >&6 if test "${ac_cv_lib_pcreposix_regcomp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -8285,7 +8631,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lpcreposix $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 8288 "configure" +#line 8634 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -8304,16 +8650,16 @@ regcomp (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:8307: \"$ac_link\"") >&5 +if { (eval echo "$as_me:8653: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:8310: \$? = $ac_status" >&5 + echo "$as_me:8656: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:8313: \"$ac_try\"") >&5 + { (eval echo "$as_me:8659: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:8316: \$? = $ac_status" >&5 + echo "$as_me:8662: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_pcreposix_regcomp=yes else @@ -8324,7 +8670,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:8327: result: $ac_cv_lib_pcreposix_regcomp" >&5 +echo "$as_me:8673: result: $ac_cv_lib_pcreposix_regcomp" >&5 echo "${ECHO_T}$ac_cv_lib_pcreposix_regcomp" >&6 if test "$ac_cv_lib_pcreposix_regcomp" = yes; then @@ -8345,7 +8691,7 @@ done LIBS="$cf_add_libs" else - { { echo "$as_me:8348: error: Cannot find PCRE2 POSIX library" >&5 + { { echo "$as_me:8694: error: Cannot find PCRE2 POSIX library" >&5 echo "$as_me: error: Cannot find PCRE2 POSIX library" >&2;} { (exit 1); exit 1; }; } fi @@ -8360,23 +8706,23 @@ fi for ac_header in pcre2posix.h pcreposix.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:8363: checking for $ac_header" >&5 +echo "$as_me:8709: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 8369 "configure" +#line 8715 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:8373: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:8719: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:8379: \$? = $ac_status" >&5 + echo "$as_me:8725: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -8395,7 +8741,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:8398: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:8744: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -8408,13 +8754,13 @@ done for ac_func in PCRE2regcomp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:8411: checking for $ac_func" >&5 +echo "$as_me:8757: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 8417 "configure" +#line 8763 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -8445,16 +8791,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:8448: \"$ac_link\"") >&5 +if { (eval echo "$as_me:8794: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:8451: \$? = $ac_status" >&5 + echo "$as_me:8797: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:8454: \"$ac_try\"") >&5 + { (eval echo "$as_me:8800: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:8457: \$? = $ac_status" >&5 + echo "$as_me:8803: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -8464,7 +8810,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:8467: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:8813: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -8478,7 +8824,7 @@ fi # not everyone has "test -c" if test -c /dev/sysmouse 2>/dev/null ; then -echo "$as_me:8481: checking if you want to use sysmouse" >&5 +echo "$as_me:8827: checking if you want to use sysmouse" >&5 echo $ECHO_N "checking if you want to use sysmouse... $ECHO_C" >&6 # Check whether --with-sysmouse or --without-sysmouse was given. @@ -8490,7 +8836,7 @@ else fi; if test "$cf_with_sysmouse" != no ; then cat >"conftest.$ac_ext" <<_ACEOF -#line 8493 "configure" +#line 8839 "configure" #include "confdefs.h" #include <osreldate.h> @@ -8513,16 +8859,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:8516: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:8862: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:8519: \$? = $ac_status" >&5 + echo "$as_me:8865: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:8522: \"$ac_try\"") >&5 + { (eval echo "$as_me:8868: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:8525: \$? = $ac_status" >&5 + echo "$as_me:8871: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_with_sysmouse=yes else @@ -8532,7 +8878,7 @@ cf_with_sysmouse=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:8535: result: $cf_with_sysmouse" >&5 +echo "$as_me:8881: result: $cf_with_sysmouse" >&5 echo "${ECHO_T}$cf_with_sysmouse" >&6 test "$cf_with_sysmouse" = yes && cat >>confdefs.h <<\EOF @@ -8542,7 +8888,7 @@ EOF fi # pretend that ncurses==ncursesw==ncursest -echo "$as_me:8545: checking if you want to disable library suffixes" >&5 +echo "$as_me:8891: checking if you want to disable library suffixes" >&5 echo $ECHO_N "checking if you want to disable library suffixes... $ECHO_C" >&6 # Check whether --enable-lib-suffixes or --disable-lib-suffixes was given. @@ -8559,13 +8905,13 @@ else disable_lib_suffixes=no fi; -echo "$as_me:8562: result: $disable_lib_suffixes" >&5 +echo "$as_me:8908: result: $disable_lib_suffixes" >&5 echo "${ECHO_T}$disable_lib_suffixes" >&6 ### If we're building with rpath, try to link non-standard libs that way too. if test "$DFT_LWR_MODEL" = "shared" && test "x$cf_cv_enable_rpath" != xno; then -echo "$as_me:8568: checking if rpath-hack should be disabled" >&5 +echo "$as_me:8914: checking if rpath-hack should be disabled" >&5 echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6 # Check whether --enable-rpath-hack or --disable-rpath-hack was given. @@ -8583,22 +8929,22 @@ else fi; if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi -echo "$as_me:8586: result: $cf_disable_rpath_hack" >&5 +echo "$as_me:8932: result: $cf_disable_rpath_hack" >&5 echo "${ECHO_T}$cf_disable_rpath_hack" >&6 if test "$enable_rpath_hack" = yes ; then -echo "$as_me:8591: checking for updated LDFLAGS" >&5 +echo "$as_me:8937: checking for updated LDFLAGS" >&5 echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6 if test -n "$LD_RPATH_OPT" ; then - echo "$as_me:8594: result: maybe" >&5 + echo "$as_me:8940: result: maybe" >&5 echo "${ECHO_T}maybe" >&6 for ac_prog in ldd do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:8601: checking for $ac_word" >&5 +echo "$as_me:8947: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -8613,7 +8959,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_cf_ldd_prog="$ac_prog" -echo "$as_me:8616: found $ac_dir/$ac_word" >&5 +echo "$as_me:8962: found $ac_dir/$ac_word" >&5 break done @@ -8621,10 +8967,10 @@ fi fi cf_ldd_prog=$ac_cv_prog_cf_ldd_prog if test -n "$cf_ldd_prog"; then - echo "$as_me:8624: result: $cf_ldd_prog" >&5 + echo "$as_me:8970: result: $cf_ldd_prog" >&5 echo "${ECHO_T}$cf_ldd_prog" >&6 else - echo "$as_me:8627: result: no" >&5 + echo "$as_me:8973: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -8638,7 +8984,7 @@ test -n "$cf_ldd_prog" || cf_ldd_prog="no" cf_rpath_oops= cat >"conftest.$ac_ext" <<_ACEOF -#line 8641 "configure" +#line 8987 "configure" #include "confdefs.h" #include <stdio.h> int @@ -8650,16 +8996,16 @@ printf("Hello"); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:8653: \"$ac_link\"") >&5 +if { (eval echo "$as_me:8999: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:8656: \$? = $ac_status" >&5 + echo "$as_me:9002: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:8659: \"$ac_try\"") >&5 + { (eval echo "$as_me:9005: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:8662: \$? = $ac_status" >&5 + echo "$as_me:9008: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq` cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[ ]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq` @@ -8687,7 +9033,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" then test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6 -echo "${as_me:-configure}:8690: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5 +echo "${as_me:-configure}:9036: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" break @@ -8699,11 +9045,11 @@ echo "${as_me:-configure}:8690: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 -echo "${as_me:-configure}:8702: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 +echo "${as_me:-configure}:9048: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6 -echo "${as_me:-configure}:8706: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5 +echo "${as_me:-configure}:9052: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5 cf_rpath_dst= for cf_rpath_src in $LDFLAGS @@ -8740,7 +9086,7 @@ do then test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 -echo "${as_me:-configure}:8743: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 +echo "${as_me:-configure}:9089: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" fi @@ -8753,11 +9099,11 @@ LDFLAGS=$cf_rpath_dst test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6 -echo "${as_me:-configure}:8756: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5 +echo "${as_me:-configure}:9102: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5 test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6 -echo "${as_me:-configure}:8760: testing ...checking LIBS $LIBS ..." 1>&5 +echo "${as_me:-configure}:9106: testing ...checking LIBS $LIBS ..." 1>&5 cf_rpath_dst= for cf_rpath_src in $LIBS @@ -8794,7 +9140,7 @@ do then test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 -echo "${as_me:-configure}:8797: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 +echo "${as_me:-configure}:9143: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" fi @@ -8807,14 +9153,14 @@ LIBS=$cf_rpath_dst test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6 -echo "${as_me:-configure}:8810: testing ...checked LIBS $LIBS ..." 1>&5 +echo "${as_me:-configure}:9156: testing ...checked LIBS $LIBS ..." 1>&5 test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 -echo "${as_me:-configure}:8814: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 +echo "${as_me:-configure}:9160: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 else - echo "$as_me:8817: result: no" >&5 + echo "$as_me:9163: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -8828,7 +9174,7 @@ fi EXTRA_PKG_LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS" if test -n "$EXTRA_PKG_LDFLAGS" then - echo "$as_me:8831: checking if you want to disable extra LDFLAGS for package-scripts" >&5 + echo "$as_me:9177: checking if you want to disable extra LDFLAGS for package-scripts" >&5 echo $ECHO_N "checking if you want to disable extra LDFLAGS for package-scripts... $ECHO_C" >&6 # Check whether --enable-pkg-ldflags or --disable-pkg-ldflags was given. @@ -8845,7 +9191,7 @@ else disable_pkg_ldflags=no fi; - echo "$as_me:8848: result: $disable_pkg_ldflags" >&5 + echo "$as_me:9194: result: $disable_pkg_ldflags" >&5 echo "${ECHO_T}$disable_pkg_ldflags" >&6 test "$disable_pkg_ldflags" = yes && EXTRA_PKG_LDFLAGS= fi @@ -8853,7 +9199,7 @@ fi ############################################################################### ### use option --with-extra-suffix to append suffix to headers and libraries -echo "$as_me:8856: checking for extra suffix to append to header/library paths" >&5 +echo "$as_me:9202: checking for extra suffix to append to header/library paths" >&5 echo $ECHO_N "checking for extra suffix to append to header/library paths... $ECHO_C" >&6 EXTRA_SUFFIX= @@ -8872,11 +9218,11 @@ if test "${with_extra_suffix+set}" = set; then esac fi; -echo "$as_me:8875: result: ${EXTRA_SUFFIX:-(none)}" >&5 +echo "$as_me:9221: result: ${EXTRA_SUFFIX:-(none)}" >&5 echo "${ECHO_T}${EXTRA_SUFFIX:-(none)}" >&6 ### use option --disable-overwrite to leave out the link to -lcurses -echo "$as_me:8879: checking if you wish to install ncurses overwriting curses" >&5 +echo "$as_me:9225: checking if you wish to install ncurses overwriting curses" >&5 echo $ECHO_N "checking if you wish to install ncurses overwriting curses... $ECHO_C" >&6 # Check whether --enable-overwrite or --disable-overwrite was given. @@ -8886,10 +9232,10 @@ if test "${enable_overwrite+set}" = set; then else if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi fi; -echo "$as_me:8889: result: $with_overwrite" >&5 +echo "$as_me:9235: result: $with_overwrite" >&5 echo "${ECHO_T}$with_overwrite" >&6 -echo "$as_me:8892: checking if external terminfo-database is used" >&5 +echo "$as_me:9238: checking if external terminfo-database is used" >&5 echo $ECHO_N "checking if external terminfo-database is used... $ECHO_C" >&6 # Check whether --enable-database or --disable-database was given. @@ -8899,7 +9245,7 @@ if test "${enable_database+set}" = set; then else use_database=yes fi; -echo "$as_me:8902: result: $use_database" >&5 +echo "$as_me:9248: result: $use_database" >&5 echo "${ECHO_T}$use_database" >&6 case "$host_os" in @@ -8915,7 +9261,7 @@ NCURSES_USE_DATABASE=0 if test "$use_database" != no ; then NCURSES_USE_DATABASE=1 - echo "$as_me:8918: checking which terminfo source-file will be installed" >&5 + echo "$as_me:9264: checking which terminfo source-file will be installed" >&5 echo $ECHO_N "checking which terminfo source-file will be installed... $ECHO_C" >&6 # Check whether --with-database or --without-database was given. @@ -8923,10 +9269,10 @@ if test "${with_database+set}" = set; then withval="$with_database" TERMINFO_SRC=$withval fi; - echo "$as_me:8926: result: $TERMINFO_SRC" >&5 + echo "$as_me:9272: result: $TERMINFO_SRC" >&5 echo "${ECHO_T}$TERMINFO_SRC" >&6 - echo "$as_me:8929: checking whether to use hashed database instead of directory/tree" >&5 + echo "$as_me:9275: checking whether to use hashed database instead of directory/tree" >&5 echo $ECHO_N "checking whether to use hashed database instead of directory/tree... $ECHO_C" >&6 # Check whether --with-hashed-db or --without-hashed-db was given. @@ -8936,13 +9282,13 @@ if test "${with_hashed_db+set}" = set; then else with_hashed_db=no fi; - echo "$as_me:8939: result: $with_hashed_db" >&5 + echo "$as_me:9285: result: $with_hashed_db" >&5 echo "${ECHO_T}$with_hashed_db" >&6 else with_hashed_db=no fi -echo "$as_me:8945: checking for list of fallback terminal descriptions" >&5 +echo "$as_me:9291: checking for list of fallback terminal descriptions" >&5 echo $ECHO_N "checking for list of fallback terminal descriptions... $ECHO_C" >&6 # Check whether --with-fallbacks or --without-fallbacks was given. @@ -8952,7 +9298,7 @@ if test "${with_fallbacks+set}" = set; then else with_fallback= fi; -echo "$as_me:8955: result: ${with_fallback:-(none)}" >&5 +echo "$as_me:9301: result: ${with_fallback:-(none)}" >&5 echo "${ECHO_T}${with_fallback:-(none)}" >&6 case ".$with_fallback" in @@ -8960,7 +9306,7 @@ case ".$with_fallback" in FALLBACK_LIST= ;; (.yes) - { echo "$as_me:8963: WARNING: expected a list of terminal descriptions" >&5 + { echo "$as_me:9309: WARNING: expected a list of terminal descriptions" >&5 echo "$as_me: WARNING: expected a list of terminal descriptions" >&2;} ;; (*) @@ -8976,7 +9322,7 @@ esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}tic", so it can be a program name with args. set dummy ${ac_tool_prefix}tic; ac_word=$2 -echo "$as_me:8979: checking for $ac_word" >&5 +echo "$as_me:9325: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_TIC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -8991,7 +9337,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_TIC="${ac_tool_prefix}tic" -echo "$as_me:8994: found $ac_dir/$ac_word" >&5 +echo "$as_me:9340: found $ac_dir/$ac_word" >&5 break done @@ -8999,10 +9345,10 @@ fi fi TIC=$ac_cv_prog_TIC if test -n "$TIC"; then - echo "$as_me:9002: result: $TIC" >&5 + echo "$as_me:9348: result: $TIC" >&5 echo "${ECHO_T}$TIC" >&6 else - echo "$as_me:9005: result: no" >&5 + echo "$as_me:9351: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -9011,7 +9357,7 @@ if test -z "$ac_cv_prog_TIC"; then ac_ct_TIC=$TIC # Extract the first word of "tic", so it can be a program name with args. set dummy tic; ac_word=$2 -echo "$as_me:9014: checking for $ac_word" >&5 +echo "$as_me:9360: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_TIC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9026,7 +9372,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_TIC="tic" -echo "$as_me:9029: found $ac_dir/$ac_word" >&5 +echo "$as_me:9375: found $ac_dir/$ac_word" >&5 break done @@ -9034,10 +9380,10 @@ fi fi ac_ct_TIC=$ac_cv_prog_ac_ct_TIC if test -n "$ac_ct_TIC"; then - echo "$as_me:9037: result: $ac_ct_TIC" >&5 + echo "$as_me:9383: result: $ac_ct_TIC" >&5 echo "${ECHO_T}$ac_ct_TIC" >&6 else - echo "$as_me:9040: result: no" >&5 + echo "$as_me:9386: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -9049,7 +9395,7 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}infocmp", so it can be a program name with args. set dummy ${ac_tool_prefix}infocmp; ac_word=$2 -echo "$as_me:9052: checking for $ac_word" >&5 +echo "$as_me:9398: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INFOCMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9064,7 +9410,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_INFOCMP="${ac_tool_prefix}infocmp" -echo "$as_me:9067: found $ac_dir/$ac_word" >&5 +echo "$as_me:9413: found $ac_dir/$ac_word" >&5 break done @@ -9072,10 +9418,10 @@ fi fi INFOCMP=$ac_cv_prog_INFOCMP if test -n "$INFOCMP"; then - echo "$as_me:9075: result: $INFOCMP" >&5 + echo "$as_me:9421: result: $INFOCMP" >&5 echo "${ECHO_T}$INFOCMP" >&6 else - echo "$as_me:9078: result: no" >&5 + echo "$as_me:9424: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -9084,7 +9430,7 @@ if test -z "$ac_cv_prog_INFOCMP"; then ac_ct_INFOCMP=$INFOCMP # Extract the first word of "infocmp", so it can be a program name with args. set dummy infocmp; ac_word=$2 -echo "$as_me:9087: checking for $ac_word" >&5 +echo "$as_me:9433: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_INFOCMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9099,7 +9445,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_INFOCMP="infocmp" -echo "$as_me:9102: found $ac_dir/$ac_word" >&5 +echo "$as_me:9448: found $ac_dir/$ac_word" >&5 break done @@ -9107,10 +9453,10 @@ fi fi ac_ct_INFOCMP=$ac_cv_prog_ac_ct_INFOCMP if test -n "$ac_ct_INFOCMP"; then - echo "$as_me:9110: result: $ac_ct_INFOCMP" >&5 + echo "$as_me:9456: result: $ac_ct_INFOCMP" >&5 echo "${ECHO_T}$ac_ct_INFOCMP" >&6 else - echo "$as_me:9113: result: no" >&5 + echo "$as_me:9459: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -9125,10 +9471,10 @@ then # Check whether --with-tic-path or --without-tic-path was given. if test "${with_tic_path+set}" = set; then withval="$with_tic_path" - echo "$as_me:9128: checking for tic program for fallbacks" >&5 + echo "$as_me:9474: checking for tic program for fallbacks" >&5 echo $ECHO_N "checking for tic program for fallbacks... $ECHO_C" >&6 TIC=$withval - echo "$as_me:9131: result: $TIC" >&5 + echo "$as_me:9477: result: $TIC" >&5 echo "${ECHO_T}$TIC" >&6 if test "x$prefix" != xNONE; then @@ -9137,26 +9483,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$TIC" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$TIC" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval TIC="$TIC" - case ".$TIC" in - (.NONE/*) + case "x$TIC" in + (xNONE/*) TIC=`echo "$TIC" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) TIC=`echo "$TIC" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:9159: error: expected a pathname, not \"$TIC\"" >&5 + { { echo "$as_me:9503: error: expected a pathname, not \"$TIC\"" >&5 echo "$as_me: error: expected a pathname, not \"$TIC\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -9169,7 +9513,7 @@ for ac_prog in $TIC tic do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:9172: checking for $ac_word" >&5 +echo "$as_me:9516: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_TIC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9186,7 +9530,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_TIC="$ac_dir/$ac_word" - echo "$as_me:9189: found $ac_dir/$ac_word" >&5 + echo "$as_me:9533: found $ac_dir/$ac_word" >&5 break fi done @@ -9197,10 +9541,10 @@ fi TIC=$ac_cv_path_TIC if test -n "$TIC"; then - echo "$as_me:9200: result: $TIC" >&5 + echo "$as_me:9544: result: $TIC" >&5 echo "${ECHO_T}$TIC" >&6 else - echo "$as_me:9203: result: no" >&5 + echo "$as_me:9547: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -9222,22 +9566,20 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$cf_temp" in -(.\$\(*\)*|.\'*\'*) +case "x$cf_temp" in +(x\$\(*\)*|x\'*\'*) ;; -(..|./*|.\\*) +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX - ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval cf_temp="$cf_temp" - case ".$cf_temp" in - (.NONE/*) + case "x$cf_temp" in + (xNONE/*) cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` ;; (*) @@ -9259,7 +9601,7 @@ IFS="$cf_save_ifs" if test -n "$cf_path_prog" ; then -echo "${as_me:-configure}:9262: testing defining path for ${cf_path_prog} ..." 1>&5 +echo "${as_me:-configure}:9604: testing defining path for ${cf_path_prog} ..." 1>&5 cat >>confdefs.h <<EOF #define TIC_PATH "$cf_path_prog" @@ -9274,7 +9616,7 @@ fi if test -z "$TIC" then - { echo "$as_me:9277: WARNING: no tic program found for fallbacks" >&5 + { echo "$as_me:9619: WARNING: no tic program found for fallbacks" >&5 echo "$as_me: WARNING: no tic program found for fallbacks" >&2;} fi @@ -9283,10 +9625,10 @@ fi; # Check whether --with-infocmp-path or --without-infocmp-path was given. if test "${with_infocmp_path+set}" = set; then withval="$with_infocmp_path" - echo "$as_me:9286: checking for infocmp program for fallbacks" >&5 + echo "$as_me:9628: checking for infocmp program for fallbacks" >&5 echo $ECHO_N "checking for infocmp program for fallbacks... $ECHO_C" >&6 INFOCMP=$withval - echo "$as_me:9289: result: $INFOCMP" >&5 + echo "$as_me:9631: result: $INFOCMP" >&5 echo "${ECHO_T}$INFOCMP" >&6 if test "x$prefix" != xNONE; then @@ -9295,26 +9637,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$INFOCMP" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$INFOCMP" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval INFOCMP="$INFOCMP" - case ".$INFOCMP" in - (.NONE/*) + case "x$INFOCMP" in + (xNONE/*) INFOCMP=`echo "$INFOCMP" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) INFOCMP=`echo "$INFOCMP" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:9317: error: expected a pathname, not \"$INFOCMP\"" >&5 + { { echo "$as_me:9657: error: expected a pathname, not \"$INFOCMP\"" >&5 echo "$as_me: error: expected a pathname, not \"$INFOCMP\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -9327,7 +9667,7 @@ for ac_prog in $INFOCMP infocmp do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:9330: checking for $ac_word" >&5 +echo "$as_me:9670: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_INFOCMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9344,7 +9684,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_INFOCMP="$ac_dir/$ac_word" - echo "$as_me:9347: found $ac_dir/$ac_word" >&5 + echo "$as_me:9687: found $ac_dir/$ac_word" >&5 break fi done @@ -9355,10 +9695,10 @@ fi INFOCMP=$ac_cv_path_INFOCMP if test -n "$INFOCMP"; then - echo "$as_me:9358: result: $INFOCMP" >&5 + echo "$as_me:9698: result: $INFOCMP" >&5 echo "${ECHO_T}$INFOCMP" >&6 else - echo "$as_me:9361: result: no" >&5 + echo "$as_me:9701: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -9380,22 +9720,20 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$cf_temp" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$cf_temp" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval cf_temp="$cf_temp" - case ".$cf_temp" in - (.NONE/*) + case "x$cf_temp" in + (xNONE/*) cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` ;; (*) @@ -9417,7 +9755,7 @@ IFS="$cf_save_ifs" if test -n "$cf_path_prog" ; then -echo "${as_me:-configure}:9420: testing defining path for ${cf_path_prog} ..." 1>&5 +echo "${as_me:-configure}:9758: testing defining path for ${cf_path_prog} ..." 1>&5 cat >>confdefs.h <<EOF #define INFOCMP_PATH "$cf_path_prog" @@ -9432,7 +9770,7 @@ fi if test -z "$INFOCMP" then - { echo "$as_me:9435: WARNING: no infocmp program found for fallbacks" >&5 + { echo "$as_me:9773: WARNING: no infocmp program found for fallbacks" >&5 echo "$as_me: WARNING: no infocmp program found for fallbacks" >&2;} fi @@ -9442,7 +9780,7 @@ fi; test -z "$INFOCMP" && FALLBACK_LIST= if test -z "$FALLBACK_LIST" then - { echo "$as_me:9445: WARNING: ignoring fallback option because tic/infocmp are not available" >&5 + { echo "$as_me:9783: WARNING: ignoring fallback option because tic/infocmp are not available" >&5 echo "$as_me: WARNING: ignoring fallback option because tic/infocmp are not available" >&2;} fi fi @@ -9450,7 +9788,7 @@ fi USE_FALLBACKS= test -z "$FALLBACK_LIST" && USE_FALLBACKS="#" -echo "$as_me:9453: checking if you want modern xterm or antique" >&5 +echo "$as_me:9791: checking if you want modern xterm or antique" >&5 echo $ECHO_N "checking if you want modern xterm or antique... $ECHO_C" >&6 # Check whether --with-xterm-new or --without-xterm-new was given. @@ -9464,12 +9802,12 @@ case "$with_xterm_new" in (no) with_xterm_new=xterm-old;; (*) with_xterm_new=xterm-new;; esac -echo "$as_me:9467: result: $with_xterm_new" >&5 +echo "$as_me:9805: result: $with_xterm_new" >&5 echo "${ECHO_T}$with_xterm_new" >&6 WHICH_XTERM=$with_xterm_new case $host_os in -(*linux-gnu|*cygwin|*mingw32|*msys) +(linux*gnu*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc|linux*musl|openbsd*|darwin*) want_xterm_kbs=DEL ;; (*) @@ -9477,8 +9815,8 @@ case $host_os in ;; esac -echo "$as_me:9480: checking if xterm backspace sends BS or DEL" >&5 -echo $ECHO_N "checking if xterm backspace sends BS or DEL... $ECHO_C" >&6 +echo "$as_me:9818: checking if xterm backspace-key sends BS or DEL" >&5 +echo $ECHO_N "checking if xterm backspace-key sends BS or DEL... $ECHO_C" >&6 # Check whether --with-xterm-kbs or --without-xterm-kbs was given. if test "${with_xterm_kbs+set}" = set; then @@ -9501,13 +9839,13 @@ case x$with_xterm_kbs in with_xterm_kbs=$withval ;; esac -echo "$as_me:9504: result: $with_xterm_kbs" >&5 +echo "$as_me:9842: result: $with_xterm_kbs" >&5 echo "${ECHO_T}$with_xterm_kbs" >&6 XTERM_KBS=$with_xterm_kbs if test "x$with_xterm_kbs" != "x$want_xterm_kbs" then - { echo "$as_me:9510: WARNING: expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs" >&5 + { echo "$as_me:9848: WARNING: expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs" >&5 echo "$as_me: WARNING: expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs" >&2;} fi @@ -9517,7 +9855,7 @@ if test "$use_database" = no ; then MAKE_TERMINFO="#" else -echo "$as_me:9520: checking for list of terminfo directories" >&5 +echo "$as_me:9858: checking for list of terminfo directories" >&5 echo $ECHO_N "checking for list of terminfo directories... $ECHO_C" >&6 # Check whether --with-terminfo-dirs or --without-terminfo-dirs was given. @@ -9538,26 +9876,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$cf_src_path" in -(.\$\(*\)*|.\'*\'*) +case "x$cf_src_path" in +(x\$\(*\)*|x\'*\'*) ;; -(..|./*|.\\*) +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX - ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval cf_src_path="$cf_src_path" - case ".$cf_src_path" in - (.NONE/*) + case "x$cf_src_path" in + (xNONE/*) cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:9560: error: expected a pathname, not \"$cf_src_path\"" >&5 + { { echo "$as_me:9896: error: expected a pathname, not \"$cf_src_path\"" >&5 echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -9580,7 +9916,7 @@ case "x$cf_dst_eval" in ;; esac -echo "$as_me:9583: result: $TERMINFO_DIRS" >&5 +echo "$as_me:9919: result: $TERMINFO_DIRS" >&5 echo "${ECHO_T}$TERMINFO_DIRS" >&6 test -n "$TERMINFO_DIRS" && cat >>confdefs.h <<EOF @@ -9589,13 +9925,13 @@ EOF case "x$TERMINFO" in x???:*) - { echo "$as_me:9592: WARNING: ignoring non-directory/file TERMINFO value" >&5 + { echo "$as_me:9928: WARNING: ignoring non-directory/file TERMINFO value" >&5 echo "$as_me: WARNING: ignoring non-directory/file TERMINFO value" >&2;} unset TERMINFO ;; esac -echo "$as_me:9598: checking for default terminfo directory" >&5 +echo "$as_me:9934: checking for default terminfo directory" >&5 echo $ECHO_N "checking for default terminfo directory... $ECHO_C" >&6 # Check whether --with-default-terminfo-dir or --without-default-terminfo-dir was given. @@ -9612,26 +9948,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$withval" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$withval" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval withval="$withval" - case ".$withval" in - (.NONE/*) + case "x$withval" in + (xNONE/*) withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:9634: error: expected a pathname, not \"$withval\"" >&5 + { { echo "$as_me:9968: error: expected a pathname, not \"$withval\"" >&5 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -9640,7 +9974,7 @@ esac fi eval TERMINFO="$withval" -echo "$as_me:9643: result: $TERMINFO" >&5 +echo "$as_me:9977: result: $TERMINFO" >&5 echo "${ECHO_T}$TERMINFO" >&6 cat >>confdefs.h <<EOF @@ -9651,7 +9985,7 @@ fi ### use option --disable-big-core to make tic run on small machines ### We need 4Mb, check if we can allocate 50% more than that. -echo "$as_me:9654: checking if big-core option selected" >&5 +echo "$as_me:9988: checking if big-core option selected" >&5 echo $ECHO_N "checking if big-core option selected... $ECHO_C" >&6 # Check whether --enable-big-core or --disable-big-core was given. @@ -9663,7 +9997,7 @@ else with_big_core=no else cat >"conftest.$ac_ext" <<_ACEOF -#line 9666 "configure" +#line 10000 "configure" #include "confdefs.h" #include <stdlib.h> @@ -9677,15 +10011,15 @@ int main(void) { } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:9680: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10014: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9683: \$? = $ac_status" >&5 + echo "$as_me:10017: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:9685: \"$ac_try\"") >&5 + { (eval echo "$as_me:10019: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9688: \$? = $ac_status" >&5 + echo "$as_me:10022: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then with_big_core=yes else @@ -9697,7 +10031,7 @@ fi rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" fi fi; -echo "$as_me:9700: result: $with_big_core" >&5 +echo "$as_me:10034: result: $with_big_core" >&5 echo "${ECHO_T}$with_big_core" >&6 test "x$with_big_core" = "xyes" && cat >>confdefs.h <<\EOF @@ -9707,7 +10041,7 @@ EOF ### ISO C only guarantees 512-char strings, we have tables which load faster ### when constructed using "big" strings. More than the C compiler, the awk ### program is a limit on most vendor UNIX systems. Check that we can build. -echo "$as_me:9710: checking if big-strings option selected" >&5 +echo "$as_me:10044: checking if big-strings option selected" >&5 echo $ECHO_N "checking if big-strings option selected... $ECHO_C" >&6 # Check whether --enable-big-strings or --disable-big-strings was given. @@ -9731,14 +10065,14 @@ else esac fi; -echo "$as_me:9734: result: $with_big_strings" >&5 +echo "$as_me:10068: result: $with_big_strings" >&5 echo "${ECHO_T}$with_big_strings" >&6 USE_BIG_STRINGS=0 test "x$with_big_strings" = "xyes" && USE_BIG_STRINGS=1 ### use option --enable-termcap to compile in the termcap fallback support -echo "$as_me:9741: checking if you want termcap-fallback support" >&5 +echo "$as_me:10075: checking if you want termcap-fallback support" >&5 echo $ECHO_N "checking if you want termcap-fallback support... $ECHO_C" >&6 # Check whether --enable-termcap or --disable-termcap was given. @@ -9748,14 +10082,14 @@ if test "${enable_termcap+set}" = set; then else with_termcap=no fi; -echo "$as_me:9751: result: $with_termcap" >&5 +echo "$as_me:10085: result: $with_termcap" >&5 echo "${ECHO_T}$with_termcap" >&6 NCURSES_USE_TERMCAP=0 if test "x$with_termcap" != "xyes" ; then if test "$use_database" = no ; then if test -z "$with_fallback" ; then - { { echo "$as_me:9758: error: You have disabled the database w/o specifying fallbacks" >&5 + { { echo "$as_me:10092: error: You have disabled the database w/o specifying fallbacks" >&5 echo "$as_me: error: You have disabled the database w/o specifying fallbacks" >&2;} { (exit 1); exit 1; }; } fi @@ -9768,13 +10102,13 @@ EOF else if test "$with_ticlib" != no ; then - { { echo "$as_me:9771: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5 + { { echo "$as_me:10105: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5 echo "$as_me: error: Options --with-ticlib and --enable-termcap cannot be combined" >&2;} { (exit 1); exit 1; }; } fi NCURSES_USE_TERMCAP=1 - echo "$as_me:9777: checking for list of termcap files" >&5 + echo "$as_me:10111: checking for list of termcap files" >&5 echo $ECHO_N "checking for list of termcap files... $ECHO_C" >&6 # Check whether --with-termpath or --without-termpath was given. @@ -9795,26 +10129,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$cf_src_path" in -(.\$\(*\)*|.\'*\'*) +case "x$cf_src_path" in +(x\$\(*\)*|x\'*\'*) ;; -(..|./*|.\\*) +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX - ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval cf_src_path="$cf_src_path" - case ".$cf_src_path" in - (.NONE/*) + case "x$cf_src_path" in + (xNONE/*) cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:9817: error: expected a pathname, not \"$cf_src_path\"" >&5 + { { echo "$as_me:10149: error: expected a pathname, not \"$cf_src_path\"" >&5 echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -9837,7 +10169,7 @@ case "x$cf_dst_eval" in ;; esac - echo "$as_me:9840: result: $TERMPATH" >&5 + echo "$as_me:10172: result: $TERMPATH" >&5 echo "${ECHO_T}$TERMPATH" >&6 test -n "$TERMPATH" && cat >>confdefs.h <<EOF @@ -9845,7 +10177,7 @@ cat >>confdefs.h <<EOF EOF ### use option --enable-getcap to use a hacked getcap for reading termcaps - echo "$as_me:9848: checking if fast termcap-loader is needed" >&5 + echo "$as_me:10180: checking if fast termcap-loader is needed" >&5 echo $ECHO_N "checking if fast termcap-loader is needed... $ECHO_C" >&6 # Check whether --enable-getcap or --disable-getcap was given. @@ -9855,14 +10187,14 @@ if test "${enable_getcap+set}" = set; then else with_getcap=no fi; - echo "$as_me:9858: result: $with_getcap" >&5 + echo "$as_me:10190: result: $with_getcap" >&5 echo "${ECHO_T}$with_getcap" >&6 test "x$with_getcap" = "xyes" && cat >>confdefs.h <<\EOF #define USE_GETCAP 1 EOF - echo "$as_me:9865: checking if translated termcaps will be cached in ~/.terminfo" >&5 + echo "$as_me:10197: checking if translated termcaps will be cached in ~/.terminfo" >&5 echo $ECHO_N "checking if translated termcaps will be cached in ~/.terminfo... $ECHO_C" >&6 # Check whether --enable-getcap-cache or --disable-getcap-cache was given. @@ -9872,7 +10204,7 @@ if test "${enable_getcap_cache+set}" = set; then else with_getcap_cache=no fi; - echo "$as_me:9875: result: $with_getcap_cache" >&5 + echo "$as_me:10207: result: $with_getcap_cache" >&5 echo "${ECHO_T}$with_getcap_cache" >&6 test "x$with_getcap_cache" = "xyes" && cat >>confdefs.h <<\EOF @@ -9882,7 +10214,7 @@ EOF fi ### Use option --disable-home-terminfo to completely remove ~/.terminfo -echo "$as_me:9885: checking if ~/.terminfo is wanted" >&5 +echo "$as_me:10217: checking if ~/.terminfo is wanted" >&5 echo $ECHO_N "checking if ~/.terminfo is wanted... $ECHO_C" >&6 # Check whether --enable-home-terminfo or --disable-home-terminfo was given. @@ -9892,14 +10224,40 @@ if test "${enable_home_terminfo+set}" = set; then else with_home_terminfo=yes fi; -echo "$as_me:9895: result: $with_home_terminfo" >&5 +echo "$as_me:10227: result: $with_home_terminfo" >&5 echo "${ECHO_T}$with_home_terminfo" >&6 test "x$with_home_terminfo" = "xyes" && cat >>confdefs.h <<\EOF #define USE_HOME_TERMINFO 1 EOF -echo "$as_me:9902: checking if you want to permit root to use ncurses environment variables" >&5 +echo "$as_me:10234: checking for conventional multiuser system" >&5 +echo $ECHO_N "checking for conventional multiuser system... $ECHO_C" >&6 +if test "${cf_cv_multiuser+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_multiuser=no + if test -f /etc/passwd + then + sed \ + -e '/true$/d' \ + -e '/false$/d' \ + -e '/nologin$/d' \ + -e '/^[^:]*:[^:]*:[0-9]:/d' \ + -e '/^[^:]*:[^:]*:[0-9][0-9]:/d' \ + -e '/:$/d' < /etc/passwd >conftest.tmp + test -s conftest.tmp && cf_cv_multiuser=yes + rm -f conftest.tmp + fi + +fi +echo "$as_me:10255: result: $cf_cv_multiuser" >&5 +echo "${ECHO_T}$cf_cv_multiuser" >&6 + +if test "$cf_cv_multiuser" = yes; then + +echo "$as_me:10260: checking if you want to permit root to use ncurses environment variables" >&5 echo $ECHO_N "checking if you want to permit root to use ncurses environment variables... $ECHO_C" >&6 # Check whether --enable-root-environ or --disable-root-environ was given. @@ -9909,14 +10267,14 @@ if test "${enable_root_environ+set}" = set; then else with_root_environ=yes fi; -echo "$as_me:9912: result: $with_root_environ" >&5 +echo "$as_me:10270: result: $with_root_environ" >&5 echo "${ECHO_T}$with_root_environ" >&6 test "x$with_root_environ" = xyes && cat >>confdefs.h <<\EOF #define USE_ROOT_ENVIRON 1 EOF -echo "$as_me:9919: checking if you want to permit setuid programs to access all files" >&5 +echo "$as_me:10277: checking if you want to permit setuid programs to access all files" >&5 echo $ECHO_N "checking if you want to permit setuid programs to access all files... $ECHO_C" >&6 # Check whether --enable-root-access or --disable-root-access was given. @@ -9926,14 +10284,14 @@ if test "${enable_root_access+set}" = set; then else with_root_access=yes fi; -echo "$as_me:9929: result: $with_root_access" >&5 +echo "$as_me:10287: result: $with_root_access" >&5 echo "${ECHO_T}$with_root_access" >&6 test "x$with_root_access" = xyes && cat >>confdefs.h <<\EOF #define USE_ROOT_ACCESS 1 EOF -echo "$as_me:9936: checking if you want to permit setuid use of ncurses environment variables" >&5 +echo "$as_me:10294: checking if you want to permit setuid use of ncurses environment variables" >&5 echo $ECHO_N "checking if you want to permit setuid use of ncurses environment variables... $ECHO_C" >&6 # Check whether --enable-setuid-environ or --disable-setuid-environ was given. @@ -9943,13 +10301,22 @@ if test "${enable_setuid_environ+set}" = set; then else with_setuid_environ=$with_root_environ fi; -echo "$as_me:9946: result: $with_setuid_environ" >&5 +echo "$as_me:10304: result: $with_setuid_environ" >&5 echo "${ECHO_T}$with_setuid_environ" >&6 test "x$with_setuid_environ" = xyes && cat >>confdefs.h <<\EOF #define USE_SETUID_ENVIRON 1 EOF +else + if test -n "$enable_root_environ$enable_root_access$enable_setuid_environ" + then + { echo "$as_me:10314: WARNING: ignoring options used only for multiuser systems" >&5 +echo "$as_me: WARNING: ignoring options used only for multiuser systems" >&2;} + fi + +fi # cf_cv_multiuser + ### Use option --enable-symlinks to make tic use symlinks, not hard links ### to reduce storage requirements for the terminfo database. @@ -9958,23 +10325,23 @@ unistd.h \ do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:9961: checking for $ac_header" >&5 +echo "$as_me:10328: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 9967 "configure" +#line 10334 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:9971: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:10338: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:9977: \$? = $ac_status" >&5 + echo "$as_me:10344: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -9993,7 +10360,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:9996: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:10363: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -10008,13 +10375,13 @@ for ac_func in \ unlink do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:10011: checking for $ac_func" >&5 +echo "$as_me:10378: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 10017 "configure" +#line 10384 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -10045,16 +10412,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:10048: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10415: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10051: \$? = $ac_status" >&5 + echo "$as_me:10418: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:10054: \"$ac_try\"") >&5 + { (eval echo "$as_me:10421: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10057: \$? = $ac_status" >&5 + echo "$as_me:10424: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -10064,7 +10431,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:10067: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:10434: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -10081,13 +10448,13 @@ for ac_func in \ symlink do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:10084: checking for $ac_func" >&5 +echo "$as_me:10451: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 10090 "configure" +#line 10457 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -10118,16 +10485,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:10121: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10488: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10124: \$? = $ac_status" >&5 + echo "$as_me:10491: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:10127: \"$ac_try\"") >&5 + { (eval echo "$as_me:10494: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10130: \$? = $ac_status" >&5 + echo "$as_me:10497: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -10137,7 +10504,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:10140: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:10507: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -10148,7 +10515,7 @@ fi done else - echo "$as_me:10151: checking if link/symlink functions work" >&5 + echo "$as_me:10518: checking if link/symlink functions work" >&5 echo $ECHO_N "checking if link/symlink functions work... $ECHO_C" >&6 if test "${cf_cv_link_funcs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10161,7 +10528,7 @@ else eval 'ac_cv_func_'$cf_func'=error' else cat >"conftest.$ac_ext" <<_ACEOF -#line 10164 "configure" +#line 10531 "configure" #include "confdefs.h" $ac_includes_default @@ -10173,7 +10540,7 @@ int main(void) char dst[] = "conftest.chk"; struct stat src_sb, dst_sb; FILE *fp = fopen(src, "w"); - if (fp == 0) { fail = 3; } else { + if (fp == NULL) { fail = 3; } else { fclose(fp); stat(src, &src_sb); if ($cf_func(src, dst) < 0) { fail = 1; @@ -10195,15 +10562,15 @@ int main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:10198: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10565: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10201: \$? = $ac_status" >&5 + echo "$as_me:10568: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:10203: \"$ac_try\"") >&5 + { (eval echo "$as_me:10570: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10206: \$? = $ac_status" >&5 + echo "$as_me:10573: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_link_funcs="$cf_cv_link_funcs $cf_func" @@ -10221,7 +10588,7 @@ fi test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no fi -echo "$as_me:10224: result: $cf_cv_link_funcs" >&5 +echo "$as_me:10591: result: $cf_cv_link_funcs" >&5 echo "${ECHO_T}$cf_cv_link_funcs" >&6 test "$ac_cv_func_link" = yes && cat >>confdefs.h <<\EOF @@ -10241,7 +10608,7 @@ with_symlinks=no # soft links (symbolic links) are useful for some systems where hard links do # not work, or to make it simpler to copy terminfo trees around. if test "x$ac_cv_func_symlink" = xyes ; then - echo "$as_me:10244: checking if tic should use symbolic links" >&5 + echo "$as_me:10611: checking if tic should use symbolic links" >&5 echo $ECHO_N "checking if tic should use symbolic links... $ECHO_C" >&6 # Check whether --enable-symlinks or --disable-symlinks was given. @@ -10251,21 +10618,21 @@ if test "${enable_symlinks+set}" = set; then else with_symlinks=no fi; - echo "$as_me:10254: result: $with_symlinks" >&5 + echo "$as_me:10621: result: $with_symlinks" >&5 echo "${ECHO_T}$with_symlinks" >&6 fi # If we have hard links and did not choose to use soft links instead, there is # no reason to make this choice optional - use the hard links. if test "$with_symlinks" = no ; then - echo "$as_me:10261: checking if tic should use hard links" >&5 + echo "$as_me:10628: checking if tic should use hard links" >&5 echo $ECHO_N "checking if tic should use hard links... $ECHO_C" >&6 if test "x$ac_cv_func_link" = xyes ; then with_links=yes else with_links=no fi - echo "$as_me:10268: result: $with_links" >&5 + echo "$as_me:10635: result: $with_links" >&5 echo "${ECHO_T}$with_links" >&6 fi @@ -10281,7 +10648,7 @@ EOF ### use option --enable-broken-linker to force on use of broken-linker support -echo "$as_me:10284: checking if you want broken-linker support code" >&5 +echo "$as_me:10651: checking if you want broken-linker support code" >&5 echo $ECHO_N "checking if you want broken-linker support code... $ECHO_C" >&6 # Check whether --enable-broken_linker or --disable-broken_linker was given. @@ -10291,7 +10658,7 @@ if test "${enable_broken_linker+set}" = set; then else with_broken_linker=no fi; -echo "$as_me:10294: result: $with_broken_linker" >&5 +echo "$as_me:10661: result: $with_broken_linker" >&5 echo "${ECHO_T}$with_broken_linker" >&6 : "${BROKEN_LINKER:=0}" @@ -10305,7 +10672,7 @@ EOF fi ### use option --enable-bsdpad to have tputs process BSD-style prefix padding -echo "$as_me:10308: checking if tputs should process BSD-style prefix padding" >&5 +echo "$as_me:10675: checking if tputs should process BSD-style prefix padding" >&5 echo $ECHO_N "checking if tputs should process BSD-style prefix padding... $ECHO_C" >&6 # Check whether --enable-bsdpad or --disable-bsdpad was given. @@ -10315,7 +10682,7 @@ if test "${enable_bsdpad+set}" = set; then else with_bsdpad=no fi; -echo "$as_me:10318: result: $with_bsdpad" >&5 +echo "$as_me:10685: result: $with_bsdpad" >&5 echo "${ECHO_T}$with_bsdpad" >&6 test "x$with_bsdpad" = xyes && cat >>confdefs.h <<\EOF @@ -10334,14 +10701,14 @@ NCURSES_WINT_T=0 # Check to define _XOPEN_SOURCE "automatically" CPPFLAGS_before_XOPEN="$CPPFLAGS" -echo "$as_me:10337: checking if the POSIX test-macros are already defined" >&5 +echo "$as_me:10704: checking if the POSIX test-macros are already defined" >&5 echo $ECHO_N "checking if the POSIX test-macros are already defined... $ECHO_C" >&6 if test "${cf_cv_posix_visible+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 10344 "configure" +#line 10711 "configure" #include "confdefs.h" #include <stdio.h> int @@ -10360,16 +10727,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10363: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:10730: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10366: \$? = $ac_status" >&5 + echo "$as_me:10733: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10369: \"$ac_try\"") >&5 + { (eval echo "$as_me:10736: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10372: \$? = $ac_status" >&5 + echo "$as_me:10739: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_posix_visible=no else @@ -10380,7 +10747,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:10383: result: $cf_cv_posix_visible" >&5 +echo "$as_me:10750: result: $cf_cv_posix_visible" >&5 echo "${ECHO_T}$cf_cv_posix_visible" >&6 if test "$cf_cv_posix_visible" = no; then @@ -10418,18 +10785,18 @@ case "$host_os" in cf_xopen_source="-D_SGI_SOURCE" cf_XOPEN_SOURCE= ;; -(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) +(linux*gnu*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) cf_gnu_xopen_source=$cf_XOPEN_SOURCE -echo "$as_me:10425: checking if this is the GNU C library" >&5 +echo "$as_me:10792: checking if this is the GNU C library" >&5 echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6 if test "${cf_cv_gnu_library+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 10432 "configure" +#line 10799 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -10448,16 +10815,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10451: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:10818: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10454: \$? = $ac_status" >&5 + echo "$as_me:10821: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10457: \"$ac_try\"") >&5 + { (eval echo "$as_me:10824: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10460: \$? = $ac_status" >&5 + echo "$as_me:10827: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_gnu_library=yes else @@ -10468,7 +10835,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:10471: result: $cf_cv_gnu_library" >&5 +echo "$as_me:10838: result: $cf_cv_gnu_library" >&5 echo "${ECHO_T}$cf_cv_gnu_library" >&6 if test x$cf_cv_gnu_library = xyes; then @@ -10476,7 +10843,7 @@ if test x$cf_cv_gnu_library = xyes; then # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE # was changed to help a little. newlib incorporated the change about 4 # years later. - echo "$as_me:10479: checking if _DEFAULT_SOURCE can be used as a basis" >&5 + echo "$as_me:10846: checking if _DEFAULT_SOURCE can be used as a basis" >&5 echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6 if test "${cf_cv_gnu_library_219+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10488,7 +10855,7 @@ else CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" cat >"conftest.$ac_ext" <<_ACEOF -#line 10491 "configure" +#line 10858 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -10507,16 +10874,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10510: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:10877: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10513: \$? = $ac_status" >&5 + echo "$as_me:10880: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10516: \"$ac_try\"") >&5 + { (eval echo "$as_me:10883: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10519: \$? = $ac_status" >&5 + echo "$as_me:10886: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_gnu_library_219=yes else @@ -10528,12 +10895,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" CPPFLAGS="$cf_save" fi -echo "$as_me:10531: result: $cf_cv_gnu_library_219" >&5 +echo "$as_me:10898: result: $cf_cv_gnu_library_219" >&5 echo "${ECHO_T}$cf_cv_gnu_library_219" >&6 if test "x$cf_cv_gnu_library_219" = xyes; then cf_save="$CPPFLAGS" - echo "$as_me:10536: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5 + echo "$as_me:10903: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5 echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6 if test "${cf_cv_gnu_dftsrc_219+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10638,7 +11005,7 @@ if test -n "$cf_new_extra_cppflags" ; then fi cat >"conftest.$ac_ext" <<_ACEOF -#line 10641 "configure" +#line 11008 "configure" #include "confdefs.h" #include <limits.h> @@ -10658,16 +11025,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10661: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11028: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10664: \$? = $ac_status" >&5 + echo "$as_me:11031: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10667: \"$ac_try\"") >&5 + { (eval echo "$as_me:11034: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10670: \$? = $ac_status" >&5 + echo "$as_me:11037: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_gnu_dftsrc_219=yes else @@ -10678,7 +11045,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:10681: result: $cf_cv_gnu_dftsrc_219" >&5 +echo "$as_me:11048: result: $cf_cv_gnu_dftsrc_219" >&5 echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" else @@ -10687,14 +11054,14 @@ echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6 if test "x$cf_cv_gnu_dftsrc_219" != xyes; then - echo "$as_me:10690: checking if we must define _GNU_SOURCE" >&5 + echo "$as_me:11057: checking if we must define _GNU_SOURCE" >&5 echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6 if test "${cf_cv_gnu_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 10697 "configure" +#line 11064 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -10709,16 +11076,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10712: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11079: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10715: \$? = $ac_status" >&5 + echo "$as_me:11082: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10718: \"$ac_try\"") >&5 + { (eval echo "$as_me:11085: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10721: \$? = $ac_status" >&5 + echo "$as_me:11088: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_gnu_source=no else @@ -10825,7 +11192,7 @@ if test -n "$cf_new_extra_cppflags" ; then fi cat >"conftest.$ac_ext" <<_ACEOF -#line 10828 "configure" +#line 11195 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -10840,16 +11207,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10843: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11210: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10846: \$? = $ac_status" >&5 + echo "$as_me:11213: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10849: \"$ac_try\"") >&5 + { (eval echo "$as_me:11216: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10852: \$? = $ac_status" >&5 + echo "$as_me:11219: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_gnu_source=no else @@ -10864,12 +11231,12 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:10867: result: $cf_cv_gnu_source" >&5 +echo "$as_me:11234: result: $cf_cv_gnu_source" >&5 echo "${ECHO_T}$cf_cv_gnu_source" >&6 if test "$cf_cv_gnu_source" = yes then - echo "$as_me:10872: checking if we should also define _DEFAULT_SOURCE" >&5 + echo "$as_me:11239: checking if we should also define _DEFAULT_SOURCE" >&5 echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6 if test "${cf_cv_default_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10879,7 +11246,7 @@ else CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE" cat >"conftest.$ac_ext" <<_ACEOF -#line 10882 "configure" +#line 11249 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -10894,16 +11261,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10897: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11264: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10900: \$? = $ac_status" >&5 + echo "$as_me:11267: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10903: \"$ac_try\"") >&5 + { (eval echo "$as_me:11270: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10906: \$? = $ac_status" >&5 + echo "$as_me:11273: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_default_source=no else @@ -10914,7 +11281,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:10917: result: $cf_cv_default_source" >&5 +echo "$as_me:11284: result: $cf_cv_default_source" >&5 echo "${ECHO_T}$cf_cv_default_source" >&6 if test "$cf_cv_default_source" = yes then @@ -10929,6 +11296,9 @@ echo "${ECHO_T}$cf_cv_default_source" >&6 fi ;; +linux*musl) + cf_xopen_source="-D_BSD_SOURCE" + ;; (minix*) cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... ;; @@ -10951,16 +11321,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` -echo "$as_me:10954: checking if we should define _POSIX_C_SOURCE" >&5 +echo "$as_me:11324: checking if we should define _POSIX_C_SOURCE" >&5 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6 if test "${cf_cv_posix_c_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -echo "${as_me:-configure}:10960: testing if the symbol is already defined go no further ..." 1>&5 +echo "${as_me:-configure}:11330: testing if the symbol is already defined go no further ..." 1>&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 10963 "configure" +#line 11333 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -10975,16 +11345,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:10978: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11348: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10981: \$? = $ac_status" >&5 + echo "$as_me:11351: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:10984: \"$ac_try\"") >&5 + { (eval echo "$as_me:11354: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10987: \$? = $ac_status" >&5 + echo "$as_me:11357: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_posix_c_source=no else @@ -11005,7 +11375,7 @@ cf_want_posix_source=no esac if test "$cf_want_posix_source" = yes ; then cat >"conftest.$ac_ext" <<_ACEOF -#line 11008 "configure" +#line 11378 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -11020,16 +11390,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11023: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11393: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11026: \$? = $ac_status" >&5 + echo "$as_me:11396: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11029: \"$ac_try\"") >&5 + { (eval echo "$as_me:11399: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11032: \$? = $ac_status" >&5 + echo "$as_me:11402: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -11040,7 +11410,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "${as_me:-configure}:11043: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 +echo "${as_me:-configure}:11413: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 CFLAGS="$cf_trim_CFLAGS" CPPFLAGS="$cf_trim_CPPFLAGS" @@ -11048,10 +11418,10 @@ echo "${as_me:-configure}:11043: testing ifdef from value $cf_POSIX_C_SOURCE ... test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" -echo "${as_me:-configure}:11051: testing if the second compile does not leave our definition intact error ..." 1>&5 +echo "${as_me:-configure}:11421: testing if the second compile does not leave our definition intact error ..." 1>&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 11054 "configure" +#line 11424 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -11066,16 +11436,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11069: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11439: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11072: \$? = $ac_status" >&5 + echo "$as_me:11442: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11075: \"$ac_try\"") >&5 + { (eval echo "$as_me:11445: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11078: \$? = $ac_status" >&5 + echo "$as_me:11448: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -11091,7 +11461,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:11094: result: $cf_cv_posix_c_source" >&5 +echo "$as_me:11464: result: $cf_cv_posix_c_source" >&5 echo "${ECHO_T}$cf_cv_posix_c_source" >&6 if test "$cf_cv_posix_c_source" != no ; then @@ -11208,7 +11578,7 @@ fi # cf_cv_posix_visible # OpenBSD 6.x has broken locale support, both compile-time and runtime. # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html # Abusing the conformance level is a workaround. - { echo "$as_me:11211: WARNING: this system does not provide usable locale support" >&5 + { echo "$as_me:11581: WARNING: this system does not provide usable locale support" >&5 echo "$as_me: WARNING: this system does not provide usable locale support" >&2;} cf_xopen_source="-D_BSD_SOURCE" cf_XOPEN_SOURCE=700 @@ -11240,14 +11610,14 @@ echo "$as_me: WARNING: this system does not provide usable locale support" >&2;} ;; (*) -echo "$as_me:11243: checking if we should define _XOPEN_SOURCE" >&5 +echo "$as_me:11613: checking if we should define _XOPEN_SOURCE" >&5 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6 if test "${cf_cv_xopen_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 11250 "configure" +#line 11620 "configure" #include "confdefs.h" $ac_includes_default @@ -11265,16 +11635,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11268: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11638: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11271: \$? = $ac_status" >&5 + echo "$as_me:11641: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11274: \"$ac_try\"") >&5 + { (eval echo "$as_me:11644: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11277: \$? = $ac_status" >&5 + echo "$as_me:11647: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_xopen_source=no else @@ -11286,7 +11656,7 @@ cf_save="$CPPFLAGS" CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" cat >"conftest.$ac_ext" <<_ACEOF -#line 11289 "configure" +#line 11659 "configure" #include "confdefs.h" $ac_includes_default @@ -11304,16 +11674,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11307: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11677: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11310: \$? = $ac_status" >&5 + echo "$as_me:11680: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11313: \"$ac_try\"") >&5 + { (eval echo "$as_me:11683: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11316: \$? = $ac_status" >&5 + echo "$as_me:11686: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_xopen_source=no else @@ -11328,7 +11698,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:11331: result: $cf_cv_xopen_source" >&5 +echo "$as_me:11701: result: $cf_cv_xopen_source" >&5 echo "${ECHO_T}$cf_cv_xopen_source" >&6 if test "$cf_cv_xopen_source" != no ; then @@ -11488,16 +11858,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` -echo "$as_me:11491: checking if we should define _POSIX_C_SOURCE" >&5 +echo "$as_me:11861: checking if we should define _POSIX_C_SOURCE" >&5 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6 if test "${cf_cv_posix_c_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -echo "${as_me:-configure}:11497: testing if the symbol is already defined go no further ..." 1>&5 +echo "${as_me:-configure}:11867: testing if the symbol is already defined go no further ..." 1>&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 11500 "configure" +#line 11870 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -11512,16 +11882,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11515: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11885: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11518: \$? = $ac_status" >&5 + echo "$as_me:11888: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11521: \"$ac_try\"") >&5 + { (eval echo "$as_me:11891: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11524: \$? = $ac_status" >&5 + echo "$as_me:11894: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_posix_c_source=no else @@ -11542,7 +11912,7 @@ cf_want_posix_source=no esac if test "$cf_want_posix_source" = yes ; then cat >"conftest.$ac_ext" <<_ACEOF -#line 11545 "configure" +#line 11915 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -11557,16 +11927,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11560: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11930: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11563: \$? = $ac_status" >&5 + echo "$as_me:11933: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11566: \"$ac_try\"") >&5 + { (eval echo "$as_me:11936: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11569: \$? = $ac_status" >&5 + echo "$as_me:11939: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -11577,7 +11947,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "${as_me:-configure}:11580: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 +echo "${as_me:-configure}:11950: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 CFLAGS="$cf_trim_CFLAGS" CPPFLAGS="$cf_trim_CPPFLAGS" @@ -11585,10 +11955,10 @@ echo "${as_me:-configure}:11580: testing ifdef from value $cf_POSIX_C_SOURCE ... test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" -echo "${as_me:-configure}:11588: testing if the second compile does not leave our definition intact error ..." 1>&5 +echo "${as_me:-configure}:11958: testing if the second compile does not leave our definition intact error ..." 1>&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 11591 "configure" +#line 11961 "configure" #include "confdefs.h" #include <sys/types.h> int @@ -11603,16 +11973,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11606: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11976: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11609: \$? = $ac_status" >&5 + echo "$as_me:11979: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11612: \"$ac_try\"") >&5 + { (eval echo "$as_me:11982: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11615: \$? = $ac_status" >&5 + echo "$as_me:11985: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -11628,7 +11998,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:11631: result: $cf_cv_posix_c_source" >&5 +echo "$as_me:12001: result: $cf_cv_posix_c_source" >&5 echo "${ECHO_T}$cf_cv_posix_c_source" >&6 if test "$cf_cv_posix_c_source" != no ; then @@ -11741,10 +12111,10 @@ fi # cf_cv_posix_visible if test "$cf_cv_xopen_source" = no ; then test -n "$verbose" && echo " checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE" 1>&6 -echo "${as_me:-configure}:11744: testing checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE ..." 1>&5 +echo "${as_me:-configure}:12114: testing checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE ..." 1>&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 11747 "configure" +#line 12117 "configure" #include "confdefs.h" $ac_includes_default @@ -11762,23 +12132,23 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11765: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12135: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11768: \$? = $ac_status" >&5 + echo "$as_me:12138: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11771: \"$ac_try\"") >&5 + { (eval echo "$as_me:12141: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11774: \$? = $ac_status" >&5 + echo "$as_me:12144: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 - { echo "$as_me:11781: WARNING: _POSIX_C_SOURCE definition is not usable" >&5 + { echo "$as_me:12151: WARNING: _POSIX_C_SOURCE definition is not usable" >&5 echo "$as_me: WARNING: _POSIX_C_SOURCE definition is not usable" >&2;} CPPFLAGS="$cf_save_xopen_cppflags" fi @@ -11801,7 +12171,7 @@ do test "$CFLAGS" != "$cf_old_cflag" || break test -n "$verbose" && echo " removing old option $cf_add_cflags from CFLAGS" 1>&6 -echo "${as_me:-configure}:11804: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5 +echo "${as_me:-configure}:12174: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5 CFLAGS="$cf_old_cflag" done @@ -11813,7 +12183,7 @@ do test "$CPPFLAGS" != "$cf_old_cflag" || break test -n "$verbose" && echo " removing old option $cf_add_cflags from CPPFLAGS" 1>&6 -echo "${as_me:-configure}:11816: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5 +echo "${as_me:-configure}:12186: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5 CPPFLAGS="$cf_old_cflag" done @@ -11901,7 +12271,7 @@ done if test -n "$cf_new_cflags" ; then test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 -echo "${as_me:-configure}:11904: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 +echo "${as_me:-configure}:12274: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 test -n "$CFLAGS" && CFLAGS="$CFLAGS " CFLAGS="${CFLAGS}$cf_new_cflags" @@ -11911,7 +12281,7 @@ fi if test -n "$cf_new_cppflags" ; then test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 -echo "${as_me:-configure}:11914: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 +echo "${as_me:-configure}:12284: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" @@ -11921,7 +12291,7 @@ fi if test -n "$cf_new_extra_cppflags" ; then test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6 -echo "${as_me:-configure}:11924: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5 +echo "${as_me:-configure}:12294: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5 test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" @@ -11933,10 +12303,10 @@ done fi if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then - echo "$as_me:11936: checking if _XOPEN_SOURCE really is set" >&5 + echo "$as_me:12306: checking if _XOPEN_SOURCE really is set" >&5 echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 11939 "configure" +#line 12309 "configure" #include "confdefs.h" #include <stdlib.h> int @@ -11951,16 +12321,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11954: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12324: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11957: \$? = $ac_status" >&5 + echo "$as_me:12327: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11960: \"$ac_try\"") >&5 + { (eval echo "$as_me:12330: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11963: \$? = $ac_status" >&5 + echo "$as_me:12333: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_XOPEN_SOURCE_set=yes else @@ -11969,12 +12339,12 @@ cat "conftest.$ac_ext" >&5 cf_XOPEN_SOURCE_set=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" - echo "$as_me:11972: result: $cf_XOPEN_SOURCE_set" >&5 + echo "$as_me:12342: result: $cf_XOPEN_SOURCE_set" >&5 echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6 if test "$cf_XOPEN_SOURCE_set" = yes then cat >"conftest.$ac_ext" <<_ACEOF -#line 11977 "configure" +#line 12347 "configure" #include "confdefs.h" #include <stdlib.h> int @@ -11989,16 +12359,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:11992: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12362: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11995: \$? = $ac_status" >&5 + echo "$as_me:12365: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:11998: \"$ac_try\"") >&5 + { (eval echo "$as_me:12368: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12001: \$? = $ac_status" >&5 + echo "$as_me:12371: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_XOPEN_SOURCE_set_ok=yes else @@ -12009,19 +12379,19 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" if test "$cf_XOPEN_SOURCE_set_ok" = no then - { echo "$as_me:12012: WARNING: _XOPEN_SOURCE is lower than requested" >&5 + { echo "$as_me:12382: WARNING: _XOPEN_SOURCE is lower than requested" >&5 echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;} fi else -echo "$as_me:12017: checking if we should define _XOPEN_SOURCE" >&5 +echo "$as_me:12387: checking if we should define _XOPEN_SOURCE" >&5 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6 if test "${cf_cv_xopen_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 12024 "configure" +#line 12394 "configure" #include "confdefs.h" $ac_includes_default @@ -12039,16 +12409,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12042: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12412: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12045: \$? = $ac_status" >&5 + echo "$as_me:12415: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12048: \"$ac_try\"") >&5 + { (eval echo "$as_me:12418: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12051: \$? = $ac_status" >&5 + echo "$as_me:12421: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_xopen_source=no else @@ -12060,7 +12430,7 @@ cf_save="$CPPFLAGS" CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" cat >"conftest.$ac_ext" <<_ACEOF -#line 12063 "configure" +#line 12433 "configure" #include "confdefs.h" $ac_includes_default @@ -12078,16 +12448,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12081: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12451: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12084: \$? = $ac_status" >&5 + echo "$as_me:12454: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12087: \"$ac_try\"") >&5 + { (eval echo "$as_me:12457: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12090: \$? = $ac_status" >&5 + echo "$as_me:12460: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_xopen_source=no else @@ -12102,7 +12472,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:12105: result: $cf_cv_xopen_source" >&5 +echo "$as_me:12475: result: $cf_cv_xopen_source" >&5 echo "${ECHO_T}$cf_cv_xopen_source" >&6 if test "$cf_cv_xopen_source" != no ; then @@ -12253,14 +12623,14 @@ CPPFLAGS_after_XOPEN="$CPPFLAGS" # Work around breakage on OS X -echo "$as_me:12256: checking if SIGWINCH is defined" >&5 +echo "$as_me:12626: checking if SIGWINCH is defined" >&5 echo $ECHO_N "checking if SIGWINCH is defined... $ECHO_C" >&6 if test "${cf_cv_define_sigwinch+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 12263 "configure" +#line 12633 "configure" #include "confdefs.h" #include <sys/types.h> @@ -12275,23 +12645,23 @@ int x = SIGWINCH; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12278: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12648: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12281: \$? = $ac_status" >&5 + echo "$as_me:12651: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12284: \"$ac_try\"") >&5 + { (eval echo "$as_me:12654: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12287: \$? = $ac_status" >&5 + echo "$as_me:12657: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_define_sigwinch=yes else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 12294 "configure" +#line 12664 "configure" #include "confdefs.h" #undef _XOPEN_SOURCE @@ -12309,16 +12679,16 @@ int x = SIGWINCH; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12312: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12682: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12315: \$? = $ac_status" >&5 + echo "$as_me:12685: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12318: \"$ac_try\"") >&5 + { (eval echo "$as_me:12688: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12321: \$? = $ac_status" >&5 + echo "$as_me:12691: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_define_sigwinch=maybe else @@ -12332,11 +12702,11 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:12335: result: $cf_cv_define_sigwinch" >&5 +echo "$as_me:12705: result: $cf_cv_define_sigwinch" >&5 echo "${ECHO_T}$cf_cv_define_sigwinch" >&6 if test "$cf_cv_define_sigwinch" = maybe ; then -echo "$as_me:12339: checking for actual SIGWINCH definition" >&5 +echo "$as_me:12709: checking for actual SIGWINCH definition" >&5 echo $ECHO_N "checking for actual SIGWINCH definition... $ECHO_C" >&6 if test "${cf_cv_fixup_sigwinch+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -12347,7 +12717,7 @@ cf_sigwinch=32 while test "$cf_sigwinch" != 1 do cat >"conftest.$ac_ext" <<_ACEOF -#line 12350 "configure" +#line 12720 "configure" #include "confdefs.h" #undef _XOPEN_SOURCE @@ -12369,16 +12739,16 @@ int x = SIGWINCH; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12372: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12742: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12375: \$? = $ac_status" >&5 + echo "$as_me:12745: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12378: \"$ac_try\"") >&5 + { (eval echo "$as_me:12748: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12381: \$? = $ac_status" >&5 + echo "$as_me:12751: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_fixup_sigwinch=$cf_sigwinch break @@ -12392,7 +12762,7 @@ cf_sigwinch="`expr "$cf_sigwinch" - 1`" done fi -echo "$as_me:12395: result: $cf_cv_fixup_sigwinch" >&5 +echo "$as_me:12765: result: $cf_cv_fixup_sigwinch" >&5 echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6 if test "$cf_cv_fixup_sigwinch" != unknown ; then @@ -12402,13 +12772,13 @@ fi # Checks for CODESET support. -echo "$as_me:12405: checking for nl_langinfo and CODESET" >&5 +echo "$as_me:12775: checking for nl_langinfo and CODESET" >&5 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${am_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 12411 "configure" +#line 12781 "configure" #include "confdefs.h" $ac_includes_default @@ -12422,16 +12792,16 @@ char* cs = nl_langinfo(CODESET); (void)cs } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:12425: \"$ac_link\"") >&5 +if { (eval echo "$as_me:12795: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:12428: \$? = $ac_status" >&5 + echo "$as_me:12798: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:12431: \"$ac_try\"") >&5 + { (eval echo "$as_me:12801: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12434: \$? = $ac_status" >&5 + echo "$as_me:12804: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then am_cv_langinfo_codeset=yes else @@ -12442,7 +12812,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:12445: result: $am_cv_langinfo_codeset" >&5 +echo "$as_me:12815: result: $am_cv_langinfo_codeset" >&5 echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 if test "$am_cv_langinfo_codeset" = yes; then @@ -12456,7 +12826,7 @@ EOF NCURSES_OK_WCHAR_T= NCURSES_OK_WINT_T= -echo "$as_me:12459: checking if you want wide-character code" >&5 +echo "$as_me:12829: checking if you want wide-character code" >&5 echo $ECHO_N "checking if you want wide-character code... $ECHO_C" >&6 # Check whether --enable-widec or --disable-widec was given. @@ -12466,7 +12836,7 @@ if test "${enable_widec+set}" = set; then else with_widec=$cf_dft_widec fi; -echo "$as_me:12469: result: $with_widec" >&5 +echo "$as_me:12839: result: $with_widec" >&5 echo "${ECHO_T}$with_widec" >&6 NCURSES_WCWIDTH_GRAPHICS=1 @@ -12488,7 +12858,7 @@ EOF (*_XOPEN_SOURCE=*) ;; (*) - { echo "$as_me:12491: WARNING: _XOPEN_SOURCE feature test macro appears to be predefined" >&5 + { echo "$as_me:12861: WARNING: _XOPEN_SOURCE feature test macro appears to be predefined" >&5 echo "$as_me: WARNING: _XOPEN_SOURCE feature test macro appears to be predefined" >&2;} # CPPFLAGS="$CPPFLAGS -DNCURSES_WIDECHAR" CPPFLAGS_after_XOPEN="$CPPFLAGS_after_XOPEN -DNCURSES_WIDECHAR" @@ -12501,23 +12871,23 @@ wctype.h \ do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:12504: checking for $ac_header" >&5 +echo "$as_me:12874: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 12510 "configure" +#line 12880 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:12514: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:12884: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:12520: \$? = $ac_status" >&5 + echo "$as_me:12890: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -12536,7 +12906,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:12539: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:12909: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -12546,14 +12916,14 @@ EOF fi done -echo "$as_me:12549: checking if wchar.h can be used as is" >&5 +echo "$as_me:12919: checking if wchar.h can be used as is" >&5 echo $ECHO_N "checking if wchar.h can be used as is... $ECHO_C" >&6 if test "${cf_cv_wchar_h_okay+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 12556 "configure" +#line 12926 "configure" #include "confdefs.h" $ac_includes_default @@ -12575,16 +12945,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12578: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12948: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12581: \$? = $ac_status" >&5 + echo "$as_me:12951: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12584: \"$ac_try\"") >&5 + { (eval echo "$as_me:12954: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12587: \$? = $ac_status" >&5 + echo "$as_me:12957: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_wchar_h_okay=yes else @@ -12594,16 +12964,16 @@ cf_cv_wchar_h_okay=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:12597: result: $cf_cv_wchar_h_okay" >&5 +echo "$as_me:12967: result: $cf_cv_wchar_h_okay" >&5 echo "${ECHO_T}$cf_cv_wchar_h_okay" >&6 if test "$cf_cv_wchar_h_okay" = no then -echo "$as_me:12603: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5 +echo "$as_me:12973: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5 echo $ECHO_N "checking if we must define _XOPEN_SOURCE_EXTENDED... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 12606 "configure" +#line 12976 "configure" #include "confdefs.h" #include <sys/types.h> @@ -12619,16 +12989,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12622: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:12992: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12625: \$? = $ac_status" >&5 + echo "$as_me:12995: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12628: \"$ac_try\"") >&5 + { (eval echo "$as_me:12998: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12631: \$? = $ac_status" >&5 + echo "$as_me:13001: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_result=no else @@ -12637,16 +13007,16 @@ cat "conftest.$ac_ext" >&5 cf_result=yes fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" -echo "$as_me:12640: result: $cf_result" >&5 +echo "$as_me:13010: result: $cf_result" >&5 echo "${ECHO_T}$cf_result" >&6 if test "$cf_result" = yes ; then CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" elif test "x" != "x" ; then - echo "$as_me:12646: checking checking for compatible value versus " >&5 + echo "$as_me:13016: checking checking for compatible value versus " >&5 echo $ECHO_N "checking checking for compatible value versus ... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 12649 "configure" +#line 13019 "configure" #include "confdefs.h" #include <sys/types.h> @@ -12662,16 +13032,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:12665: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:13035: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:12668: \$? = $ac_status" >&5 + echo "$as_me:13038: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:12671: \"$ac_try\"") >&5 + { (eval echo "$as_me:13041: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12674: \$? = $ac_status" >&5 + echo "$as_me:13044: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_result=yes else @@ -12680,7 +13050,7 @@ cat "conftest.$ac_ext" >&5 cf_result=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" - echo "$as_me:12683: result: $cf_result" >&5 + echo "$as_me:13053: result: $cf_result" >&5 echo "${ECHO_T}$cf_result" >&6 if test "$cf_result" = no ; then # perhaps we can override it - try... @@ -12690,7 +13060,7 @@ fi fi -echo "$as_me:12693: checking if wcwidth agrees graphics are single-width" >&5 +echo "$as_me:13063: checking if wcwidth agrees graphics are single-width" >&5 echo $ECHO_N "checking if wcwidth agrees graphics are single-width... $ECHO_C" >&6 if test "${cf_cv_wcwidth_graphics+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -12761,7 +13131,7 @@ if test "$cross_compiling" = yes; then cf_cv_wcwidth_graphics=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 12764 "configure" +#line 13134 "configure" #include "confdefs.h" $ac_includes_default @@ -12785,8 +13155,8 @@ main(void) setlocale(LC_ALL, "en_US.UTF-8") || setlocale(LC_ALL, "en_US.utf8") || setlocale(LC_ALL, "en_US.utf-8")) { - if ((fp = fopen("conftest.in", "r")) != 0) { - while (fgets(buffer, MY_LEN, fp) != 0) { + if ((fp = fopen("conftest.in", "r")) != NULL) { + while (fgets(buffer, MY_LEN, fp) != NULL) { if (*buffer == '-') { fprintf(stderr, "\\t%s", buffer); } else if (sscanf(buffer, "%x %s", &value, notes) == 2) { @@ -12806,15 +13176,15 @@ main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:12809: \"$ac_link\"") >&5 +if { (eval echo "$as_me:13179: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:12812: \$? = $ac_status" >&5 + echo "$as_me:13182: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:12814: \"$ac_try\"") >&5 + { (eval echo "$as_me:13184: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12817: \$? = $ac_status" >&5 + echo "$as_me:13187: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_wcwidth_graphics=yes else @@ -12827,7 +13197,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes fi fi -echo "$as_me:12830: result: $cf_cv_wcwidth_graphics" >&5 +echo "$as_me:13200: result: $cf_cv_wcwidth_graphics" >&5 echo "${ECHO_T}$cf_cv_wcwidth_graphics" >&6 test "$cf_cv_wcwidth_graphics" = no && NCURSES_WCWIDTH_GRAPHICS=0 @@ -12835,16 +13205,16 @@ echo "${ECHO_T}$cf_cv_wcwidth_graphics" >&6 # with_overwrite=no NCURSES_CH_T=cchar_t -for ac_func in putwc btowc wctob wmemchr mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs +for ac_func in putwc btowc wctob wmemchr mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs wcwidth do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:12841: checking for $ac_func" >&5 +echo "$as_me:13211: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 12847 "configure" +#line 13217 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -12875,16 +13245,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:12878: \"$ac_link\"") >&5 +if { (eval echo "$as_me:13248: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:12881: \$? = $ac_status" >&5 + echo "$as_me:13251: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:12884: \"$ac_try\"") >&5 + { (eval echo "$as_me:13254: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12887: \$? = $ac_status" >&5 + echo "$as_me:13257: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -12894,7 +13264,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:12897: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:13267: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -12909,23 +13279,23 @@ done for ac_header in wchar.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:12912: checking for $ac_header" >&5 +echo "$as_me:13282: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 12918 "configure" +#line 13288 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:12922: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:13292: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:12928: \$? = $ac_status" >&5 + echo "$as_me:13298: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -12944,7 +13314,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:12947: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:13317: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -12954,7 +13324,7 @@ EOF fi done -echo "$as_me:12957: checking for multibyte character support" >&5 +echo "$as_me:13327: checking for multibyte character support" >&5 echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6 if test "${cf_cv_utf8_lib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -12962,7 +13332,7 @@ else cf_save_LIBS="$LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 12965 "configure" +#line 13335 "configure" #include "confdefs.h" $ac_includes_default @@ -12979,16 +13349,16 @@ putwc(0,0); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:12982: \"$ac_link\"") >&5 +if { (eval echo "$as_me:13352: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:12985: \$? = $ac_status" >&5 + echo "$as_me:13355: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:12988: \"$ac_try\"") >&5 + { (eval echo "$as_me:13358: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:12991: \$? = $ac_status" >&5 + echo "$as_me:13361: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_utf8_lib=yes else @@ -12996,16 +13366,16 @@ else cat "conftest.$ac_ext" >&5 # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these -# will be set on completion of the AC_TRY_LINK below. +# will be set on completion of the AC_LINK_IFELSE below. cf_cv_header_path_utf8= cf_cv_library_path_utf8= -echo "${as_me:-configure}:13003: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 +echo "${as_me:-configure}:13373: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 cf_save_LIBS="$LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 13008 "configure" +#line 13378 "configure" #include "confdefs.h" #include <libutf8.h> @@ -13018,16 +13388,16 @@ putwc(0,0); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:13021: \"$ac_link\"") >&5 +if { (eval echo "$as_me:13391: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:13024: \$? = $ac_status" >&5 + echo "$as_me:13394: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:13027: \"$ac_try\"") >&5 + { (eval echo "$as_me:13397: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13030: \$? = $ac_status" >&5 + echo "$as_me:13400: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_find_linkage_utf8=yes @@ -13041,7 +13411,7 @@ cat "conftest.$ac_ext" >&5 LIBS="-lutf8 $cf_save_LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 13044 "configure" +#line 13414 "configure" #include "confdefs.h" #include <libutf8.h> @@ -13054,16 +13424,16 @@ putwc(0,0); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:13057: \"$ac_link\"") >&5 +if { (eval echo "$as_me:13427: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:13060: \$? = $ac_status" >&5 + echo "$as_me:13430: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:13063: \"$ac_try\"") >&5 + { (eval echo "$as_me:13433: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13066: \$? = $ac_status" >&5 + echo "$as_me:13436: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_find_linkage_utf8=yes @@ -13080,9 +13450,9 @@ cat "conftest.$ac_ext" >&5 test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 -echo "${as_me:-configure}:13083: testing find linkage for utf8 library ..." 1>&5 +echo "${as_me:-configure}:13453: testing find linkage for utf8 library ..." 1>&5 -echo "${as_me:-configure}:13085: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 +echo "${as_me:-configure}:13455: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 cf_save_CPPFLAGS="$CPPFLAGS" cf_test_CPPFLAGS="$CPPFLAGS" @@ -13173,7 +13543,7 @@ cf_search="$cf_search $cf_header_path_list" if test -d "$cf_cv_header_path_utf8" ; then test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6 -echo "${as_me:-configure}:13176: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 +echo "${as_me:-configure}:13546: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 CPPFLAGS="$cf_save_CPPFLAGS" @@ -13181,7 +13551,7 @@ echo "${as_me:-configure}:13176: testing ... testing $cf_cv_header_path_utf8 ... CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8" cat >"conftest.$ac_ext" <<_ACEOF -#line 13184 "configure" +#line 13554 "configure" #include "confdefs.h" #include <libutf8.h> @@ -13194,21 +13564,21 @@ putwc(0,0); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13197: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:13567: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13200: \$? = $ac_status" >&5 + echo "$as_me:13570: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13203: \"$ac_try\"") >&5 + { (eval echo "$as_me:13573: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13206: \$? = $ac_status" >&5 + echo "$as_me:13576: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6 -echo "${as_me:-configure}:13211: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 +echo "${as_me:-configure}:13581: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 cf_cv_find_linkage_utf8=maybe cf_test_CPPFLAGS="$CPPFLAGS" @@ -13226,7 +13596,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" if test "$cf_cv_find_linkage_utf8" = maybe ; then -echo "${as_me:-configure}:13229: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 +echo "${as_me:-configure}:13599: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 cf_save_LIBS="$LIBS" cf_save_LDFLAGS="$LDFLAGS" @@ -13301,13 +13671,13 @@ cf_search="$cf_library_path_list $cf_search" if test -d "$cf_cv_library_path_utf8" ; then test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6 -echo "${as_me:-configure}:13304: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5 +echo "${as_me:-configure}:13674: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5 CPPFLAGS="$cf_test_CPPFLAGS" LIBS="-lutf8 $cf_save_LIBS" LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8" cat >"conftest.$ac_ext" <<_ACEOF -#line 13310 "configure" +#line 13680 "configure" #include "confdefs.h" #include <libutf8.h> @@ -13320,21 +13690,21 @@ putwc(0,0); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:13323: \"$ac_link\"") >&5 +if { (eval echo "$as_me:13693: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:13326: \$? = $ac_status" >&5 + echo "$as_me:13696: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:13329: \"$ac_try\"") >&5 + { (eval echo "$as_me:13699: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13332: \$? = $ac_status" >&5 + echo "$as_me:13702: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6 -echo "${as_me:-configure}:13337: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 +echo "${as_me:-configure}:13707: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 cf_cv_find_linkage_utf8=yes cf_cv_library_file_utf8="-lutf8" @@ -13376,7 +13746,7 @@ fi fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:13379: result: $cf_cv_utf8_lib" >&5 +echo "$as_me:13749: result: $cf_cv_utf8_lib" >&5 echo "${ECHO_T}$cf_cv_utf8_lib" >&6 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between @@ -13414,7 +13784,7 @@ if test -n "$cf_cv_header_path_utf8" ; then CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" cat >"conftest.$ac_ext" <<_ACEOF -#line 13417 "configure" +#line 13787 "configure" #include "confdefs.h" #include <stdio.h> int @@ -13426,16 +13796,16 @@ printf("Hello") } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13429: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:13799: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13432: \$? = $ac_status" >&5 + echo "$as_me:13802: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13435: \"$ac_try\"") >&5 + { (eval echo "$as_me:13805: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13438: \$? = $ac_status" >&5 + echo "$as_me:13808: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -13452,7 +13822,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" if test "$cf_have_incdir" = no ; then test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 -echo "${as_me:-configure}:13455: testing adding $cf_add_incdir to include-path ..." 1>&5 +echo "${as_me:-configure}:13825: testing adding $cf_add_incdir to include-path ..." 1>&5 CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" @@ -13488,7 +13858,7 @@ if test -n "$cf_cv_library_path_utf8" ; then if test "$cf_have_libdir" = no ; then test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 -echo "${as_me:-configure}:13491: testing adding $cf_add_libdir to library-path ..." 1>&5 +echo "${as_me:-configure}:13861: testing adding $cf_add_libdir to library-path ..." 1>&5 LDFLAGS="-L$cf_add_libdir $LDFLAGS" fi @@ -13520,14 +13890,14 @@ fi fi # This is needed on Tru64 5.0 to declare mbstate_t -echo "$as_me:13523: checking if we must include wchar.h to declare mbstate_t" >&5 +echo "$as_me:13893: checking if we must include wchar.h to declare mbstate_t" >&5 echo $ECHO_N "checking if we must include wchar.h to declare mbstate_t... $ECHO_C" >&6 if test "${cf_cv_mbstate_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 13530 "configure" +#line 13900 "configure" #include "confdefs.h" #include <stdlib.h> @@ -13545,23 +13915,23 @@ mbstate_t state; (void)state } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13548: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:13918: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13551: \$? = $ac_status" >&5 + echo "$as_me:13921: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13554: \"$ac_try\"") >&5 + { (eval echo "$as_me:13924: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13557: \$? = $ac_status" >&5 + echo "$as_me:13927: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_mbstate_t=no else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 13564 "configure" +#line 13934 "configure" #include "confdefs.h" #include <stdlib.h> @@ -13580,16 +13950,16 @@ mbstate_t value; (void) value } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13583: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:13953: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13586: \$? = $ac_status" >&5 + echo "$as_me:13956: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13589: \"$ac_try\"") >&5 + { (eval echo "$as_me:13959: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13592: \$? = $ac_status" >&5 + echo "$as_me:13962: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_mbstate_t=yes else @@ -13601,7 +13971,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:13604: result: $cf_cv_mbstate_t" >&5 +echo "$as_me:13974: result: $cf_cv_mbstate_t" >&5 echo "${ECHO_T}$cf_cv_mbstate_t" >&6 if test "$cf_cv_mbstate_t" = yes ; then @@ -13619,14 +13989,14 @@ if test "$cf_cv_mbstate_t" = unknown ; then fi # This is needed on Tru64 5.0 to declare wchar_t -echo "$as_me:13622: checking if we must include wchar.h to declare wchar_t" >&5 +echo "$as_me:13992: checking if we must include wchar.h to declare wchar_t" >&5 echo $ECHO_N "checking if we must include wchar.h to declare wchar_t... $ECHO_C" >&6 if test "${cf_cv_wchar_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 13629 "configure" +#line 13999 "configure" #include "confdefs.h" #include <stdlib.h> @@ -13644,23 +14014,23 @@ wchar_t state; (void)state } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13647: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14017: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13650: \$? = $ac_status" >&5 + echo "$as_me:14020: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13653: \"$ac_try\"") >&5 + { (eval echo "$as_me:14023: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13656: \$? = $ac_status" >&5 + echo "$as_me:14026: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_wchar_t=no else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 13663 "configure" +#line 14033 "configure" #include "confdefs.h" #include <stdlib.h> @@ -13679,16 +14049,16 @@ wchar_t value; (void) value } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13682: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14052: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13685: \$? = $ac_status" >&5 + echo "$as_me:14055: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13688: \"$ac_try\"") >&5 + { (eval echo "$as_me:14058: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13691: \$? = $ac_status" >&5 + echo "$as_me:14061: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_wchar_t=yes else @@ -13700,7 +14070,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:13703: result: $cf_cv_wchar_t" >&5 +echo "$as_me:14073: result: $cf_cv_wchar_t" >&5 echo "${ECHO_T}$cf_cv_wchar_t" >&6 if test "$cf_cv_wchar_t" = yes ; then @@ -13723,14 +14093,14 @@ if test "$cf_cv_wchar_t" != unknown ; then fi # This is needed on Tru64 5.0 to declare wint_t -echo "$as_me:13726: checking if we must include wchar.h to declare wint_t" >&5 +echo "$as_me:14096: checking if we must include wchar.h to declare wint_t" >&5 echo $ECHO_N "checking if we must include wchar.h to declare wint_t... $ECHO_C" >&6 if test "${cf_cv_wint_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 13733 "configure" +#line 14103 "configure" #include "confdefs.h" #include <stdlib.h> @@ -13748,23 +14118,23 @@ wint_t state; (void)state } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13751: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14121: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13754: \$? = $ac_status" >&5 + echo "$as_me:14124: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13757: \"$ac_try\"") >&5 + { (eval echo "$as_me:14127: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13760: \$? = $ac_status" >&5 + echo "$as_me:14130: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_wint_t=no else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 13767 "configure" +#line 14137 "configure" #include "confdefs.h" #include <stdlib.h> @@ -13783,16 +14153,16 @@ wint_t value; (void) value } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13786: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14156: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13789: \$? = $ac_status" >&5 + echo "$as_me:14159: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13792: \"$ac_try\"") >&5 + { (eval echo "$as_me:14162: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13795: \$? = $ac_status" >&5 + echo "$as_me:14165: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_wint_t=yes else @@ -13804,7 +14174,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:13807: result: $cf_cv_wint_t" >&5 +echo "$as_me:14177: result: $cf_cv_wint_t" >&5 echo "${ECHO_T}$cf_cv_wint_t" >&6 if test "$cf_cv_wint_t" = yes ; then @@ -13836,7 +14206,7 @@ EOF fi ### use option --disable-lp64 to allow long chtype -echo "$as_me:13839: checking whether to enable _LP64 definition in curses.h" >&5 +echo "$as_me:14209: checking whether to enable _LP64 definition in curses.h" >&5 echo $ECHO_N "checking whether to enable _LP64 definition in curses.h... $ECHO_C" >&6 # Check whether --enable-lp64 or --disable-lp64 was given. @@ -13846,7 +14216,7 @@ if test "${enable_lp64+set}" = set; then else with_lp64=$cf_dft_with_lp64 fi; -echo "$as_me:13849: result: $with_lp64" >&5 +echo "$as_me:14219: result: $with_lp64" >&5 echo "${ECHO_T}$with_lp64" >&6 if test "x$with_lp64" = xyes ; then @@ -13862,7 +14232,7 @@ if test "${enable_largefile+set}" = set; then fi; if test "$enable_largefile" != no; then - echo "$as_me:13865: checking for special C compiler options needed for large files" >&5 + echo "$as_me:14235: checking for special C compiler options needed for large files" >&5 echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_largefile_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -13874,7 +14244,7 @@ else # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat >"conftest.$ac_ext" <<_ACEOF -#line 13877 "configure" +#line 14247 "configure" #include "confdefs.h" #include <sys/types.h> /* Check that off_t can represent 2**63 - 1 correctly. @@ -13894,16 +14264,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13897: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14267: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13900: \$? = $ac_status" >&5 + echo "$as_me:14270: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13903: \"$ac_try\"") >&5 + { (eval echo "$as_me:14273: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13906: \$? = $ac_status" >&5 + echo "$as_me:14276: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -13913,16 +14283,16 @@ fi rm -f "conftest.$ac_objext" CC="$CC -n32" rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13916: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14286: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13919: \$? = $ac_status" >&5 + echo "$as_me:14289: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13922: \"$ac_try\"") >&5 + { (eval echo "$as_me:14292: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13925: \$? = $ac_status" >&5 + echo "$as_me:14295: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sys_largefile_CC=' -n32'; break else @@ -13936,13 +14306,13 @@ rm -f "conftest.$ac_objext" rm -f "conftest.$ac_ext" fi fi -echo "$as_me:13939: result: $ac_cv_sys_largefile_CC" >&5 +echo "$as_me:14309: result: $ac_cv_sys_largefile_CC" >&5 echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - echo "$as_me:13945: checking for _FILE_OFFSET_BITS value needed for large files" >&5 + echo "$as_me:14315: checking for _FILE_OFFSET_BITS value needed for large files" >&5 echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_file_offset_bits+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -13950,7 +14320,7 @@ else while :; do ac_cv_sys_file_offset_bits=no cat >"conftest.$ac_ext" <<_ACEOF -#line 13953 "configure" +#line 14323 "configure" #include "confdefs.h" #include <sys/types.h> /* Check that off_t can represent 2**63 - 1 correctly. @@ -13970,16 +14340,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:13973: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14343: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:13976: \$? = $ac_status" >&5 + echo "$as_me:14346: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:13979: \"$ac_try\"") >&5 + { (eval echo "$as_me:14349: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:13982: \$? = $ac_status" >&5 + echo "$as_me:14352: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -13988,7 +14358,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" cat >"conftest.$ac_ext" <<_ACEOF -#line 13991 "configure" +#line 14361 "configure" #include "confdefs.h" #define _FILE_OFFSET_BITS 64 #include <sys/types.h> @@ -14009,16 +14379,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14012: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14382: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14015: \$? = $ac_status" >&5 + echo "$as_me:14385: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14018: \"$ac_try\"") >&5 + { (eval echo "$as_me:14388: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14021: \$? = $ac_status" >&5 + echo "$as_me:14391: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sys_file_offset_bits=64; break else @@ -14029,7 +14399,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" break done fi -echo "$as_me:14032: result: $ac_cv_sys_file_offset_bits" >&5 +echo "$as_me:14402: result: $ac_cv_sys_file_offset_bits" >&5 echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 if test "$ac_cv_sys_file_offset_bits" != no; then @@ -14039,7 +14409,7 @@ EOF fi rm -rf conftest* - echo "$as_me:14042: checking for _LARGE_FILES value needed for large files" >&5 + echo "$as_me:14412: checking for _LARGE_FILES value needed for large files" >&5 echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_large_files+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -14047,7 +14417,7 @@ else while :; do ac_cv_sys_large_files=no cat >"conftest.$ac_ext" <<_ACEOF -#line 14050 "configure" +#line 14420 "configure" #include "confdefs.h" #include <sys/types.h> /* Check that off_t can represent 2**63 - 1 correctly. @@ -14067,16 +14437,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14070: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14440: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14073: \$? = $ac_status" >&5 + echo "$as_me:14443: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14076: \"$ac_try\"") >&5 + { (eval echo "$as_me:14446: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14079: \$? = $ac_status" >&5 + echo "$as_me:14449: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -14085,7 +14455,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" cat >"conftest.$ac_ext" <<_ACEOF -#line 14088 "configure" +#line 14458 "configure" #include "confdefs.h" #define _LARGE_FILES 1 #include <sys/types.h> @@ -14106,16 +14476,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14109: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14479: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14112: \$? = $ac_status" >&5 + echo "$as_me:14482: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14115: \"$ac_try\"") >&5 + { (eval echo "$as_me:14485: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14118: \$? = $ac_status" >&5 + echo "$as_me:14488: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sys_large_files=1; break else @@ -14126,7 +14496,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" break done fi -echo "$as_me:14129: result: $ac_cv_sys_large_files" >&5 +echo "$as_me:14499: result: $ac_cv_sys_large_files" >&5 echo "${ECHO_T}$ac_cv_sys_large_files" >&6 if test "$ac_cv_sys_large_files" != no; then @@ -14139,7 +14509,7 @@ rm -rf conftest* fi if test "$enable_largefile" != no ; then - echo "$as_me:14142: checking for _LARGEFILE_SOURCE value needed for large files" >&5 + echo "$as_me:14512: checking for _LARGEFILE_SOURCE value needed for large files" >&5 echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_largefile_source+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -14147,7 +14517,7 @@ else while :; do ac_cv_sys_largefile_source=no cat >"conftest.$ac_ext" <<_ACEOF -#line 14150 "configure" +#line 14520 "configure" #include "confdefs.h" #include <stdio.h> #include <sys/types.h> @@ -14162,16 +14532,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14165: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14535: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14168: \$? = $ac_status" >&5 + echo "$as_me:14538: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14171: \"$ac_try\"") >&5 + { (eval echo "$as_me:14541: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14174: \$? = $ac_status" >&5 + echo "$as_me:14544: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then break else @@ -14180,7 +14550,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" cat >"conftest.$ac_ext" <<_ACEOF -#line 14183 "configure" +#line 14553 "configure" #include "confdefs.h" #define _LARGEFILE_SOURCE 1 #include <stdio.h> @@ -14196,16 +14566,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14199: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14569: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14202: \$? = $ac_status" >&5 + echo "$as_me:14572: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14205: \"$ac_try\"") >&5 + { (eval echo "$as_me:14575: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14208: \$? = $ac_status" >&5 + echo "$as_me:14578: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sys_largefile_source=1; break else @@ -14216,7 +14586,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" break done fi -echo "$as_me:14219: result: $ac_cv_sys_largefile_source" >&5 +echo "$as_me:14589: result: $ac_cv_sys_largefile_source" >&5 echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6 if test "$ac_cv_sys_largefile_source" != no; then @@ -14230,13 +14600,13 @@ rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. -echo "$as_me:14233: checking for fseeko" >&5 +echo "$as_me:14603: checking for fseeko" >&5 echo $ECHO_N "checking for fseeko... $ECHO_C" >&6 if test "${ac_cv_func_fseeko+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 14239 "configure" +#line 14609 "configure" #include "confdefs.h" #include <stdio.h> #include <sys/types.h> @@ -14250,16 +14620,16 @@ int (*my_fseeko)(FILE *, off_t, int) = fseeko; } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:14253: \"$ac_link\"") >&5 +if { (eval echo "$as_me:14623: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:14256: \$? = $ac_status" >&5 + echo "$as_me:14626: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:14259: \"$ac_try\"") >&5 + { (eval echo "$as_me:14629: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14262: \$? = $ac_status" >&5 + echo "$as_me:14632: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_fseeko=yes else @@ -14269,7 +14639,7 @@ ac_cv_func_fseeko=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:14272: result: $ac_cv_func_fseeko" >&5 +echo "$as_me:14642: result: $ac_cv_func_fseeko" >&5 echo "${ECHO_T}$ac_cv_func_fseeko" >&6 if test $ac_cv_func_fseeko = yes; then @@ -14308,14 +14678,14 @@ fi fi - echo "$as_me:14311: checking whether to use struct dirent64" >&5 + echo "$as_me:14681: checking whether to use struct dirent64" >&5 echo $ECHO_N "checking whether to use struct dirent64... $ECHO_C" >&6 if test "${cf_cv_struct_dirent64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 14318 "configure" +#line 14688 "configure" #include "confdefs.h" #pragma GCC diagnostic error "-Wincompatible-pointer-types" @@ -14342,16 +14712,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14345: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:14715: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14348: \$? = $ac_status" >&5 + echo "$as_me:14718: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14351: \"$ac_try\"") >&5 + { (eval echo "$as_me:14721: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14354: \$? = $ac_status" >&5 + echo "$as_me:14724: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_struct_dirent64=yes else @@ -14362,7 +14732,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:14365: result: $cf_cv_struct_dirent64" >&5 +echo "$as_me:14735: result: $cf_cv_struct_dirent64" >&5 echo "${ECHO_T}$cf_cv_struct_dirent64" >&6 test "$cf_cv_struct_dirent64" = yes && cat >>confdefs.h <<\EOF @@ -14372,7 +14742,7 @@ EOF fi ### use option --disable-tparm-varargs to make tparm() conform to X/Open -echo "$as_me:14375: checking if you want tparm not to use X/Open fixed-parameter list" >&5 +echo "$as_me:14745: checking if you want tparm not to use X/Open fixed-parameter list" >&5 echo $ECHO_N "checking if you want tparm not to use X/Open fixed-parameter list... $ECHO_C" >&6 # Check whether --enable-tparm-varargs or --disable-tparm-varargs was given. @@ -14382,14 +14752,14 @@ if test "${enable_tparm_varargs+set}" = set; then else with_tparm_varargs=yes fi; -echo "$as_me:14385: result: $with_tparm_varargs" >&5 +echo "$as_me:14755: result: $with_tparm_varargs" >&5 echo "${ECHO_T}$with_tparm_varargs" >&6 NCURSES_TPARM_VARARGS=0 test "x$with_tparm_varargs" = xyes && NCURSES_TPARM_VARARGS=1 ### use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw if test "$with_ticlib" != no ; then -echo "$as_me:14392: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5 +echo "$as_me:14762: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5 echo $ECHO_N "checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library... $ECHO_C" >&6 # Check whether --enable-tic-depends or --disable-tic-depends was given. @@ -14399,14 +14769,14 @@ if test "${enable_tic_depends+set}" = set; then else with_tic_depends=yes fi; -echo "$as_me:14402: result: $with_tic_depends" >&5 +echo "$as_me:14772: result: $with_tic_depends" >&5 echo "${ECHO_T}$with_tic_depends" >&6 else with_tic_depends=no fi ### use option --enable-wattr-macros to enable wattr* macros in curses.h -echo "$as_me:14409: checking if you want to enable wattr* macros" >&5 +echo "$as_me:14779: checking if you want to enable wattr* macros" >&5 echo $ECHO_N "checking if you want to enable wattr* macros... $ECHO_C" >&6 # Check whether --enable-wattr-macros or --disable-wattr-macros was given. @@ -14418,15 +14788,15 @@ else fi; if [ "x$with_wattr_macros" != xyes ]; then NCURSES_WATTR_MACROS=0 - echo "$as_me:14421: result: no" >&5 + echo "$as_me:14791: result: no" >&5 echo "${ECHO_T}no" >&6 else NCURSES_WATTR_MACROS=1 - echo "$as_me:14425: result: yes" >&5 + echo "$as_me:14795: result: yes" >&5 echo "${ECHO_T}yes" >&6 fi -echo "$as_me:14429: checking for X11 rgb file" >&5 +echo "$as_me:14799: checking for X11 rgb file" >&5 echo $ECHO_N "checking for X11 rgb file... $ECHO_C" >&6 # Check whether --with-x11-rgb or --without-x11-rgb was given. @@ -14471,26 +14841,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$cf_path" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$cf_path" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval cf_path="$cf_path" - case ".$cf_path" in - (.NONE/*) + case "x$cf_path" in + (xNONE/*) cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:14493: error: expected a pathname, not \"$cf_path\"" >&5 + { { echo "$as_me:14861: error: expected a pathname, not \"$cf_path\"" >&5 echo "$as_me: error: expected a pathname, not \"$cf_path\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -14498,7 +14866,7 @@ esac fi -echo "$as_me:14501: result: $RGB_PATH" >&5 +echo "$as_me:14869: result: $RGB_PATH" >&5 echo "${ECHO_T}$RGB_PATH" >&6 cat >>confdefs.h <<EOF @@ -14513,7 +14881,7 @@ fi ### use option --with-bool to override bool's type -echo "$as_me:14516: checking for type of bool" >&5 +echo "$as_me:14884: checking for type of bool" >&5 echo $ECHO_N "checking for type of bool... $ECHO_C" >&6 # Check whether --with-bool or --without-bool was given. @@ -14523,17 +14891,17 @@ if test "${with_bool+set}" = set; then else NCURSES_BOOL=auto fi; -echo "$as_me:14526: result: $NCURSES_BOOL" >&5 +echo "$as_me:14894: result: $NCURSES_BOOL" >&5 echo "${ECHO_T}$NCURSES_BOOL" >&6 case x$NCURSES_BOOL in (x|xyes|xno) - { { echo "$as_me:14530: error: expected a type name for bool" >&5 + { { echo "$as_me:14898: error: expected a type name for bool" >&5 echo "$as_me: error: expected a type name for bool" >&2;} { (exit 1); exit 1; }; } ;; esac -echo "$as_me:14536: checking for alternate terminal capabilities file" >&5 +echo "$as_me:14904: checking for alternate terminal capabilities file" >&5 echo $ECHO_N "checking for alternate terminal capabilities file... $ECHO_C" >&6 # Check whether --with-caps or --without-caps was given. @@ -14545,16 +14913,16 @@ else fi; if test ! -f "${srcdir}/include/${TERMINFO_CAPS}" then - { echo "$as_me:14548: WARNING: file not found: \"${srcdir}/include/${TERMINFO_CAPS}\"" >&5 + { echo "$as_me:14916: WARNING: file not found: \"${srcdir}/include/${TERMINFO_CAPS}\"" >&5 echo "$as_me: WARNING: file not found: \"${srcdir}/include/${TERMINFO_CAPS}\"" >&2;} TERMINFO_CAPS=Caps fi -echo "$as_me:14552: result: $TERMINFO_CAPS" >&5 +echo "$as_me:14920: result: $TERMINFO_CAPS" >&5 echo "${ECHO_T}$TERMINFO_CAPS" >&6 ### use option --with-chtype to override chtype's type -echo "$as_me:14557: checking for type of chtype" >&5 +echo "$as_me:14925: checking for type of chtype" >&5 echo $ECHO_N "checking for type of chtype... $ECHO_C" >&6 # Check whether --with-chtype or --without-chtype was given. @@ -14564,11 +14932,11 @@ if test "${with_chtype+set}" = set; then else NCURSES_CHTYPE=$cf_dft_chtype fi; -echo "$as_me:14567: result: $NCURSES_CHTYPE" >&5 +echo "$as_me:14935: result: $NCURSES_CHTYPE" >&5 echo "${ECHO_T}$NCURSES_CHTYPE" >&6 case x$NCURSES_CHTYPE in (x|xyes|xno) - { { echo "$as_me:14571: error: expected a type name for chtype" >&5 + { { echo "$as_me:14939: error: expected a type name for chtype" >&5 echo "$as_me: error: expected a type name for chtype" >&2;} { (exit 1); exit 1; }; } ;; @@ -14576,7 +14944,7 @@ esac ### use option --with-ospeed to override ospeed's type -echo "$as_me:14579: checking for type of ospeed" >&5 +echo "$as_me:14947: checking for type of ospeed" >&5 echo $ECHO_N "checking for type of ospeed... $ECHO_C" >&6 # Check whether --with-ospeed or --without-ospeed was given. @@ -14586,11 +14954,11 @@ if test "${with_ospeed+set}" = set; then else NCURSES_OSPEED=short fi; -echo "$as_me:14589: result: $NCURSES_OSPEED" >&5 +echo "$as_me:14957: result: $NCURSES_OSPEED" >&5 echo "${ECHO_T}$NCURSES_OSPEED" >&6 case x$NCURSES_OSPEED in (x|xyes|xno) - { { echo "$as_me:14593: error: expected a type name for ospeed" >&5 + { { echo "$as_me:14961: error: expected a type name for ospeed" >&5 echo "$as_me: error: expected a type name for ospeed" >&2;} { (exit 1); exit 1; }; } ;; @@ -14598,7 +14966,7 @@ esac ### use option --with-mmask-t to override mmask_t's type -echo "$as_me:14601: checking for type of mmask-t" >&5 +echo "$as_me:14969: checking for type of mmask-t" >&5 echo $ECHO_N "checking for type of mmask-t... $ECHO_C" >&6 # Check whether --with-mmask-t or --without-mmask-t was given. @@ -14608,18 +14976,26 @@ if test "${with_mmask_t+set}" = set; then else NCURSES_MMASK_T=$cf_dft_mmask_t fi; -echo "$as_me:14611: result: $NCURSES_MMASK_T" >&5 +echo "$as_me:14979: result: $NCURSES_MMASK_T" >&5 echo "${ECHO_T}$NCURSES_MMASK_T" >&6 case x$NCURSES_MMASK_T in (x|xyes|xno) - { { echo "$as_me:14615: error: expected a type name for mmask-t" >&5 + { { echo "$as_me:14983: error: expected a type name for mmask-t" >&5 echo "$as_me: error: expected a type name for mmask-t" >&2;} { (exit 1); exit 1; }; } ;; esac +### option --enable-lp64 can give unexpected results +if test "$cf_cv_enable_lp64" = 1 ; then + test -n "$with_chtype" && test "$NCURSES_CHTYPE" != unsigned && { echo "$as_me:14991: WARNING: option --enable-lp64 overrides --with-chtype" >&5 +echo "$as_me: WARNING: option --enable-lp64 overrides --with-chtype" >&2;} + test -n "$with_mmask_t" && test "$NCURSES_MMASK_T" != unsigned && { echo "$as_me:14993: WARNING: option --enable-lp64 overrides --with-mmask-t" >&5 +echo "$as_me: WARNING: option --enable-lp64 overrides --with-mmask-t" >&2;} +fi + ### use option --with-ccharw-max to override CCHARW_MAX size -echo "$as_me:14622: checking for size CCHARW_MAX" >&5 +echo "$as_me:14998: checking for size CCHARW_MAX" >&5 echo $ECHO_N "checking for size CCHARW_MAX... $ECHO_C" >&6 # Check whether --with-ccharw-max or --without-ccharw-max was given. @@ -14629,16 +15005,16 @@ if test "${with_ccharw_max+set}" = set; then else NCURSES_CCHARW_MAX=$cf_dft_ccharw_max fi; -echo "$as_me:14632: result: $NCURSES_CCHARW_MAX" >&5 +echo "$as_me:15008: result: $NCURSES_CCHARW_MAX" >&5 echo "${ECHO_T}$NCURSES_CCHARW_MAX" >&6 -echo "$as_me:14635: checking for signed char" >&5 +echo "$as_me:15011: checking for signed char" >&5 echo $ECHO_N "checking for signed char... $ECHO_C" >&6 if test "${ac_cv_type_signed_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 14641 "configure" +#line 15017 "configure" #include "confdefs.h" $ac_includes_default int @@ -14653,16 +15029,16 @@ if (sizeof (signed char)) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14656: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:15032: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14659: \$? = $ac_status" >&5 + echo "$as_me:15035: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14662: \"$ac_try\"") >&5 + { (eval echo "$as_me:15038: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14665: \$? = $ac_status" >&5 + echo "$as_me:15041: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_type_signed_char=yes else @@ -14672,10 +15048,10 @@ ac_cv_type_signed_char=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:14675: result: $ac_cv_type_signed_char" >&5 +echo "$as_me:15051: result: $ac_cv_type_signed_char" >&5 echo "${ECHO_T}$ac_cv_type_signed_char" >&6 -echo "$as_me:14678: checking size of signed char" >&5 +echo "$as_me:15054: checking size of signed char" >&5 echo $ECHO_N "checking size of signed char... $ECHO_C" >&6 if test "${ac_cv_sizeof_signed_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -14684,7 +15060,7 @@ else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >"conftest.$ac_ext" <<_ACEOF -#line 14687 "configure" +#line 15063 "configure" #include "confdefs.h" $ac_includes_default int @@ -14696,21 +15072,21 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14699: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:15075: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14702: \$? = $ac_status" >&5 + echo "$as_me:15078: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14705: \"$ac_try\"") >&5 + { (eval echo "$as_me:15081: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14708: \$? = $ac_status" >&5 + echo "$as_me:15084: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=0 ac_mid=0 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 14713 "configure" +#line 15089 "configure" #include "confdefs.h" $ac_includes_default int @@ -14722,16 +15098,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14725: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:15101: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14728: \$? = $ac_status" >&5 + echo "$as_me:15104: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14731: \"$ac_try\"") >&5 + { (eval echo "$as_me:15107: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14734: \$? = $ac_status" >&5 + echo "$as_me:15110: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid; break else @@ -14747,7 +15123,7 @@ cat "conftest.$ac_ext" >&5 ac_hi=-1 ac_mid=-1 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 14750 "configure" +#line 15126 "configure" #include "confdefs.h" $ac_includes_default int @@ -14759,16 +15135,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14762: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:15138: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14765: \$? = $ac_status" >&5 + echo "$as_me:15141: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14768: \"$ac_try\"") >&5 + { (eval echo "$as_me:15144: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14771: \$? = $ac_status" >&5 + echo "$as_me:15147: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=$ac_mid; break else @@ -14784,7 +15160,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"` cat >"conftest.$ac_ext" <<_ACEOF -#line 14787 "configure" +#line 15163 "configure" #include "confdefs.h" $ac_includes_default int @@ -14796,16 +15172,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:14799: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:15175: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:14802: \$? = $ac_status" >&5 + echo "$as_me:15178: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:14805: \"$ac_try\"") >&5 + { (eval echo "$as_me:15181: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14808: \$? = $ac_status" >&5 + echo "$as_me:15184: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid else @@ -14818,12 +15194,12 @@ done ac_cv_sizeof_signed_char=$ac_lo else if test "$cross_compiling" = yes; then - { { echo "$as_me:14821: error: cannot run test program while cross compiling" >&5 + { { echo "$as_me:15197: error: cannot run test program while cross compiling" >&5 echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >"conftest.$ac_ext" <<_ACEOF -#line 14826 "configure" +#line 15202 "configure" #include "confdefs.h" $ac_includes_default int @@ -14839,15 +15215,15 @@ fclose (f); } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:14842: \"$ac_link\"") >&5 +if { (eval echo "$as_me:15218: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:14845: \$? = $ac_status" >&5 + echo "$as_me:15221: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:14847: \"$ac_try\"") >&5 + { (eval echo "$as_me:15223: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:14850: \$? = $ac_status" >&5 + echo "$as_me:15226: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sizeof_signed_char=`cat conftest.val` else @@ -14863,7 +15239,7 @@ else ac_cv_sizeof_signed_char=0 fi fi -echo "$as_me:14866: result: $ac_cv_sizeof_signed_char" >&5 +echo "$as_me:15242: result: $ac_cv_sizeof_signed_char" >&5 echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6 cat >>confdefs.h <<EOF #define SIZEOF_SIGNED_CHAR $ac_cv_sizeof_signed_char @@ -14874,7 +15250,7 @@ if test "$ac_cv_sizeof_signed_char" = 1 ; then else NCURSES_SBOOL="char" fi -echo "$as_me:14877: checking whether to use signed chars for Boolean array in term.h" >&5 +echo "$as_me:15253: checking whether to use signed chars for Boolean array in term.h" >&5 echo $ECHO_N "checking whether to use signed chars for Boolean array in term.h... $ECHO_C" >&6 # Check whether --enable-signed-char or --disable-signed-char was given. @@ -14884,13 +15260,13 @@ if test "${enable_signed_char+set}" = set; then else with_signed_char=$cf_dft_signed_char fi; -echo "$as_me:14887: result: $with_signed_char" >&5 +echo "$as_me:15263: result: $with_signed_char" >&5 echo "${ECHO_T}$with_signed_char" >&6 test "x$with_signed_char" != xyes && NCURSES_SBOOL="char" ### use option --with-tparm-arg to override tparm's argument type -echo "$as_me:14893: checking for type of tparm-arg" >&5 +echo "$as_me:15269: checking for type of tparm-arg" >&5 echo $ECHO_N "checking for type of tparm-arg... $ECHO_C" >&6 # Check whether --with-tparm-arg or --without-tparm-arg was given. @@ -14900,18 +15276,18 @@ if test "${with_tparm_arg+set}" = set; then else NCURSES_TPARM_ARG=$cf_dft_tparm_arg fi; -echo "$as_me:14903: result: $NCURSES_TPARM_ARG" >&5 +echo "$as_me:15279: result: $NCURSES_TPARM_ARG" >&5 echo "${ECHO_T}$NCURSES_TPARM_ARG" >&6 case x$NCURSES_TPARM_ARG in (x|xyes|xno) - { { echo "$as_me:14907: error: expected a type name for tparm-arg" >&5 + { { echo "$as_me:15283: error: expected a type name for tparm-arg" >&5 echo "$as_me: error: expected a type name for tparm-arg" >&2;} { (exit 1); exit 1; }; } ;; esac ### Enable compiling-in rcs id's -echo "$as_me:14914: checking if RCS identifiers should be compiled-in" >&5 +echo "$as_me:15290: checking if RCS identifiers should be compiled-in" >&5 echo $ECHO_N "checking if RCS identifiers should be compiled-in... $ECHO_C" >&6 # Check whether --with-rcs-ids or --without-rcs-ids was given. @@ -14921,7 +15297,7 @@ if test "${with_rcs_ids+set}" = set; then else with_rcs_ids=no fi; -echo "$as_me:14924: result: $with_rcs_ids" >&5 +echo "$as_me:15300: result: $with_rcs_ids" >&5 echo "${ECHO_T}$with_rcs_ids" >&6 test "x$with_rcs_ids" = xyes && cat >>confdefs.h <<\EOF @@ -14930,556 +15306,8 @@ EOF ############################################################################### -echo "$as_me:14933: checking format of man-pages" >&5 -echo $ECHO_N "checking format of man-pages... $ECHO_C" >&6 - -# Check whether --with-manpage-format or --without-manpage-format was given. -if test "${with_manpage_format+set}" = set; then - withval="$with_manpage_format" - MANPAGE_FORMAT=$withval -else - MANPAGE_FORMAT=unknown -fi; - -test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown -MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'` - -cf_unknown= - -case "$MANPAGE_FORMAT" in -(unknown) - if test -z "$MANPATH" ; then - MANPATH="/usr/man:/usr/share/man" - fi - - # look for the 'date' man-page (it is most likely to be installed!) - MANPAGE_FORMAT= - cf_preform="no" - cf_catonly="yes" - cf_example="date" - - IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for cf_dir in $MANPATH; do - test -z "$cf_dir" && cf_dir=/usr/man - for cf_name in $cf_dir/man*/$cf_example.[01]* $cf_dir/cat*/$cf_example.[01]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example - do - cf_test=`echo "$cf_name" | sed -e 's/*//'` - if test "x$cf_test" = "x$cf_name" ; then - - case "$cf_name" in - (*.bz2) MANPAGE_FORMAT="$MANPAGE_FORMAT bzip2";; - (*.xz) MANPAGE_FORMAT="$MANPAGE_FORMAT xz";; - (*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";; - (*.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";; - (*.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";; - (*) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";; - esac - - case "$cf_name" in - ($cf_dir/man*) - cf_catonly=no - ;; - ($cf_dir/cat*) - cf_preform=yes - ;; - esac - break - fi - - # if we found a match in either man* or cat*, stop looking - if test -n "$MANPAGE_FORMAT" ; then - cf_found=no - test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted" - test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly" - case "$cf_name" in - ($cf_dir/cat*) - cf_found=yes - ;; - esac - test "$cf_found" = yes && break - fi - done - # only check the first directory in $MANPATH where we find manpages - if test -n "$MANPAGE_FORMAT" ; then - break - fi - done - # if we did not find the example, just assume it is normal - test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal - IFS="$ac_save_ifs" - ;; -(*) - for cf_option in $MANPAGE_FORMAT; do - case "$cf_option" in - (xz|bzip2|gzip|compress|BSDI|normal|formatted|catonly) - ;; - (*) - cf_unknown="$cf_unknown $cf_option" - ;; - esac - done - ;; -esac - -echo "$as_me:15024: result: $MANPAGE_FORMAT" >&5 -echo "${ECHO_T}$MANPAGE_FORMAT" >&6 -if test -n "$cf_unknown" ; then - { echo "$as_me:15027: WARNING: Unexpected manpage-format $cf_unknown" >&5 -echo "$as_me: WARNING: Unexpected manpage-format $cf_unknown" >&2;} -fi - -cf_manpage_format=no -cf_manpage_inboth=no -cf_manpage_so_strip= -cf_manpage_compress= -cf_manpage_coptions= - -for cf_item in $MANPAGE_FORMAT -do -case "$cf_item" in -(catonly) - cf_manpage_format=yes - cf_manpage_inboth=no - ;; -(formatted) - cf_manpage_format=yes - cf_manpage_inboth=yes - ;; -(compress) - cf_manpage_so_strip="Z" - cf_manpage_compress=compress - ;; -(gzip) - cf_manpage_so_strip="gz" - cf_manpage_compress=gzip - cf_manpage_coptions=-n - ;; -(bzip2) - cf_manpage_so_strip="bz2" - cf_manpage_compress=bzip2 - ;; -(xz) - cf_manpage_so_strip="xz" - cf_manpage_compress=xz - ;; -esac -done - -echo "$as_me:15068: checking for manpage renaming" >&5 -echo $ECHO_N "checking for manpage renaming... $ECHO_C" >&6 - -# Check whether --with-manpage-renames or --without-manpage-renames was given. -if test "${with_manpage_renames+set}" = set; then - withval="$with_manpage_renames" - MANPAGE_RENAMES=$withval -else - MANPAGE_RENAMES=yes -fi; - -case ".$MANPAGE_RENAMES" in -(.no) - ;; -(.|.yes) - # Debian 'man' program? - if test -f /etc/debian_version ; then - MANPAGE_RENAMES=man/man_db.renames - else - MANPAGE_RENAMES=no - fi - ;; -esac - -if test "$MANPAGE_RENAMES" = man/man_db.renames ; then - MANPAGE_RENAMES=`pwd`/$MANPAGE_RENAMES -elif test "$MANPAGE_RENAMES" = no ; then - : -elif test ! -f "$MANPAGE_RENAMES" ; then - { { echo "$as_me:15097: error: not a filename: $MANPAGE_RENAMES" >&5 -echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;} - { (exit 1); exit 1; }; } -fi - -echo "$as_me:15102: result: $MANPAGE_RENAMES" >&5 -echo "${ECHO_T}$MANPAGE_RENAMES" >&6 - -echo "$as_me:15105: checking if manpage aliases will be installed" >&5 -echo $ECHO_N "checking if manpage aliases will be installed... $ECHO_C" >&6 - -# Check whether --with-manpage-aliases or --without-manpage-aliases was given. -if test "${with_manpage_aliases+set}" = set; then - withval="$with_manpage_aliases" - MANPAGE_ALIASES=$withval -else - MANPAGE_ALIASES=yes -fi; - -echo "$as_me:15116: result: $MANPAGE_ALIASES" >&5 -echo "${ECHO_T}$MANPAGE_ALIASES" >&6 - -case "x$LN_S" in -(xln*) - cf_use_symlinks=yes - ;; -(*) - cf_use_symlinks=no - ;; -esac - -MANPAGE_SYMLINKS=no -if test "$MANPAGE_ALIASES" = yes ; then -echo "$as_me:15130: checking if manpage symlinks should be used" >&5 -echo $ECHO_N "checking if manpage symlinks should be used... $ECHO_C" >&6 - -# Check whether --with-manpage-symlinks or --without-manpage-symlinks was given. -if test "${with_manpage_symlinks+set}" = set; then - withval="$with_manpage_symlinks" - MANPAGE_SYMLINKS=$withval -else - MANPAGE_SYMLINKS=$cf_use_symlinks -fi; - -if test "$cf_use_symlinks" = no; then -if test "$MANPAGE_SYMLINKS" = yes ; then - { echo "$as_me:15143: WARNING: cannot make symlinks" >&5 -echo "$as_me: WARNING: cannot make symlinks" >&2;} - MANPAGE_SYMLINKS=no -fi -fi - -echo "$as_me:15149: result: $MANPAGE_SYMLINKS" >&5 -echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6 -fi - -echo "$as_me:15153: checking for manpage tbl" >&5 -echo $ECHO_N "checking for manpage tbl... $ECHO_C" >&6 - -# Check whether --with-manpage-tbl or --without-manpage-tbl was given. -if test "${with_manpage_tbl+set}" = set; then - withval="$with_manpage_tbl" - MANPAGE_TBL=$withval -else - MANPAGE_TBL=no -fi; - -echo "$as_me:15164: result: $MANPAGE_TBL" >&5 -echo "${ECHO_T}$MANPAGE_TBL" >&6 - -if test "$prefix" = "NONE" ; then - cf_prefix="$ac_default_prefix" -else - cf_prefix="$prefix" -fi - -test ! -d man && mkdir man - -cf_edit_man=./edit_man.sh -cf_man_alias=`pwd`/man_alias.sed - -cat >$cf_edit_man <<CF_EOF -#! $SHELL -# this script is generated by the configure-script CF_MAN_PAGES macro. - -prefix="$cf_prefix" -datarootdir="$datarootdir" -datadir="$datadir" - -NCURSES_MAJOR="$NCURSES_MAJOR" -NCURSES_MINOR="$NCURSES_MINOR" -NCURSES_PATCH="$NCURSES_PATCH" - -NCURSES_OSPEED="$NCURSES_OSPEED" -TERMINFO="$TERMINFO" -TERMINFO_DIRS="$TERMINFO_DIRS" - -INSTALL="$INSTALL" -INSTALL_DATA="$INSTALL_DATA" - -transform="$program_transform_name" - -TMP=\${TMPDIR:=/tmp}/man\$\$ -trap "rm -f \$TMP; exit 1" 1 2 3 15 -trap "rm -f \$TMP" 0 - -form=\$1 -shift || exit 1 - -verb=\$1 -shift || exit 1 - -mandir=\$1 -shift || exit 1 - -srcdir=\$1 -top_srcdir=\$srcdir/.. -shift || exit 1 - -if test "\$form" = normal ; then - if test "$cf_manpage_format" = yes ; then - if test "$cf_manpage_inboth" = no ; then - $SHELL "\$0" format "\$verb" "\$mandir" "\$srcdir" "\$@" - exit $? - fi - fi - cf_subdir=\$mandir/man - cf_tables=$MANPAGE_TBL -else - cf_subdir=\$mandir/cat - cf_tables=yes -fi - -# process the list of source-files -for i in "\$@" ; do -case \$i in -(*.orig|*.rej) ;; -(*.[0-9]*) - section=\`expr "\$i" : '.*\\.\\([0-9]\\)[xm]*'\`; - if test "\$verb" = installing ; then - if test ! -d "\$cf_subdir\${section}" ; then - mkdir -p "\$cf_subdir\$section" - fi - fi - - # replace variables in man page - if test ! -f "$cf_man_alias" ; then -cat >>$cf_man_alias <<-CF_EOF2 - s,@DATADIR@,\$datadir,g - s,@TERMINFO@,\${TERMINFO:="no default value"},g - s,@TERMINFO_DIRS@,\${TERMINFO_DIRS:="no default value"},g - s,@NCURSES_MAJOR@,\${NCURSES_MAJOR:="no default value"},g - s,@NCURSES_MINOR@,\${NCURSES_MINOR:="no default value"},g - s,@NCURSES_PATCH@,\${NCURSES_PATCH:="no default value"},g - s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g -CF_EOF - - for cf_name in captoinfo clear infocmp infotocap reset tabs tic toe tput tset - do - cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - cf_name=`echo "$cf_name" | sed "$program_transform_name"` -cat >>$cf_edit_man <<-CF_EOF - s,@$cf_NAME@,$cf_name,g -CF_EOF - done - -cat >>$cf_edit_man <<CF_EOF -CF_EOF2 - echo "...made $cf_man_alias" - fi - - aliases= - cf_source=\`basename "\$i"\` - cf_full_alias=\$cf_source - test ! -f "\$cf_full_alias" && cf_full_alias="\$srcdir/\$cf_full_alias" - if test ! -f "\$cf_full_alias" ; then - echo ".. skipped \$cf_source" - continue - fi -CF_EOF - -if test "$MANPAGE_ALIASES" != no ; then -cat >>$cf_edit_man <<CF_EOF - nCurses=ignore.3x - cf_part_alias=\`echo \$cf_full_alias| sed -e 's,^.*/,,'\` - test "$with_curses_h" = yes && nCurses=ncurses.3x - aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$cf_full_alias" |sed -f "$cf_man_alias" | sort -u; test "\$cf_part_alias" = "\$nCurses" && echo curses\` -CF_EOF -fi - -if test "$MANPAGE_RENAMES" = no ; then -cat >>$cf_edit_man <<CF_EOF - # perform program transformations for section 1 man pages - if test \$section = 1 ; then - cf_target=\$cf_subdir\${section}/\`echo \$cf_source|sed "\${transform}"\` - else - cf_target=\$cf_subdir\${section}/\$cf_source - fi -CF_EOF -else -cat >>$cf_edit_man <<CF_EOF - cf_target=\`grep "^\$cf_source" $MANPAGE_RENAMES | $AWK '{print \$2}'\` - if test -z "\$cf_target" ; then - echo "? missing rename for \$cf_source" - cf_target="\$cf_source" - fi - cf_target="\$cf_subdir\${section}/\${cf_target}" - -CF_EOF -fi - -cat >>$cf_edit_man <<CF_EOF - sed -f "$cf_man_alias" \\ -CF_EOF - -if test "$MANPAGE_RENAMES" != no ; then -cat >>$cf_edit_man <<CF_EOF - < "\$i" | sed -f `pwd`/edit_man.sed >\$TMP -CF_EOF -else -cat >>$cf_edit_man <<CF_EOF - < "\$i" >\$TMP -CF_EOF -fi - -cat >>$cf_edit_man <<CF_EOF -if test \$cf_tables = yes ; then - tbl \$TMP >\$TMP.out - mv \$TMP.out \$TMP -fi -CF_EOF - -if test "$with_overwrite" != yes ; then -cat >>$cf_edit_man <<CF_EOF - sed -e "/\\#[ ]*include/s,<curses.h,<ncurses$LIB_SUFFIX/curses.h," < \$TMP >\$TMP.out - mv \$TMP.out \$TMP -CF_EOF -fi - -if test "$with_curses_h" != yes ; then -cat >>$cf_edit_man <<CF_EOF - sed -e "/\\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out - mv \$TMP.out \$TMP -CF_EOF -fi - -cat >>$cf_edit_man <<CF_EOF - if test "\$form" = format ; then - nroff -man \$TMP >\$TMP.out - mv \$TMP.out \$TMP - fi -CF_EOF - -if test -n "$cf_manpage_compress" ; then -cat >>$cf_edit_man <<CF_EOF - if test "\$verb" = installing ; then - if ( "$cf_manpage_compress" -f \$TMP ) - then - mv \$TMP.$cf_manpage_so_strip \$TMP - fi - fi - cf_target="\$cf_target.$cf_manpage_so_strip" -CF_EOF -fi - -case "$MANPAGE_FORMAT" in -(*BSDI*) -cat >>$cf_edit_man <<CF_EOF - if test "\$form" = format ; then - # BSDI installs only .0 suffixes in the cat directories - cf_target="\`echo \$cf_target|sed -e 's/\\.[1-9]\\+[a-z]*/.0/'\`" - fi -CF_EOF - ;; -esac - -cat >>$cf_edit_man <<CF_EOF - suffix=\`basename "\$cf_target" | sed -e 's%^[^.]*%%'\` - extra_suffix= - if test -n "$EXTRA_SUFFIX" ; then - case \$cf_target in - (*${EXTRA_SUFFIX}\$suffix) - extra_suffix="$EXTRA_SUFFIX" - ;; - esac - fi - if test "\$verb" = installing ; then - echo "\$verb \$cf_target" - \$INSTALL_DATA \$TMP "\$cf_target" - test -d "\$cf_subdir\${section}" && - test -n "\$aliases" && ( - cd "\$cf_subdir\${section}" && ( - cf_source=\`echo "\$cf_target" |sed -e 's%^.*/\\([^/][^/]*/[^/][^/]*$\\)%\\1%'\` - test -n "$cf_manpage_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_manpage_so_strip\$%%'\` - cf_target=\`basename "\$cf_target"\` - for cf_alias in \$aliases - do - if test "\$section" = 1 ; then - cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\` - fi - cf_alias="\${cf_alias}\${extra_suffix}" - - if test "$MANPAGE_SYMLINKS" = yes ; then - if test -f "\$cf_alias\${suffix}" ; then - if ( cmp -s "\$cf_target" "\$cf_alias\${suffix}" ) - then - continue - fi - fi - echo ".. \$verb alias \$cf_alias\${suffix}" -CF_EOF -case "x$LN_S" in -(*-f) -cat >>$cf_edit_man <<CF_EOF - $LN_S "\$cf_target" "\$cf_alias\${suffix}" -CF_EOF - ;; -(*) -cat >>$cf_edit_man <<CF_EOF - rm -f "\$cf_alias\${suffix}" - $LN_S "\$cf_target" "\$cf_alias\${suffix}" -CF_EOF - ;; -esac -cat >>$cf_edit_man <<CF_EOF - elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then - echo ".so \$cf_source" >\$TMP -CF_EOF -if test -n "$cf_manpage_compress" ; then -cat >>$cf_edit_man <<CF_EOF - if test -n "$cf_manpage_so_strip" ; then - "$cf_manpage_compress" $cf_manpage_coptions -f \$TMP - mv \$TMP.$cf_manpage_so_strip \$TMP - fi -CF_EOF -fi -cat >>$cf_edit_man <<CF_EOF - echo ".. \$verb alias \$cf_alias\${suffix}" - rm -f "\$cf_alias\${suffix}" - \$INSTALL_DATA \$TMP "\$cf_alias\${suffix}" - fi - done - ) - ) - elif test "\$verb" = removing ; then - test -f "\$cf_target" && ( - echo "\$verb \$cf_target" - rm -f "\$cf_target" - ) - test -d "\$cf_subdir\${section}" && - test -n "\$aliases" && ( - cd "\$cf_subdir\${section}" && ( - for cf_alias in \$aliases - do - if test "\$section" = 1 ; then - cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\` - fi - cf_alias="\${cf_alias}\${extra_suffix}" - - echo ".. \$verb alias \$cf_alias\${suffix}" - rm -f "\$cf_alias\${suffix}" - done - ) - ) - else -# echo ".hy 0" - cat \$TMP - fi - ;; -esac -done - -if test "$cf_manpage_inboth" = yes ; then -if test "\$form" != format ; then - $SHELL "\$0" format "\$verb" "\$mandir" "\$srcdir" "\$@" -fi -fi - -exit 0 -CF_EOF -chmod 755 "$cf_edit_man" - -############################################################################### - ### Note that some functions (such as const) are normally disabled anyway. -echo "$as_me:15482: checking if you want to build with function extensions" >&5 +echo "$as_me:15310: checking if you want to build with function extensions" >&5 echo $ECHO_N "checking if you want to build with function extensions... $ECHO_C" >&6 # Check whether --enable-ext-funcs or --disable-ext-funcs was given. @@ -15489,7 +15317,7 @@ if test "${enable_ext_funcs+set}" = set; then else with_ext_funcs=yes fi; -echo "$as_me:15492: result: $with_ext_funcs" >&5 +echo "$as_me:15320: result: $with_ext_funcs" >&5 echo "${ECHO_T}$with_ext_funcs" >&6 if test "x$with_ext_funcs" = xyes ; then NCURSES_EXT_FUNCS=1 @@ -15539,13 +15367,14 @@ cat >>confdefs.h <<\EOF EOF GENERATED_EXT_FUNCS=generated - test "x$with_ext_funcs" = xyes || cf_dft_ext_spfuncs=no else + cf_dft_ext_spfuncs=no + cf_dft_ext_colors=no NCURSES_EXT_FUNCS=0 GENERATED_EXT_FUNCS= fi -echo "$as_me:15548: checking if you want to build with SCREEN extensions" >&5 +echo "$as_me:15377: checking if you want to build with SCREEN extensions" >&5 echo $ECHO_N "checking if you want to build with SCREEN extensions... $ECHO_C" >&6 # Check whether --enable-sp-funcs or --disable-sp-funcs was given. @@ -15555,7 +15384,7 @@ if test "${enable_sp_funcs+set}" = set; then else with_sp_funcs=$cf_dft_ext_spfuncs fi; -echo "$as_me:15558: result: $with_sp_funcs" >&5 +echo "$as_me:15387: result: $with_sp_funcs" >&5 echo "${ECHO_T}$with_sp_funcs" >&6 if test "x$with_sp_funcs" = xyes ; then NCURSES_SP_FUNCS=1 @@ -15574,7 +15403,16 @@ else GENERATED_SP_FUNCS= fi -echo "$as_me:15577: checking if you want to build with terminal-driver" >&5 +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*|*-msvc*) + cf_dft_term_driver=yes + ;; +(*) + cf_dft_term_driver=no + ;; +esac + +echo "$as_me:15415: checking if you want to build with terminal-driver" >&5 echo $ECHO_N "checking if you want to build with terminal-driver... $ECHO_C" >&6 # Check whether --enable-term-driver or --disable-term-driver was given. @@ -15582,9 +15420,9 @@ if test "${enable_term_driver+set}" = set; then enableval="$enable_term_driver" with_term_driver=$enableval else - with_term_driver=no + with_term_driver=$cf_dft_term_driver fi; -echo "$as_me:15587: result: $with_term_driver" >&5 +echo "$as_me:15425: result: $with_term_driver" >&5 echo "${ECHO_T}$with_term_driver" >&6 if test "x$with_term_driver" = xyes ; then @@ -15593,19 +15431,19 @@ cat >>confdefs.h <<\EOF EOF if test "x$with_termlib" != xno ; then - { { echo "$as_me:15596: error: The term-driver option conflicts with the termlib option" >&5 + { { echo "$as_me:15434: error: The term-driver option conflicts with the termlib option" >&5 echo "$as_me: error: The term-driver option conflicts with the termlib option" >&2;} { (exit 1); exit 1; }; } fi if test "x$with_sp_funcs" != xyes ; then - { { echo "$as_me:15601: error: The term-driver option relies upon sp-funcs" >&5 + { { echo "$as_me:15439: error: The term-driver option relies upon sp-funcs" >&5 echo "$as_me: error: The term-driver option relies upon sp-funcs" >&2;} { (exit 1); exit 1; }; } fi fi ### use option --enable-const to turn on use of const beyond that in XSI. -echo "$as_me:15608: checking for extended use of const keyword" >&5 +echo "$as_me:15446: checking for extended use of const keyword" >&5 echo $ECHO_N "checking for extended use of const keyword... $ECHO_C" >&6 # Check whether --enable-const or --disable-const was given. @@ -15615,7 +15453,7 @@ if test "${enable_const+set}" = set; then else with_ext_const=$cf_dft_ext_const fi; -echo "$as_me:15618: result: $with_ext_const" >&5 +echo "$as_me:15456: result: $with_ext_const" >&5 echo "${ECHO_T}$with_ext_const" >&6 NCURSES_CONST='/*nothing*/' if test "x$with_ext_const" = xyes ; then @@ -15623,7 +15461,9 @@ if test "x$with_ext_const" = xyes ; then fi ### use option --enable-ext-colors to turn on use of colors beyond 16. -echo "$as_me:15626: checking if you want to use extended colors" >&5 +NCURSES_EXT_COLORS=0 +NCURSES_RGB_COLORS=0 +echo "$as_me:15466: checking if you want to use extended colors" >&5 echo $ECHO_N "checking if you want to use extended colors... $ECHO_C" >&6 # Check whether --enable-ext-colors or --disable-ext-colors was given. @@ -15633,12 +15473,11 @@ if test "${enable_ext_colors+set}" = set; then else with_ext_colors=$cf_dft_ext_colors fi; -echo "$as_me:15636: result: $with_ext_colors" >&5 +echo "$as_me:15476: result: $with_ext_colors" >&5 echo "${ECHO_T}$with_ext_colors" >&6 -NCURSES_EXT_COLORS=0 if test "x$with_ext_colors" = xyes ; then if test "x$with_widec" != xyes ; then - { echo "$as_me:15641: WARNING: This option applies only to wide-character library" >&5 + { echo "$as_me:15480: WARNING: This option applies only to wide-character library" >&5 echo "$as_me: WARNING: This option applies only to wide-character library" >&2;} else # cannot be ABI 5 since it changes sizeof(cchar_t) @@ -15649,7 +15488,7 @@ if test "${with_abi_version+set}" != set; then cf_cv_rel_version=6.0 cf_cv_abi_version=6 cf_cv_abi_default=6 - { echo "$as_me:15652: WARNING: overriding ABI version to $cf_cv_abi_default" >&5 + { echo "$as_me:15491: WARNING: overriding ABI version to $cf_cv_abi_default" >&5 echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_default" >&2;} ;; esac @@ -15674,10 +15513,31 @@ cat >>confdefs.h <<\EOF EOF fi + ### use option --enable-rgb-color to extend support for direct-color + echo "$as_me:15517: checking if you want to extend support for direct color" >&5 +echo $ECHO_N "checking if you want to extend support for direct color... $ECHO_C" >&6 + +# Check whether --enable-rgb-color or --disable-rgb-color was given. +if test "${enable_rgb_color+set}" = set; then + enableval="$enable_rgb_color" + with_rgb_color=$enableval +else + with_rgb_color=$cf_dft_rgb_color +fi; + echo "$as_me:15527: result: $with_rgb_color" >&5 +echo "${ECHO_T}$with_rgb_color" >&6 + if test "x$with_rgb_color" = xyes ; then + NCURSES_RGB_COLORS=1 + +cat >>confdefs.h <<\EOF +#define NCURSES_RGB_COLORS 1 +EOF + + fi fi ### use option --enable-ext-mouse to modify coding to support 5-button mice -echo "$as_me:15680: checking if you want to use extended mouse encoding" >&5 +echo "$as_me:15540: checking if you want to use extended mouse encoding" >&5 echo $ECHO_N "checking if you want to use extended mouse encoding... $ECHO_C" >&6 # Check whether --enable-ext-mouse or --disable-ext-mouse was given. @@ -15687,7 +15547,7 @@ if test "${enable_ext_mouse+set}" = set; then else with_ext_mouse=$cf_dft_ext_mouse fi; -echo "$as_me:15690: result: $with_ext_mouse" >&5 +echo "$as_me:15550: result: $with_ext_mouse" >&5 echo "${ECHO_T}$with_ext_mouse" >&6 if test "x$with_ext_mouse" = xyes ; then @@ -15697,7 +15557,7 @@ if test "${with_abi_version+set}" != set; then cf_cv_rel_version=6.0 cf_cv_abi_version=6 cf_cv_abi_default=6 - { echo "$as_me:15700: WARNING: overriding ABI version to $cf_cv_abi_default" >&5 + { echo "$as_me:15560: WARNING: overriding ABI version to $cf_cv_abi_default" >&5 echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_default" >&2;} ;; esac @@ -15714,7 +15574,7 @@ else fi ### use option --enable-ext-putwin to turn on extended screendumps -echo "$as_me:15717: checking if you want to use extended putwin/screendump" >&5 +echo "$as_me:15577: checking if you want to use extended putwin/screendump" >&5 echo $ECHO_N "checking if you want to use extended putwin/screendump... $ECHO_C" >&6 # Check whether --enable-ext-putwin or --disable-ext-putwin was given. @@ -15724,7 +15584,7 @@ if test "${enable_ext_putwin+set}" = set; then else with_ext_putwin=$cf_dft_ext_putwin fi; -echo "$as_me:15727: result: $with_ext_putwin" >&5 +echo "$as_me:15587: result: $with_ext_putwin" >&5 echo "${ECHO_T}$with_ext_putwin" >&6 if test "x$with_ext_putwin" = xyes ; then @@ -15734,7 +15594,7 @@ EOF fi -echo "$as_me:15737: checking if you want \$NCURSES_NO_PADDING code" >&5 +echo "$as_me:15597: checking if you want \$NCURSES_NO_PADDING code" >&5 echo $ECHO_N "checking if you want \$NCURSES_NO_PADDING code... $ECHO_C" >&6 # Check whether --enable-no-padding or --disable-no-padding was given. @@ -15744,7 +15604,7 @@ if test "${enable_no_padding+set}" = set; then else with_no_padding=$with_ext_funcs fi; -echo "$as_me:15747: result: $with_no_padding" >&5 +echo "$as_me:15607: result: $with_no_padding" >&5 echo "${ECHO_T}$with_no_padding" >&6 test "x$with_no_padding" = xyes && cat >>confdefs.h <<\EOF @@ -15752,7 +15612,7 @@ cat >>confdefs.h <<\EOF EOF ### use option --enable-sigwinch to turn on use of SIGWINCH logic -echo "$as_me:15755: checking if you want SIGWINCH handler" >&5 +echo "$as_me:15615: checking if you want SIGWINCH handler" >&5 echo $ECHO_N "checking if you want SIGWINCH handler... $ECHO_C" >&6 # Check whether --enable-sigwinch or --disable-sigwinch was given. @@ -15762,7 +15622,7 @@ if test "${enable_sigwinch+set}" = set; then else with_sigwinch=$with_ext_funcs fi; -echo "$as_me:15765: result: $with_sigwinch" >&5 +echo "$as_me:15625: result: $with_sigwinch" >&5 echo "${ECHO_T}$with_sigwinch" >&6 if test "x$with_sigwinch" = xyes then @@ -15777,7 +15637,7 @@ else fi ### use option --enable-tcap-names to allow user to define new capabilities -echo "$as_me:15780: checking if you want user-definable terminal capabilities like termcap" >&5 +echo "$as_me:15640: checking if you want user-definable terminal capabilities like termcap" >&5 echo $ECHO_N "checking if you want user-definable terminal capabilities like termcap... $ECHO_C" >&6 # Check whether --enable-tcap-names or --disable-tcap-names was given. @@ -15787,7 +15647,7 @@ if test "${enable_tcap_names+set}" = set; then else with_tcap_names=$with_ext_funcs fi; -echo "$as_me:15790: result: $with_tcap_names" >&5 +echo "$as_me:15650: result: $with_tcap_names" >&5 echo "${ECHO_T}$with_tcap_names" >&6 NCURSES_XNAMES=0 if test "x$with_tcap_names" = xyes; then @@ -15801,7 +15661,108 @@ fi ############################################################################## -echo "$as_me:15804: checking if you want to link with the pthread library" >&5 +USE_NAMED_PIPES=0 +INTERNALS_HDR= + +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*|*-msvc*) + +echo "$as_me:15670: checking for named pipe functions" >&5 +echo $ECHO_N "checking for named pipe functions... $ECHO_C" >&6 +if test "${cf_cv_named_pipes+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN" + cat >"conftest.$ac_ext" <<_ACEOF +#line 15679 "configure" +#include "confdefs.h" +#include <windows.h> +int +main (void) +{ + + HANDLE handle = 0; + ULONG pPid = 0; + if (GetNamedPipeInfo(handle, NULL, NULL, NULL, NULL)) { + if (GetNamedPipeServerProcessId(handle, &pPid)) { + ${cf_cv_main_return:-return} (0); + } + } + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15699: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15702: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15705: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15708: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_named_pipes=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_named_pipes=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +echo "$as_me:15720: result: $cf_cv_named_pipes" >&5 +echo "${ECHO_T}$cf_cv_named_pipes" >&6 + if test "$cf_cv_named_pipes" = yes; then + echo "$as_me:15723: checking if you want to use named pipes with -Windows driver" >&5 +echo $ECHO_N "checking if you want to use named pipes with -Windows driver... $ECHO_C" >&6 + +# Check whether --enable-named-pipes or --disable-named-pipes was given. +if test "${enable_named_pipes+set}" = set; then + enableval="$enable_named_pipes" + with_named_pipes=$enableval +else + with_named_pipes=no +fi; + echo "$as_me:15733: result: $with_named_pipes" >&5 +echo "${ECHO_T}$with_named_pipes" >&6 + else + with_named_pipes=no + fi + if test "x$with_named_pipes" = xyes + then + +cat >>confdefs.h <<\EOF +#define USE_NAMED_PIPES 1 +EOF + + USE_NAMED_PIPES=1 + fi + INTERNALS_HDR='../include/nc_win32.h' + # MinGW32 sets $WD to its directory. + if test -n "$WD" + then + if test -d "$WD" + then + +cat >>confdefs.h <<\EOF +#define USE_DOS_PATHS 1 +EOF + + fi + fi + ;; +esac + +############################################################################## + +echo "$as_me:15765: checking if you want to link with the pthread library" >&5 echo $ECHO_N "checking if you want to link with the pthread library... $ECHO_C" >&6 # Check whether --with-pthread or --without-pthread was given. @@ -15811,27 +15772,27 @@ if test "${with_pthread+set}" = set; then else with_pthread=no fi; -echo "$as_me:15814: result: $with_pthread" >&5 +echo "$as_me:15775: result: $with_pthread" >&5 echo "${ECHO_T}$with_pthread" >&6 if test "$with_pthread" != no ; then - echo "$as_me:15818: checking for pthread.h" >&5 + echo "$as_me:15779: checking for pthread.h" >&5 echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 if test "${ac_cv_header_pthread_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 15824 "configure" +#line 15785 "configure" #include "confdefs.h" #include <pthread.h> _ACEOF -if { (eval echo "$as_me:15828: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:15789: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:15834: \$? = $ac_status" >&5 + echo "$as_me:15795: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -15850,7 +15811,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:15853: result: $ac_cv_header_pthread_h" >&5 +echo "$as_me:15814: result: $ac_cv_header_pthread_h" >&5 echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 if test "$ac_cv_header_pthread_h" = yes; then @@ -15860,7 +15821,7 @@ EOF for cf_lib_pthread in pthread c_r do - echo "$as_me:15863: checking if we can link with the $cf_lib_pthread library" >&5 + echo "$as_me:15824: checking if we can link with the $cf_lib_pthread library" >&5 echo $ECHO_N "checking if we can link with the $cf_lib_pthread library... $ECHO_C" >&6 cf_save_LIBS="$LIBS" @@ -15881,7 +15842,7 @@ done LIBS="$cf_add_libs" cat >"conftest.$ac_ext" <<_ACEOF -#line 15884 "configure" +#line 15845 "configure" #include "confdefs.h" #include <pthread.h> @@ -15898,16 +15859,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:15901: \"$ac_link\"") >&5 +if { (eval echo "$as_me:15862: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:15904: \$? = $ac_status" >&5 + echo "$as_me:15865: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:15907: \"$ac_try\"") >&5 + { (eval echo "$as_me:15868: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:15910: \$? = $ac_status" >&5 + echo "$as_me:15871: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then with_pthread=yes else @@ -15917,7 +15878,7 @@ with_pthread=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS="$cf_save_LIBS" - echo "$as_me:15920: result: $with_pthread" >&5 + echo "$as_me:15881: result: $with_pthread" >&5 echo "${ECHO_T}$with_pthread" >&6 test "$with_pthread" = yes && break done @@ -15945,7 +15906,7 @@ cat >>confdefs.h <<\EOF EOF else - { { echo "$as_me:15948: error: Cannot link with pthread library" >&5 + { { echo "$as_me:15909: error: Cannot link with pthread library" >&5 echo "$as_me: error: Cannot link with pthread library" >&2;} { (exit 1); exit 1; }; } fi @@ -15955,13 +15916,13 @@ fi fi if test "x$with_pthread" != xno; then - echo "$as_me:15958: checking for pthread_kill" >&5 + echo "$as_me:15919: checking for pthread_kill" >&5 echo $ECHO_N "checking for pthread_kill... $ECHO_C" >&6 if test "${ac_cv_func_pthread_kill+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 15964 "configure" +#line 15925 "configure" #include "confdefs.h" #define pthread_kill autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -15992,16 +15953,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:15995: \"$ac_link\"") >&5 +if { (eval echo "$as_me:15956: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:15998: \$? = $ac_status" >&5 + echo "$as_me:15959: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:16001: \"$ac_try\"") >&5 + { (eval echo "$as_me:15962: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:16004: \$? = $ac_status" >&5 + echo "$as_me:15965: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_pthread_kill=yes else @@ -16011,11 +15972,11 @@ ac_cv_func_pthread_kill=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:16014: result: $ac_cv_func_pthread_kill" >&5 +echo "$as_me:15975: result: $ac_cv_func_pthread_kill" >&5 echo "${ECHO_T}$ac_cv_func_pthread_kill" >&6 if test "$ac_cv_func_pthread_kill" = yes; then - echo "$as_me:16018: checking if you want to allow EINTR in wgetch with pthreads" >&5 + echo "$as_me:15979: checking if you want to allow EINTR in wgetch with pthreads" >&5 echo $ECHO_N "checking if you want to allow EINTR in wgetch with pthreads... $ECHO_C" >&6 # Check whether --enable-pthreads-eintr or --disable-pthreads-eintr was given. @@ -16025,7 +15986,7 @@ if test "${enable_pthreads_eintr+set}" = set; then else use_pthreads_eintr=no fi; - echo "$as_me:16028: result: $use_pthreads_eintr" >&5 + echo "$as_me:15989: result: $use_pthreads_eintr" >&5 echo "${ECHO_T}$use_pthreads_eintr" >&6 if test "x$use_pthreads_eintr" = xyes ; then @@ -16036,7 +15997,7 @@ EOF fi fi - echo "$as_me:16039: checking if you want to use weak-symbols for pthreads" >&5 + echo "$as_me:16000: checking if you want to use weak-symbols for pthreads" >&5 echo $ECHO_N "checking if you want to use weak-symbols for pthreads... $ECHO_C" >&6 # Check whether --enable-weak-symbols or --disable-weak-symbols was given. @@ -16046,18 +16007,18 @@ if test "${enable_weak_symbols+set}" = set; then else use_weak_symbols=no fi; - echo "$as_me:16049: result: $use_weak_symbols" >&5 + echo "$as_me:16010: result: $use_weak_symbols" >&5 echo "${ECHO_T}$use_weak_symbols" >&6 if test "x$use_weak_symbols" = xyes ; then -echo "$as_me:16053: checking if $CC supports weak symbols" >&5 +echo "$as_me:16014: checking if $CC supports weak symbols" >&5 echo $ECHO_N "checking if $CC supports weak symbols... $ECHO_C" >&6 if test "${cf_cv_weak_symbols+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 16060 "configure" +#line 16021 "configure" #include "confdefs.h" #include <stdio.h> @@ -16083,16 +16044,16 @@ weak_symbol(fopen); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:16086: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:16047: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:16089: \$? = $ac_status" >&5 + echo "$as_me:16050: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:16092: \"$ac_try\"") >&5 + { (eval echo "$as_me:16053: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:16095: \$? = $ac_status" >&5 + echo "$as_me:16056: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_weak_symbols=yes else @@ -16103,7 +16064,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:16106: result: $cf_cv_weak_symbols" >&5 +echo "$as_me:16067: result: $cf_cv_weak_symbols" >&5 echo "${ECHO_T}$cf_cv_weak_symbols" >&6 else @@ -16153,7 +16114,7 @@ fi # opaque outside of that, so there is no --enable-opaque option. We can use # this option without --with-pthreads, but this will be always set for # pthreads. -echo "$as_me:16156: checking if you want reentrant code" >&5 +echo "$as_me:16117: checking if you want reentrant code" >&5 echo $ECHO_N "checking if you want reentrant code... $ECHO_C" >&6 # Check whether --enable-reentrant or --disable-reentrant was given. @@ -16163,7 +16124,7 @@ if test "${enable_reentrant+set}" = set; then else with_reentrant=no fi; -echo "$as_me:16166: result: $with_reentrant" >&5 +echo "$as_me:16127: result: $with_reentrant" >&5 echo "${ECHO_T}$with_reentrant" >&6 if test "x$with_reentrant" = xyes ; then cf_cv_enable_reentrant=1 @@ -16252,7 +16213,7 @@ if test "${with_abi_version+set}" != set; then cf_cv_rel_version=6.0 cf_cv_abi_version=6 cf_cv_abi_default=6 - { echo "$as_me:16255: WARNING: overriding ABI version to $cf_cv_abi_default" >&5 + { echo "$as_me:16216: WARNING: overriding ABI version to $cf_cv_abi_default" >&5 echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_default" >&2;} ;; esac @@ -16264,7 +16225,7 @@ else NCURSES_SIZE_T=$cf_dft_ordinate_type fi -echo "$as_me:16267: checking whether curses library structures should be opaque" >&5 +echo "$as_me:16228: checking whether curses library structures should be opaque" >&5 echo $ECHO_N "checking whether curses library structures should be opaque... $ECHO_C" >&6 # Check whether --enable-opaque-curses or --disable-opaque-curses was given. @@ -16286,16 +16247,16 @@ else test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=$cf_dft_opaque_curses fi; -echo "$as_me:16289: result: $enable_opaque_curses" >&5 +echo "$as_me:16250: result: $enable_opaque_curses" >&5 echo "${ECHO_T}$enable_opaque_curses" >&6 test "$cf_cv_enable_reentrant" = 1 && \ test "$enable_opaque_curses" = no && \ -{ { echo "$as_me:16294: error: reentrant configuration requires opaque library" >&5 +{ { echo "$as_me:16255: error: reentrant configuration requires opaque library" >&5 echo "$as_me: error: reentrant configuration requires opaque library" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:16298: checking whether form library structures should be opaque" >&5 +echo "$as_me:16259: checking whether form library structures should be opaque" >&5 echo $ECHO_N "checking whether form library structures should be opaque... $ECHO_C" >&6 # Check whether --enable-opaque-form or --disable-opaque-form was given. @@ -16312,10 +16273,10 @@ else enable_opaque_form=$cf_dft_opaque_curses fi; -echo "$as_me:16315: result: $enable_opaque_form" >&5 +echo "$as_me:16276: result: $enable_opaque_form" >&5 echo "${ECHO_T}$enable_opaque_form" >&6 -echo "$as_me:16318: checking whether menu library structures should be opaque" >&5 +echo "$as_me:16279: checking whether menu library structures should be opaque" >&5 echo $ECHO_N "checking whether menu library structures should be opaque... $ECHO_C" >&6 # Check whether --enable-opaque-menu or --disable-opaque-menu was given. @@ -16332,10 +16293,10 @@ else enable_opaque_menu=$cf_dft_opaque_curses fi; -echo "$as_me:16335: result: $enable_opaque_menu" >&5 +echo "$as_me:16296: result: $enable_opaque_menu" >&5 echo "${ECHO_T}$enable_opaque_menu" >&6 -echo "$as_me:16338: checking whether panel library structures should be opaque" >&5 +echo "$as_me:16299: checking whether panel library structures should be opaque" >&5 echo $ECHO_N "checking whether panel library structures should be opaque... $ECHO_C" >&6 # Check whether --enable-opaque-panel or --disable-opaque-panel was given. @@ -16352,7 +16313,7 @@ else enable_opaque_panel=$cf_dft_opaque_curses fi; -echo "$as_me:16355: result: $enable_opaque_panel" >&5 +echo "$as_me:16316: result: $enable_opaque_panel" >&5 echo "${ECHO_T}$enable_opaque_panel" >&6 NCURSES_OPAQUE=0; test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1 @@ -16362,7 +16323,7 @@ NCURSES_OPAQUE_PANEL=0; test "$enable_opaque_panel" = yes && NCURSES_OPAQUE_PAN ### Allow using a different wrap-prefix if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then - echo "$as_me:16365: checking for prefix used to wrap public variables" >&5 + echo "$as_me:16326: checking for prefix used to wrap public variables" >&5 echo $ECHO_N "checking for prefix used to wrap public variables... $ECHO_C" >&6 # Check whether --with-wrap-prefix or --without-wrap-prefix was given. @@ -16372,7 +16333,7 @@ if test "${with_wrap_prefix+set}" = set; then else NCURSES_WRAP_PREFIX=_nc_ fi; - echo "$as_me:16375: result: $NCURSES_WRAP_PREFIX" >&5 + echo "$as_me:16336: result: $NCURSES_WRAP_PREFIX" >&5 echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6 else NCURSES_WRAP_PREFIX=_nc_ @@ -16385,7 +16346,7 @@ EOF ############################################################################### # These options are relatively safe to experiment with. -echo "$as_me:16388: checking if you want all development code" >&5 +echo "$as_me:16349: checking if you want all development code" >&5 echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6 # Check whether --with-develop or --without-develop was given. @@ -16395,11 +16356,11 @@ if test "${with_develop+set}" = set; then else with_develop=no fi; -echo "$as_me:16398: result: $with_develop" >&5 +echo "$as_me:16359: result: $with_develop" >&5 echo "${ECHO_T}$with_develop" >&6 ### use option --enable-check-size to detect screensize with CPR -echo "$as_me:16402: checking if you want to check screensize of serial terminals" >&5 +echo "$as_me:16363: checking if you want to check screensize of serial terminals" >&5 echo $ECHO_N "checking if you want to check screensize of serial terminals... $ECHO_C" >&6 # Check whether --enable-check-size or --disable-check-size was given. @@ -16409,7 +16370,7 @@ if test "${enable_check_size+set}" = set; then else enable_check_size=$with_develop fi; -echo "$as_me:16412: result: $enable_check_size" >&5 +echo "$as_me:16373: result: $enable_check_size" >&5 echo "${ECHO_T}$enable_check_size" >&6 test "x$enable_check_size" = xyes && cat >>confdefs.h <<\EOF @@ -16417,7 +16378,7 @@ cat >>confdefs.h <<\EOF EOF ### use option --enable-hard-tabs to turn on use of hard-tabs optimize -echo "$as_me:16420: checking if you want hard-tabs code" >&5 +echo "$as_me:16381: checking if you want hard-tabs code" >&5 echo $ECHO_N "checking if you want hard-tabs code... $ECHO_C" >&6 # Check whether --enable-hard-tabs or --disable-hard-tabs was given. @@ -16427,7 +16388,7 @@ if test "${enable_hard_tabs+set}" = set; then else enable_hard_tabs=$with_develop fi; -echo "$as_me:16430: result: $enable_hard_tabs" >&5 +echo "$as_me:16391: result: $enable_hard_tabs" >&5 echo "${ECHO_T}$enable_hard_tabs" >&6 test "x$enable_hard_tabs" = xyes && cat >>confdefs.h <<\EOF @@ -16435,7 +16396,7 @@ cat >>confdefs.h <<\EOF EOF ### use option --enable-xmc-glitch to turn on use of magic-cookie optimize -echo "$as_me:16438: checking if you want limited support for xmc" >&5 +echo "$as_me:16399: checking if you want limited support for xmc" >&5 echo $ECHO_N "checking if you want limited support for xmc... $ECHO_C" >&6 # Check whether --enable-xmc-glitch or --disable-xmc-glitch was given. @@ -16445,7 +16406,7 @@ if test "${enable_xmc_glitch+set}" = set; then else enable_xmc_glitch=$with_develop fi; -echo "$as_me:16448: result: $enable_xmc_glitch" >&5 +echo "$as_me:16409: result: $enable_xmc_glitch" >&5 echo "${ECHO_T}$enable_xmc_glitch" >&6 test "x$enable_xmc_glitch" = xyes && cat >>confdefs.h <<\EOF @@ -16455,7 +16416,7 @@ EOF ############################################################################### # These are just experimental, probably should not be in a package: -echo "$as_me:16458: checking if you do not want to assume colors are white-on-black" >&5 +echo "$as_me:16419: checking if you do not want to assume colors are white-on-black" >&5 echo $ECHO_N "checking if you do not want to assume colors are white-on-black... $ECHO_C" >&6 # Check whether --enable-assumed-color or --disable-assumed-color was given. @@ -16465,7 +16426,7 @@ if test "${enable_assumed_color+set}" = set; then else with_assumed_color=yes fi; -echo "$as_me:16468: result: $with_assumed_color" >&5 +echo "$as_me:16429: result: $with_assumed_color" >&5 echo "${ECHO_T}$with_assumed_color" >&6 test "x$with_assumed_color" = xyes && cat >>confdefs.h <<\EOF @@ -16473,7 +16434,7 @@ cat >>confdefs.h <<\EOF EOF ### use option --enable-hashmap to turn on use of hashmap scrolling logic -echo "$as_me:16476: checking if you want hashmap scrolling-optimization code" >&5 +echo "$as_me:16437: checking if you want hashmap scrolling-optimization code" >&5 echo $ECHO_N "checking if you want hashmap scrolling-optimization code... $ECHO_C" >&6 # Check whether --enable-hashmap or --disable-hashmap was given. @@ -16483,7 +16444,7 @@ if test "${enable_hashmap+set}" = set; then else with_hashmap=yes fi; -echo "$as_me:16486: result: $with_hashmap" >&5 +echo "$as_me:16447: result: $with_hashmap" >&5 echo "${ECHO_T}$with_hashmap" >&6 test "x$with_hashmap" = xyes && cat >>confdefs.h <<\EOF @@ -16491,7 +16452,7 @@ cat >>confdefs.h <<\EOF EOF ### use option --enable-colorfgbg to turn on use of $COLORFGBG environment -echo "$as_me:16494: checking if you want colorfgbg code" >&5 +echo "$as_me:16455: checking if you want colorfgbg code" >&5 echo $ECHO_N "checking if you want colorfgbg code... $ECHO_C" >&6 # Check whether --enable-colorfgbg or --disable-colorfgbg was given. @@ -16501,7 +16462,7 @@ if test "${enable_colorfgbg+set}" = set; then else with_colorfgbg=no fi; -echo "$as_me:16504: result: $with_colorfgbg" >&5 +echo "$as_me:16465: result: $with_colorfgbg" >&5 echo "${ECHO_T}$with_colorfgbg" >&6 test "x$with_colorfgbg" = xyes && cat >>confdefs.h <<\EOF @@ -16509,7 +16470,7 @@ cat >>confdefs.h <<\EOF EOF ### use option --enable-fvisibility to turn on use of gcc-specific feature -echo "$as_me:16512: checking if you want to use gcc -fvisibility option" >&5 +echo "$as_me:16473: checking if you want to use gcc -fvisibility option" >&5 echo $ECHO_N "checking if you want to use gcc -fvisibility option... $ECHO_C" >&6 # Check whether --enable-fvisibility or --disable-fvisibility was given. @@ -16519,14 +16480,14 @@ if test "${enable_fvisibility+set}" = set; then else cf_with_fvisibility=no fi; -echo "$as_me:16522: result: $cf_with_fvisibility" >&5 +echo "$as_me:16483: result: $cf_with_fvisibility" >&5 echo "${ECHO_T}$cf_with_fvisibility" >&6 NCURSES_IMPEXP= NCURSES_CXX_IMPEXP= if test "x$cf_with_fvisibility" = xyes; then -echo "$as_me:16529: checking if $CC -fvisibility=hidden option works" >&5 +echo "$as_me:16490: checking if $CC -fvisibility=hidden option works" >&5 echo $ECHO_N "checking if $CC -fvisibility=hidden option works... $ECHO_C" >&6 if test "${cf_cv_fvisibility_hidden+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -16535,7 +16496,7 @@ else cf_save_cflags="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" cat >"conftest.$ac_ext" <<_ACEOF -#line 16538 "configure" +#line 16499 "configure" #include "confdefs.h" __attribute__ ((visibility("default"))) int somefunc() {return 42;} @@ -16551,16 +16512,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:16554: \"$ac_link\"") >&5 +if { (eval echo "$as_me:16515: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:16557: \$? = $ac_status" >&5 + echo "$as_me:16518: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:16560: \"$ac_try\"") >&5 + { (eval echo "$as_me:16521: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:16563: \$? = $ac_status" >&5 + echo "$as_me:16524: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_fvisibility_hidden=yes else @@ -16572,7 +16533,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" CFLAGS=$cf_save_cflags fi -echo "$as_me:16575: result: $cf_cv_fvisibility_hidden" >&5 +echo "$as_me:16536: result: $cf_cv_fvisibility_hidden" >&5 echo "${ECHO_T}$cf_cv_fvisibility_hidden" >&6 if test "x$cf_cv_fvisibility_hidden" = xyes @@ -16687,7 +16648,7 @@ ac_link='$CXX -o "conftest$ac_exeext" $CXXFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" -echo "$as_me:16690: checking if $CXX -fvisibility=hidden option works" >&5 +echo "$as_me:16651: checking if $CXX -fvisibility=hidden option works" >&5 echo $ECHO_N "checking if $CXX -fvisibility=hidden option works... $ECHO_C" >&6 if test "${cf_cv_fvisibility_hidden2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -16696,7 +16657,7 @@ else cf_save_cflags="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fvisibility=hidden" cat >"conftest.$ac_ext" <<_ACEOF -#line 16699 "configure" +#line 16660 "configure" #include "confdefs.h" __attribute__ ((visibility("default"))) int somefunc() {return 42;} @@ -16712,16 +16673,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:16715: \"$ac_link\"") >&5 +if { (eval echo "$as_me:16676: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:16718: \$? = $ac_status" >&5 + echo "$as_me:16679: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:16721: \"$ac_try\"") >&5 + { (eval echo "$as_me:16682: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:16724: \$? = $ac_status" >&5 + echo "$as_me:16685: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_fvisibility_hidden2=yes else @@ -16733,7 +16694,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" CXXFLAGS=$cf_save_cflags fi -echo "$as_me:16736: result: $cf_cv_fvisibility_hidden2" >&5 +echo "$as_me:16697: result: $cf_cv_fvisibility_hidden2" >&5 echo "${ECHO_T}$cf_cv_fvisibility_hidden2" >&6 if test "x$cf_cv_fvisibility_hidden2" = xyes @@ -16856,7 +16817,7 @@ ac_main_return="return" fi ### use option --enable-interop to turn on use of bindings used for interop -echo "$as_me:16859: checking if you want interop bindings" >&5 +echo "$as_me:16820: checking if you want interop bindings" >&5 echo $ECHO_N "checking if you want interop bindings... $ECHO_C" >&6 # Check whether --enable-interop or --disable-interop was given. @@ -16866,13 +16827,13 @@ if test "${enable_interop+set}" = set; then else with_exp_interop=$cf_dft_interop fi; -echo "$as_me:16869: result: $with_exp_interop" >&5 +echo "$as_me:16830: result: $with_exp_interop" >&5 echo "${ECHO_T}$with_exp_interop" >&6 NCURSES_INTEROP_FUNCS=0 test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1 -echo "$as_me:16875: checking if you want experimental safe-sprintf code" >&5 +echo "$as_me:16836: checking if you want experimental safe-sprintf code" >&5 echo $ECHO_N "checking if you want experimental safe-sprintf code... $ECHO_C" >&6 # Check whether --enable-safe-sprintf or --disable-safe-sprintf was given. @@ -16882,13 +16843,13 @@ if test "${enable_safe_sprintf+set}" = set; then else with_safe_sprintf=no fi; -echo "$as_me:16885: result: $with_safe_sprintf" >&5 +echo "$as_me:16846: result: $with_safe_sprintf" >&5 echo "${ECHO_T}$with_safe_sprintf" >&6 ### use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic # when hashmap is used scroll hints are useless if test "$with_hashmap" = no ; then -echo "$as_me:16891: checking if you want to experiment without scrolling-hints code" >&5 +echo "$as_me:16852: checking if you want to experiment without scrolling-hints code" >&5 echo $ECHO_N "checking if you want to experiment without scrolling-hints code... $ECHO_C" >&6 # Check whether --enable-scroll-hints or --disable-scroll-hints was given. @@ -16898,7 +16859,7 @@ if test "${enable_scroll_hints+set}" = set; then else with_scroll_hints=yes fi; -echo "$as_me:16901: result: $with_scroll_hints" >&5 +echo "$as_me:16862: result: $with_scroll_hints" >&5 echo "${ECHO_T}$with_scroll_hints" >&6 test "x$with_scroll_hints" = xyes && cat >>confdefs.h <<\EOF @@ -16907,7 +16868,12 @@ EOF fi -echo "$as_me:16910: checking if you want wgetch-events code" >&5 +case x$cf_cv_abi_default in +(x[789]) + NCURSES_WGETCH_EVENTS=0 + ;; +(*) +echo "$as_me:16876: checking if you want wgetch-events code" >&5 echo $ECHO_N "checking if you want wgetch-events code... $ECHO_C" >&6 # Check whether --enable-wgetch-events or --disable-wgetch-events was given. @@ -16917,7 +16883,7 @@ if test "${enable_wgetch_events+set}" = set; then else with_wgetch_events=no fi; -echo "$as_me:16920: result: $with_wgetch_events" >&5 +echo "$as_me:16886: result: $with_wgetch_events" >&5 echo "${ECHO_T}$with_wgetch_events" >&6 if test "x$with_wgetch_events" = xyes ; then @@ -16929,38 +16895,17 @@ EOF else NCURSES_WGETCH_EVENTS=0 fi +esac case "$cf_cv_system_name" in (*mingw32*|*mingw64*|*-msvc*) - echo "$as_me:16935: checking if you want experimental-Windows driver" >&5 -echo $ECHO_N "checking if you want experimental-Windows driver... $ECHO_C" >&6 # Check whether --enable-exp-win32 or --disable-exp-win32 was given. if test "${enable_exp_win32+set}" = set; then enableval="$enable_exp_win32" - with_exp_win32=$enableval -else - with_exp_win32=no + { echo "$as_me:16906: WARNING: The --enable-exp-win32 option is obsolete" >&5 +echo "$as_me: WARNING: The --enable-exp-win32 option is obsolete" >&2;} fi; - echo "$as_me:16945: result: $with_exp_win32" >&5 -echo "${ECHO_T}$with_exp_win32" >&6 - if test "x$with_exp_win32" = xyes - then - -cat >>confdefs.h <<\EOF -#define EXP_WIN32_DRIVER 1 -EOF - - EXP_WIN32_DRIVER=1 - INTERNALS_HDR='$(INCDIR)/nc_win32.h' - else - INTERNALS_HDR='$(INCDIR)/nc_mingw.h' - EXP_WIN32_DRIVER=0 - fi - ;; -(*) - EXP_WIN32_DRIVER=0 - INTERNALS_HDR= ;; esac @@ -16968,7 +16913,7 @@ esac ### use option --disable-echo to suppress full display compiling commands -echo "$as_me:16971: checking if you want to see long compiling messages" >&5 +echo "$as_me:16916: checking if you want to see long compiling messages" >&5 echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6 # Check whether --enable-echo or --disable-echo was given. @@ -17002,7 +16947,7 @@ else ECHO_CC='' fi; -echo "$as_me:17005: result: $enableval" >&5 +echo "$as_me:16950: result: $enableval" >&5 echo "${ECHO_T}$enableval" >&6 if test "x$enable_echo" = xyes; then @@ -17015,7 +16960,7 @@ fi # --disable-stripping is used for debugging -echo "$as_me:17018: checking if you want to install stripped executables" >&5 +echo "$as_me:16963: checking if you want to install stripped executables" >&5 echo $ECHO_N "checking if you want to install stripped executables... $ECHO_C" >&6 # Check whether --enable-stripping or --disable-stripping was given. @@ -17032,7 +16977,7 @@ else enable_stripping=yes fi; -echo "$as_me:17035: result: $enable_stripping" >&5 +echo "$as_me:16980: result: $enable_stripping" >&5 echo "${ECHO_T}$enable_stripping" >&6 if test "$enable_stripping" = yes @@ -17043,7 +16988,7 @@ else fi : "${INSTALL:=install}" -echo "$as_me:17046: checking if install accepts -p option" >&5 +echo "$as_me:16991: checking if install accepts -p option" >&5 echo $ECHO_N "checking if install accepts -p option... $ECHO_C" >&6 if test "${cf_cv_install_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -17074,10 +17019,10 @@ else rm -rf ./conftest* fi -echo "$as_me:17077: result: $cf_cv_install_p" >&5 +echo "$as_me:17022: result: $cf_cv_install_p" >&5 echo "${ECHO_T}$cf_cv_install_p" >&6 -echo "$as_me:17080: checking if install needs to be told about ownership" >&5 +echo "$as_me:17025: checking if install needs to be told about ownership" >&5 echo $ECHO_N "checking if install needs to be told about ownership... $ECHO_C" >&6 case `$ac_config_guess` in (*minix) @@ -17088,7 +17033,7 @@ case `$ac_config_guess` in ;; esac -echo "$as_me:17091: result: $with_install_o" >&5 +echo "$as_me:17036: result: $with_install_o" >&5 echo "${ECHO_T}$with_install_o" >&6 if test "x$with_install_o" = xyes then @@ -17099,7 +17044,7 @@ fi if test -n "$INSTALL_OPT_S" then - echo "$as_me:17102: checking if you want to specify strip-program" >&5 + echo "$as_me:17047: checking if you want to specify strip-program" >&5 echo $ECHO_N "checking if you want to specify strip-program... $ECHO_C" >&6 # Check whether --with-strip-program or --without-strip-program was given. @@ -17109,11 +17054,11 @@ if test "${with_strip_program+set}" = set; then else with_strip_program=no fi; - echo "$as_me:17112: result: $with_strip_program" >&5 + echo "$as_me:17057: result: $with_strip_program" >&5 echo "${ECHO_T}$with_strip_program" >&6 if test "$with_strip_program" != no then - echo "$as_me:17116: checking if strip-program is supported with this installer" >&5 + echo "$as_me:17061: checking if strip-program is supported with this installer" >&5 echo $ECHO_N "checking if strip-program is supported with this installer... $ECHO_C" >&6 cf_install_program=`echo "$INSTALL" | sed -e 's%[ ]*[ ]-.%%'` check_install_strip=no @@ -17134,11 +17079,11 @@ echo $ECHO_N "checking if strip-program is supported with this installer... $ECH done fi fi - echo "$as_me:17137: result: $check_install_strip" >&5 + echo "$as_me:17082: result: $check_install_strip" >&5 echo "${ECHO_T}$check_install_strip" >&6 case "$check_install_strip" in (no) - { echo "$as_me:17141: WARNING: $cf_install_program does not support strip program option" >&5 + { echo "$as_me:17086: WARNING: $cf_install_program does not support strip program option" >&5 echo "$as_me: WARNING: $cf_install_program does not support strip program option" >&2;} with_strip_program=no ;; @@ -17153,7 +17098,7 @@ echo "$as_me: WARNING: $cf_install_program does not support strip program option chmod +x "$INSTALL" test -n "$verbose" && echo " created $INSTALL" 1>&6 -echo "${as_me:-configure}:17156: testing created $INSTALL ..." 1>&5 +echo "${as_me:-configure}:17101: testing created $INSTALL ..." 1>&5 ;; (option) @@ -17179,7 +17124,7 @@ fi ### use option --enable-warnings to turn on all gcc warnings -echo "$as_me:17182: checking if you want to use C11 _Noreturn feature" >&5 +echo "$as_me:17127: checking if you want to use C11 _Noreturn feature" >&5 echo $ECHO_N "checking if you want to use C11 _Noreturn feature... $ECHO_C" >&6 # Check whether --enable-stdnoreturn or --disable-stdnoreturn was given. @@ -17196,17 +17141,17 @@ else enable_stdnoreturn=no fi; -echo "$as_me:17199: result: $enable_stdnoreturn" >&5 +echo "$as_me:17144: result: $enable_stdnoreturn" >&5 echo "${ECHO_T}$enable_stdnoreturn" >&6 if test $enable_stdnoreturn = yes; then -echo "$as_me:17203: checking for C11 _Noreturn feature" >&5 +echo "$as_me:17148: checking for C11 _Noreturn feature" >&5 echo $ECHO_N "checking for C11 _Noreturn feature... $ECHO_C" >&6 if test "${cf_cv_c11_noreturn+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 17209 "configure" +#line 17154 "configure" #include "confdefs.h" $ac_includes_default @@ -17222,16 +17167,16 @@ if (feof(stdin)) giveup() } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:17225: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:17170: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17228: \$? = $ac_status" >&5 + echo "$as_me:17173: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:17231: \"$ac_try\"") >&5 + { (eval echo "$as_me:17176: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:17234: \$? = $ac_status" >&5 + echo "$as_me:17179: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_c11_noreturn=yes else @@ -17242,7 +17187,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:17245: result: $cf_cv_c11_noreturn" >&5 +echo "$as_me:17190: result: $cf_cv_c11_noreturn" >&5 echo "${ECHO_T}$cf_cv_c11_noreturn" >&6 else cf_cv_c11_noreturn=no, @@ -17298,16 +17243,16 @@ then then test -n "$verbose" && echo " repairing CFLAGS: $CFLAGS" 1>&6 -echo "${as_me:-configure}:17301: testing repairing CFLAGS: $CFLAGS ..." 1>&5 +echo "${as_me:-configure}:17246: testing repairing CFLAGS: $CFLAGS ..." 1>&5 CFLAGS="$cf_temp_flags" test -n "$verbose" && echo " ... fixed $CFLAGS" 1>&6 -echo "${as_me:-configure}:17306: testing ... fixed $CFLAGS ..." 1>&5 +echo "${as_me:-configure}:17251: testing ... fixed $CFLAGS ..." 1>&5 test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 -echo "${as_me:-configure}:17310: testing ... extra $EXTRA_CFLAGS ..." 1>&5 +echo "${as_me:-configure}:17255: testing ... extra $EXTRA_CFLAGS ..." 1>&5 fi ;; @@ -17346,16 +17291,16 @@ then then test -n "$verbose" && echo " repairing CPPFLAGS: $CPPFLAGS" 1>&6 -echo "${as_me:-configure}:17349: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5 +echo "${as_me:-configure}:17294: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5 CPPFLAGS="$cf_temp_flags" test -n "$verbose" && echo " ... fixed $CPPFLAGS" 1>&6 -echo "${as_me:-configure}:17354: testing ... fixed $CPPFLAGS ..." 1>&5 +echo "${as_me:-configure}:17299: testing ... fixed $CPPFLAGS ..." 1>&5 test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 -echo "${as_me:-configure}:17358: testing ... extra $EXTRA_CFLAGS ..." 1>&5 +echo "${as_me:-configure}:17303: testing ... extra $EXTRA_CFLAGS ..." 1>&5 fi ;; @@ -17394,23 +17339,23 @@ then then test -n "$verbose" && echo " repairing LDFLAGS: $LDFLAGS" 1>&6 -echo "${as_me:-configure}:17397: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5 +echo "${as_me:-configure}:17342: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5 LDFLAGS="$cf_temp_flags" test -n "$verbose" && echo " ... fixed $LDFLAGS" 1>&6 -echo "${as_me:-configure}:17402: testing ... fixed $LDFLAGS ..." 1>&5 +echo "${as_me:-configure}:17347: testing ... fixed $LDFLAGS ..." 1>&5 test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 -echo "${as_me:-configure}:17406: testing ... extra $EXTRA_CFLAGS ..." 1>&5 +echo "${as_me:-configure}:17351: testing ... extra $EXTRA_CFLAGS ..." 1>&5 fi ;; esac fi -echo "$as_me:17413: checking if you want to turn on gcc warnings" >&5 +echo "$as_me:17358: checking if you want to turn on gcc warnings" >&5 echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6 # Check whether --enable-warnings or --disable-warnings was given. @@ -17427,7 +17372,7 @@ else enable_warnings=no fi; -echo "$as_me:17430: result: $enable_warnings" >&5 +echo "$as_me:17375: result: $enable_warnings" >&5 echo "${ECHO_T}$enable_warnings" >&6 if test "$enable_warnings" = "yes" then @@ -17451,10 +17396,10 @@ do done cat >"conftest.$ac_ext" <<_ACEOF -#line 17454 "configure" +#line 17399 "configure" #include "confdefs.h" -#include <stdlib.h> +$ac_includes_default #include <X11/Intrinsic.h> int @@ -17466,32 +17411,32 @@ String foo = malloc(1); free((void*)foo) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:17469: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:17414: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17472: \$? = $ac_status" >&5 + echo "$as_me:17417: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:17475: \"$ac_try\"") >&5 + { (eval echo "$as_me:17420: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:17478: \$? = $ac_status" >&5 + echo "$as_me:17423: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then -echo "$as_me:17481: checking for X11/Xt const-feature" >&5 +echo "$as_me:17426: checking for X11/Xt const-feature" >&5 echo $ECHO_N "checking for X11/Xt const-feature... $ECHO_C" >&6 if test "${cf_cv_const_x_string+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 17488 "configure" +#line 17433 "configure" #include "confdefs.h" #undef _CONST_X_STRING #define _CONST_X_STRING /* X11R7.8 (perhaps) */ #undef XTSTRINGDEFINES /* X11R5 and later */ -#include <stdlib.h> +$ac_includes_default #include <X11/Intrinsic.h> int @@ -17503,16 +17448,16 @@ String foo = malloc(1); *foo = 0 } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:17506: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:17451: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17509: \$? = $ac_status" >&5 + echo "$as_me:17454: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:17512: \"$ac_try\"") >&5 + { (eval echo "$as_me:17457: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:17515: \$? = $ac_status" >&5 + echo "$as_me:17460: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_const_x_string=no @@ -17527,7 +17472,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:17530: result: $cf_cv_const_x_string" >&5 +echo "$as_me:17475: result: $cf_cv_const_x_string" >&5 echo "${ECHO_T}$cf_cv_const_x_string" >&6 LIBS="$cf_save_LIBS_CF_CONST_X_STRING" @@ -17556,7 +17501,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi cat > "conftest.$ac_ext" <<EOF -#line 17559 "${as_me:-configure}" +#line 17504 "${as_me:-configure}" int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; } EOF if test "$INTEL_COMPILER" = yes @@ -17572,8 +17517,10 @@ then # remark #981: operands are evaluated in unspecified order # warning #279: controlling expression is constant - { echo "$as_me:17575: checking for $CC warning options..." >&5 -echo "$as_me: checking for $CC warning options..." >&6;} + echo "$as_me:17520: checking for $CC warning options" >&5 +echo $ECHO_N "checking for $CC warning options... $ECHO_C" >&6 + test -n "$verbose" && echo "$as_me:17522: result: " >&5 +echo "${ECHO_T}" >&6 cf_save_CFLAGS="$CFLAGS" EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" for cf_opt in \ @@ -17588,12 +17535,12 @@ echo "$as_me: checking for $CC warning options..." >&6;} wd981 do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:17591: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:17538: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17594: \$? = $ac_status" >&5 + echo "$as_me:17541: \$? = $ac_status" >&5 (exit "$ac_status"); }; then - test -n "$verbose" && echo "$as_me:17596: result: ... -$cf_opt" >&5 + test -n "$verbose" && echo "$as_me:17543: result: ... -$cf_opt" >&5 echo "${ECHO_T}... -$cf_opt" >&6 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" fi @@ -17601,8 +17548,10 @@ echo "${ECHO_T}... -$cf_opt" >&6 CFLAGS="$cf_save_CFLAGS" elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" then - { echo "$as_me:17604: checking for $CC warning options..." >&5 -echo "$as_me: checking for $CC warning options..." >&6;} + echo "$as_me:17551: checking for $CC warning options" >&5 +echo $ECHO_N "checking for $CC warning options... $ECHO_C" >&6 + test -n "$verbose" && echo "$as_me:17553: result: " >&5 +echo "${ECHO_T}" >&6 cf_save_CFLAGS="$CFLAGS" cf_warn_CONST="" test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" @@ -17624,12 +17573,12 @@ echo "$as_me: checking for $CC warning options..." >&6;} Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:17627: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:17576: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17630: \$? = $ac_status" >&5 + echo "$as_me:17579: \$? = $ac_status" >&5 (exit "$ac_status"); }; then - test -n "$verbose" && echo "$as_me:17632: result: ... -$cf_opt" >&5 + test -n "$verbose" && echo "$as_me:17581: result: ... -$cf_opt" >&5 echo "${ECHO_T}... -$cf_opt" >&6 case "$cf_opt" in (Winline) @@ -17637,7 +17586,7 @@ echo "${ECHO_T}... -$cf_opt" >&6 ([34].*) test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 -echo "${as_me:-configure}:17640: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 +echo "${as_me:-configure}:17589: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 continue;; esac @@ -17647,7 +17596,7 @@ echo "${as_me:-configure}:17640: testing feature is broken in gcc $GCC_VERSION . ([12].*) test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 -echo "${as_me:-configure}:17650: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 +echo "${as_me:-configure}:17599: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 continue;; esac @@ -17680,10 +17629,12 @@ cat > conftest.i <<EOF EOF if test "$GCC" = yes then - { echo "$as_me:17683: checking for $CC __attribute__ directives..." >&5 -echo "$as_me: checking for $CC __attribute__ directives..." >&6;} + echo "$as_me:17632: checking for $CC __attribute__ directives" >&5 +echo $ECHO_N "checking for $CC __attribute__ directives... $ECHO_C" >&6 + test -n "$verbose" && echo "$as_me:17634: result: " >&5 +echo "${ECHO_T}" >&6 cat > "conftest.$ac_ext" <<EOF -#line 17686 "${as_me:-configure}" +#line 17637 "${as_me:-configure}" #include <stdio.h> #include "confdefs.h" #include "conftest.h" @@ -17733,12 +17684,12 @@ EOF ;; esac - if { (eval echo "$as_me:17736: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:17687: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17739: \$? = $ac_status" >&5 + echo "$as_me:17690: \$? = $ac_status" >&5 (exit "$ac_status"); }; then - test -n "$verbose" && echo "$as_me:17741: result: ... $cf_attribute" >&5 + test -n "$verbose" && echo "$as_me:17692: result: ... $cf_attribute" >&5 echo "${ECHO_T}... $cf_attribute" >&6 cat conftest.h >>confdefs.h case "$cf_attribute" in @@ -17810,12 +17761,12 @@ INTEL_CPLUSPLUS=no if test "$GCC" = yes ; then case "$host_os" in (linux*|gnu*) - echo "$as_me:17813: checking if this is really Intel C++ compiler" >&5 + echo "$as_me:17764: checking if this is really Intel C++ compiler" >&5 echo $ECHO_N "checking if this is really Intel C++ compiler... $ECHO_C" >&6 cf_save_CFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -no-gcc" cat >"conftest.$ac_ext" <<_ACEOF -#line 17818 "configure" +#line 17769 "configure" #include "confdefs.h" int @@ -17832,16 +17783,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:17835: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:17786: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17838: \$? = $ac_status" >&5 + echo "$as_me:17789: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:17841: \"$ac_try\"") >&5 + { (eval echo "$as_me:17792: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:17844: \$? = $ac_status" >&5 + echo "$as_me:17795: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then INTEL_CPLUSPLUS=yes cf_save_CFLAGS="$cf_save_CFLAGS -we147" @@ -17852,7 +17803,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" CXXFLAGS="$cf_save_CFLAGS" - echo "$as_me:17855: result: $INTEL_CPLUSPLUS" >&5 + echo "$as_me:17806: result: $INTEL_CPLUSPLUS" >&5 echo "${ECHO_T}$INTEL_CPLUSPLUS" >&6 ;; esac @@ -17861,11 +17812,11 @@ fi CLANG_CPLUSPLUS=no if test "$GCC" = yes ; then - echo "$as_me:17864: checking if this is really Clang C++ compiler" >&5 + echo "$as_me:17815: checking if this is really Clang C++ compiler" >&5 echo $ECHO_N "checking if this is really Clang C++ compiler... $ECHO_C" >&6 cf_save_CFLAGS="$CXXFLAGS" cat >"conftest.$ac_ext" <<_ACEOF -#line 17868 "configure" +#line 17819 "configure" #include "confdefs.h" int @@ -17882,16 +17833,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:17885: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:17836: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:17888: \$? = $ac_status" >&5 + echo "$as_me:17839: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:17891: \"$ac_try\"") >&5 + { (eval echo "$as_me:17842: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:17894: \$? = $ac_status" >&5 + echo "$as_me:17845: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then CLANG_CPLUSPLUS=yes @@ -17901,7 +17852,7 @@ cat "conftest.$ac_ext" >&5 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" CXXFLAGS="$cf_save_CFLAGS" - echo "$as_me:17904: result: $CLANG_CPLUSPLUS" >&5 + echo "$as_me:17855: result: $CLANG_CPLUSPLUS" >&5 echo "${ECHO_T}$CLANG_CPLUSPLUS" >&6 fi @@ -17910,30 +17861,30 @@ CLANG_VERSION=none if test "x$CLANG_CPLUSPLUS" = "xyes" ; then case "$CC" in (c[1-9][0-9]|*/c[1-9][0-9]) - { echo "$as_me:17913: WARNING: replacing broken compiler alias $CC" >&5 + { echo "$as_me:17864: WARNING: replacing broken compiler alias $CC" >&5 echo "$as_me: WARNING: replacing broken compiler alias $CC" >&2;} CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" CC=clang ;; esac - echo "$as_me:17920: checking version of $CC" >&5 + echo "$as_me:17871: checking version of $CC" >&5 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" test -z "$CLANG_VERSION" && CLANG_VERSION=unknown - echo "$as_me:17924: result: $CLANG_VERSION" >&5 + echo "$as_me:17875: result: $CLANG_VERSION" >&5 echo "${ECHO_T}$CLANG_VERSION" >&6 for cf_clang_opt in \ -Qunused-arguments \ -Wno-error=implicit-function-declaration do - echo "$as_me:17931: checking if option $cf_clang_opt works" >&5 + echo "$as_me:17882: checking if option $cf_clang_opt works" >&5 echo $ECHO_N "checking if option $cf_clang_opt works... $ECHO_C" >&6 cf_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $cf_clang_opt" cat >"conftest.$ac_ext" <<_ACEOF -#line 17936 "configure" +#line 17887 "configure" #include "confdefs.h" #include <stdio.h> @@ -17947,16 +17898,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:17950: \"$ac_link\"") >&5 +if { (eval echo "$as_me:17901: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:17953: \$? = $ac_status" >&5 + echo "$as_me:17904: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:17956: \"$ac_try\"") >&5 + { (eval echo "$as_me:17907: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:17959: \$? = $ac_status" >&5 + echo "$as_me:17910: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_clang_optok=yes @@ -17967,13 +17918,13 @@ cat "conftest.$ac_ext" >&5 cf_clang_optok=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" - echo "$as_me:17970: result: $cf_clang_optok" >&5 + echo "$as_me:17921: result: $cf_clang_optok" >&5 echo "${ECHO_T}$cf_clang_optok" >&6 CFLAGS="$cf_save_CFLAGS" if test "$cf_clang_optok" = yes; then test -n "$verbose" && echo " adding option $cf_clang_opt" 1>&6 -echo "${as_me:-configure}:17976: testing adding option $cf_clang_opt ..." 1>&5 +echo "${as_me:-configure}:17927: testing adding option $cf_clang_opt ..." 1>&5 test -n "$CFLAGS" && CFLAGS="$CFLAGS " CFLAGS="${CFLAGS}$cf_clang_opt" @@ -17990,7 +17941,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" cat > conftest.$ac_ext <<EOF -#line 17993 "configure" +#line 17944 "configure" int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; } EOF @@ -18008,8 +17959,10 @@ then # remark #981: operands are evaluated in unspecified order # warning #269: invalid format string conversion - { echo "$as_me:18011: checking for $CC warning options..." >&5 -echo "$as_me: checking for $CC warning options..." >&6;} + echo "$as_me:17962: checking for $CC warning options" >&5 +echo $ECHO_N "checking for $CC warning options... $ECHO_C" >&6 + test -n "$verbose" && echo "$as_me:17964: result: " >&5 +echo "${ECHO_T}" >&6 cf_save_CXXFLAGS="$CXXFLAGS" EXTRA_CXXFLAGS="-Wall" for cf_opt in \ @@ -18025,12 +17978,12 @@ echo "$as_me: checking for $CC warning options..." >&6;} wd981 do CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt" - if { (eval echo "$as_me:18028: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:17981: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:18031: \$? = $ac_status" >&5 + echo "$as_me:17984: \$? = $ac_status" >&5 (exit "$ac_status"); }; then - test -n "$verbose" && echo "$as_me:18033: result: ... -$cf_opt" >&5 + test -n "$verbose" && echo "$as_me:17986: result: ... -$cf_opt" >&5 echo "${ECHO_T}... -$cf_opt" >&6 EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt" fi @@ -18039,8 +17992,10 @@ echo "${ECHO_T}... -$cf_opt" >&6 elif test "$GXX" = yes then - { echo "$as_me:18042: checking for $CXX warning options..." >&5 -echo "$as_me: checking for $CXX warning options..." >&6;} + echo "$as_me:17995: checking for $CXX warning options" >&5 +echo $ECHO_N "checking for $CXX warning options... $ECHO_C" >&6 + test -n "$verbose" && echo "$as_me:17997: result: " >&5 +echo "${ECHO_T}" >&6 cf_save_CXXFLAGS="$CXXFLAGS" EXTRA_CXXFLAGS="-W -Wall" cf_gxx_extra_warnings="" @@ -18069,16 +18024,16 @@ echo "$as_me: checking for $CXX warning options..." >&6;} Wundef $cf_gxx_extra_warnings Wno-unused do CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt" - if { (eval echo "$as_me:18072: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:18027: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:18075: \$? = $ac_status" >&5 + echo "$as_me:18030: \$? = $ac_status" >&5 (exit "$ac_status"); }; then - test -n "$verbose" && echo "$as_me:18077: result: ... -$cf_opt" >&5 + test -n "$verbose" && echo "$as_me:18032: result: ... -$cf_opt" >&5 echo "${ECHO_T}... -$cf_opt" >&6 EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt" else - test -n "$verbose" && echo "$as_me:18081: result: ... no -$cf_opt" >&5 + test -n "$verbose" && echo "$as_me:18036: result: ... no -$cf_opt" >&5 echo "${ECHO_T}... no -$cf_opt" >&6 fi done @@ -18096,7 +18051,7 @@ ac_main_return="return" fi fi -echo "$as_me:18099: checking if you want to work around bogus compiler/loader warnings" >&5 +echo "$as_me:18054: checking if you want to work around bogus compiler/loader warnings" >&5 echo $ECHO_N "checking if you want to work around bogus compiler/loader warnings... $ECHO_C" >&6 # Check whether --enable-string-hacks or --disable-string-hacks was given. @@ -18106,7 +18061,7 @@ if test "${enable_string_hacks+set}" = set; then else enable_string_hacks=no fi; -echo "$as_me:18109: result: $enable_string_hacks" >&5 +echo "$as_me:18064: result: $enable_string_hacks" >&5 echo "${ECHO_T}$enable_string_hacks" >&6 if test "x$enable_string_hacks" = "xyes"; then @@ -18115,15 +18070,15 @@ cat >>confdefs.h <<\EOF #define USE_STRING_HACKS 1 EOF - { echo "$as_me:18118: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5 + { echo "$as_me:18073: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5 echo "$as_me: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&2;} - echo "$as_me:18120: checking for strlcat" >&5 + echo "$as_me:18075: checking for strlcat" >&5 echo $ECHO_N "checking for strlcat... $ECHO_C" >&6 if test "${ac_cv_func_strlcat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 18126 "configure" +#line 18081 "configure" #include "confdefs.h" #define strlcat autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -18154,16 +18109,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:18157: \"$ac_link\"") >&5 +if { (eval echo "$as_me:18112: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:18160: \$? = $ac_status" >&5 + echo "$as_me:18115: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:18163: \"$ac_try\"") >&5 + { (eval echo "$as_me:18118: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:18166: \$? = $ac_status" >&5 + echo "$as_me:18121: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_strlcat=yes else @@ -18173,7 +18128,7 @@ ac_cv_func_strlcat=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:18176: result: $ac_cv_func_strlcat" >&5 +echo "$as_me:18131: result: $ac_cv_func_strlcat" >&5 echo "${ECHO_T}$ac_cv_func_strlcat" >&6 if test "$ac_cv_func_strlcat" = yes; then @@ -18183,7 +18138,7 @@ EOF else - echo "$as_me:18186: checking for strlcat in -lbsd" >&5 + echo "$as_me:18141: checking for strlcat in -lbsd" >&5 echo $ECHO_N "checking for strlcat in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_strlcat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -18191,7 +18146,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 18194 "configure" +#line 18149 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -18210,16 +18165,16 @@ strlcat (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:18213: \"$ac_link\"") >&5 +if { (eval echo "$as_me:18168: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:18216: \$? = $ac_status" >&5 + echo "$as_me:18171: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:18219: \"$ac_try\"") >&5 + { (eval echo "$as_me:18174: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:18222: \$? = $ac_status" >&5 + echo "$as_me:18177: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_bsd_strlcat=yes else @@ -18230,7 +18185,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:18233: result: $ac_cv_lib_bsd_strlcat" >&5 +echo "$as_me:18188: result: $ac_cv_lib_bsd_strlcat" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_strlcat" >&6 if test "$ac_cv_lib_bsd_strlcat" = yes; then @@ -18253,23 +18208,23 @@ LIBS="$cf_add_libs" for ac_header in bsd/string.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:18256: checking for $ac_header" >&5 +echo "$as_me:18211: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 18262 "configure" +#line 18217 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:18266: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:18221: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:18272: \$? = $ac_status" >&5 + echo "$as_me:18227: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -18288,7 +18243,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:18291: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:18246: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -18309,13 +18264,13 @@ fi for ac_func in strlcpy snprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:18312: checking for $ac_func" >&5 +echo "$as_me:18267: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 18318 "configure" +#line 18273 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -18346,16 +18301,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:18349: \"$ac_link\"") >&5 +if { (eval echo "$as_me:18304: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:18352: \$? = $ac_status" >&5 + echo "$as_me:18307: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:18355: \"$ac_try\"") >&5 + { (eval echo "$as_me:18310: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:18358: \$? = $ac_status" >&5 + echo "$as_me:18313: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -18365,7 +18320,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:18368: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:18323: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -18378,7 +18333,7 @@ done fi ### use option --enable-assertions to turn on generation of assertion code -echo "$as_me:18381: checking if you want to enable runtime assertions" >&5 +echo "$as_me:18336: checking if you want to enable runtime assertions" >&5 echo $ECHO_N "checking if you want to enable runtime assertions... $ECHO_C" >&6 # Check whether --enable-assertions or --disable-assertions was given. @@ -18388,7 +18343,7 @@ if test "${enable_assertions+set}" = set; then else with_assertions=no fi; -echo "$as_me:18391: result: $with_assertions" >&5 +echo "$as_me:18346: result: $with_assertions" >&5 echo "${ECHO_T}$with_assertions" >&6 if test -n "$GCC" then @@ -18404,7 +18359,7 @@ fi ### use option --disable-leaks to suppress "permanent" leaks, for testing -echo "$as_me:18407: checking if you want to use dmalloc for testing" >&5 +echo "$as_me:18362: checking if you want to use dmalloc for testing" >&5 echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6 # Check whether --with-dmalloc or --without-dmalloc was given. @@ -18426,7 +18381,7 @@ EOF else with_dmalloc= fi; -echo "$as_me:18429: result: ${with_dmalloc:-no}" >&5 +echo "$as_me:18384: result: ${with_dmalloc:-no}" >&5 echo "${ECHO_T}${with_dmalloc:-no}" >&6 case ".$with_cflags" in @@ -18540,23 +18495,23 @@ fi esac if test "$with_dmalloc" = yes ; then - echo "$as_me:18543: checking for dmalloc.h" >&5 + echo "$as_me:18498: checking for dmalloc.h" >&5 echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 if test "${ac_cv_header_dmalloc_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 18549 "configure" +#line 18504 "configure" #include "confdefs.h" #include <dmalloc.h> _ACEOF -if { (eval echo "$as_me:18553: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:18508: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:18559: \$? = $ac_status" >&5 + echo "$as_me:18514: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -18575,11 +18530,11 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:18578: result: $ac_cv_header_dmalloc_h" >&5 +echo "$as_me:18533: result: $ac_cv_header_dmalloc_h" >&5 echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 if test "$ac_cv_header_dmalloc_h" = yes; then -echo "$as_me:18582: checking for dmalloc_debug in -ldmalloc" >&5 +echo "$as_me:18537: checking for dmalloc_debug in -ldmalloc" >&5 echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6 if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -18587,7 +18542,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldmalloc $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 18590 "configure" +#line 18545 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -18606,16 +18561,16 @@ dmalloc_debug (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:18609: \"$ac_link\"") >&5 +if { (eval echo "$as_me:18564: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:18612: \$? = $ac_status" >&5 + echo "$as_me:18567: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:18615: \"$ac_try\"") >&5 + { (eval echo "$as_me:18570: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:18618: \$? = $ac_status" >&5 + echo "$as_me:18573: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_dmalloc_dmalloc_debug=yes else @@ -18626,7 +18581,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:18629: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 +echo "$as_me:18584: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6 if test "$ac_cv_lib_dmalloc_dmalloc_debug" = yes; then cat >>confdefs.h <<EOF @@ -18641,7 +18596,7 @@ fi fi -echo "$as_me:18644: checking if you want to use dbmalloc for testing" >&5 +echo "$as_me:18599: checking if you want to use dbmalloc for testing" >&5 echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6 # Check whether --with-dbmalloc or --without-dbmalloc was given. @@ -18663,7 +18618,7 @@ EOF else with_dbmalloc= fi; -echo "$as_me:18666: result: ${with_dbmalloc:-no}" >&5 +echo "$as_me:18621: result: ${with_dbmalloc:-no}" >&5 echo "${ECHO_T}${with_dbmalloc:-no}" >&6 case ".$with_cflags" in @@ -18777,23 +18732,23 @@ fi esac if test "$with_dbmalloc" = yes ; then - echo "$as_me:18780: checking for dbmalloc.h" >&5 + echo "$as_me:18735: checking for dbmalloc.h" >&5 echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6 if test "${ac_cv_header_dbmalloc_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 18786 "configure" +#line 18741 "configure" #include "confdefs.h" #include <dbmalloc.h> _ACEOF -if { (eval echo "$as_me:18790: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:18745: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:18796: \$? = $ac_status" >&5 + echo "$as_me:18751: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -18812,11 +18767,11 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:18815: result: $ac_cv_header_dbmalloc_h" >&5 +echo "$as_me:18770: result: $ac_cv_header_dbmalloc_h" >&5 echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6 if test "$ac_cv_header_dbmalloc_h" = yes; then -echo "$as_me:18819: checking for debug_malloc in -ldbmalloc" >&5 +echo "$as_me:18774: checking for debug_malloc in -ldbmalloc" >&5 echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6 if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -18824,7 +18779,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldbmalloc $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 18827 "configure" +#line 18782 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -18843,16 +18798,16 @@ debug_malloc (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:18846: \"$ac_link\"") >&5 +if { (eval echo "$as_me:18801: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:18849: \$? = $ac_status" >&5 + echo "$as_me:18804: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:18852: \"$ac_try\"") >&5 + { (eval echo "$as_me:18807: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:18855: \$? = $ac_status" >&5 + echo "$as_me:18810: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_dbmalloc_debug_malloc=yes else @@ -18863,7 +18818,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:18866: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5 +echo "$as_me:18821: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5 echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6 if test "$ac_cv_lib_dbmalloc_debug_malloc" = yes; then cat >>confdefs.h <<EOF @@ -18878,7 +18833,7 @@ fi fi -echo "$as_me:18881: checking if you want to use valgrind for testing" >&5 +echo "$as_me:18836: checking if you want to use valgrind for testing" >&5 echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6 # Check whether --with-valgrind or --without-valgrind was given. @@ -18900,7 +18855,7 @@ EOF else with_valgrind= fi; -echo "$as_me:18903: result: ${with_valgrind:-no}" >&5 +echo "$as_me:18858: result: ${with_valgrind:-no}" >&5 echo "${ECHO_T}${with_valgrind:-no}" >&6 case ".$with_cflags" in @@ -19013,7 +18968,7 @@ fi ;; esac -echo "$as_me:19016: checking if you want to perform memory-leak testing" >&5 +echo "$as_me:18971: checking if you want to perform memory-leak testing" >&5 echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6 # Check whether --enable-leaks or --disable-leaks was given. @@ -19024,7 +18979,7 @@ else enable_leaks=yes fi; if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi -echo "$as_me:19027: result: $with_no_leaks" >&5 +echo "$as_me:18982: result: $with_no_leaks" >&5 echo "${ECHO_T}$with_no_leaks" >&6 if test "$enable_leaks" = no ; then @@ -19076,7 +19031,7 @@ case "$CFLAGS $CPPFLAGS" in ;; esac -echo "$as_me:19079: checking whether to add trace feature to all models" >&5 +echo "$as_me:19034: checking whether to add trace feature to all models" >&5 echo $ECHO_N "checking whether to add trace feature to all models... $ECHO_C" >&6 # Check whether --with-trace or --without-trace was given. @@ -19086,110 +19041,16 @@ if test "${with_trace+set}" = set; then else cf_with_trace=$cf_all_traces fi; -echo "$as_me:19089: result: $cf_with_trace" >&5 +echo "$as_me:19044: result: $cf_with_trace" >&5 echo "${ECHO_T}$cf_with_trace" >&6 if test "x$cf_with_trace" = xyes ; then LIB_TRACING=all ADA_TRACE=TRUE -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in -DTRACE -do -case "$cf_fix_cppflags" in -(no) - case "$cf_add_cflags" in - (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) - case "$cf_add_cflags" in - (-D*) - cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test "$cf_fix_cppflags" = yes ; then - - test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " - cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" - - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - - test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " - cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" - - continue - fi - ;; - esac - case "$CPPFLAGS" in - (*$cf_add_cflags) - ;; - (*) - case "$cf_add_cflags" in - (-D*) - cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` - -CPPFLAGS=`echo "$CPPFLAGS" | \ - sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` - - ;; - esac - - test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " - cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" - - ;; - esac - ;; - (*) - - test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " - cf_new_cflags="${cf_new_cflags}$cf_add_cflags" - - ;; - esac - ;; -(yes) - - test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " - cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" - - cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[^"]*"'\''//'` - - test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - test -n "$CFLAGS" && CFLAGS="$CFLAGS " - CFLAGS="${CFLAGS}$cf_new_cflags" - -fi - -if test -n "$cf_new_cppflags" ; then - - test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " - CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" - -fi - -if test -n "$cf_new_extra_cppflags" ; then - - test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " - EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" - -fi +cat >>confdefs.h <<\EOF +#define TRACE 1 +EOF cat >>confdefs.h <<\EOF #define HAVE__TRACEF 1 @@ -19200,7 +19061,7 @@ else ADA_TRACE=FALSE fi -echo "$as_me:19203: checking if we want to use GNAT projects" >&5 +echo "$as_me:19064: checking if we want to use GNAT projects" >&5 echo $ECHO_N "checking if we want to use GNAT projects... $ECHO_C" >&6 # Check whether --enable-gnat-projects or --disable-gnat-projects was given. @@ -19217,27 +19078,27 @@ else enable_gnat_projects=yes fi; -echo "$as_me:19220: result: $enable_gnat_projects" >&5 +echo "$as_me:19081: result: $enable_gnat_projects" >&5 echo "${ECHO_T}$enable_gnat_projects" >&6 ### Checks for libraries. case "$cf_cv_system_name" in (*mingw32*|*mingw64*) # Note: WINVER may be a problem with Windows 10 - if test "x$with_exp_win32" = xyes ; then + if test "x$with_named_pipes" = xyes ; then CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN" else CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN" fi -echo "$as_me:19233: checking if ssp library is needed" >&5 +echo "$as_me:19094: checking if ssp library is needed" >&5 echo $ECHO_N "checking if ssp library is needed... $ECHO_C" >&6 if test "${cf_cv_need_libssp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 19240 "configure" +#line 19101 "configure" #include "confdefs.h" #include <sys/types.h> @@ -19254,16 +19115,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19257: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19118: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19260: \$? = $ac_status" >&5 + echo "$as_me:19121: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19263: \"$ac_try\"") >&5 + { (eval echo "$as_me:19124: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19266: \$? = $ac_status" >&5 + echo "$as_me:19127: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_need_libssp=no else @@ -19273,7 +19134,7 @@ cat "conftest.$ac_ext" >&5 cf_save_LIBS="$LIBS" LIBS="$LIBS -lssp" cat >"conftest.$ac_ext" <<_ACEOF -#line 19276 "configure" +#line 19137 "configure" #include "confdefs.h" #include <sys/types.h> @@ -19290,16 +19151,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19293: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19154: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19296: \$? = $ac_status" >&5 + echo "$as_me:19157: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19299: \"$ac_try\"") >&5 + { (eval echo "$as_me:19160: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19302: \$? = $ac_status" >&5 + echo "$as_me:19163: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_need_libssp=yes else @@ -19313,7 +19174,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:19316: result: $cf_cv_need_libssp" >&5 +echo "$as_me:19177: result: $cf_cv_need_libssp" >&5 echo "${ECHO_T}$cf_cv_need_libssp" >&6 if test "x$cf_cv_need_libssp" = xyes @@ -19342,14 +19203,14 @@ fi ;; esac -echo "$as_me:19345: checking if -lm needed for math functions" >&5 +echo "$as_me:19206: checking if -lm needed for math functions" >&5 echo $ECHO_N "checking if -lm needed for math functions... $ECHO_C" >&6 if test "${cf_cv_need_libm+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 19352 "configure" +#line 19213 "configure" #include "confdefs.h" #include <stdio.h> @@ -19365,16 +19226,16 @@ double x = rand(); printf("result = %g\\n", pow(sin(x),x)) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19368: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19229: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19371: \$? = $ac_status" >&5 + echo "$as_me:19232: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19374: \"$ac_try\"") >&5 + { (eval echo "$as_me:19235: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19377: \$? = $ac_status" >&5 + echo "$as_me:19238: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_need_libm=no else @@ -19384,7 +19245,7 @@ cf_cv_need_libm=yes fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:19387: result: $cf_cv_need_libm" >&5 +echo "$as_me:19248: result: $cf_cv_need_libm" >&5 echo "${ECHO_T}$cf_cv_need_libm" >&6 if test "$cf_cv_need_libm" = yes @@ -19392,14 +19253,14 @@ then cf_save_LIBS="$LIBS" LIBS="$LIBS -lm" - echo "$as_me:19395: checking if -lm is available for math functions" >&5 + echo "$as_me:19256: checking if -lm is available for math functions" >&5 echo $ECHO_N "checking if -lm is available for math functions... $ECHO_C" >&6 if test "${cf_cv_have_libm+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 19402 "configure" +#line 19263 "configure" #include "confdefs.h" #include <stdio.h> @@ -19415,16 +19276,16 @@ double x = rand(); printf("result = %g\\n", pow(sin(x),x)) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19418: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19279: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19421: \$? = $ac_status" >&5 + echo "$as_me:19282: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19424: \"$ac_try\"") >&5 + { (eval echo "$as_me:19285: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19427: \$? = $ac_status" >&5 + echo "$as_me:19288: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have_libm=yes else @@ -19434,7 +19295,7 @@ cf_cv_have_libm=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:19437: result: $cf_cv_have_libm" >&5 +echo "$as_me:19298: result: $cf_cv_have_libm" >&5 echo "${ECHO_T}$cf_cv_have_libm" >&6 LIBS="$cf_save_LIBS" @@ -19456,13 +19317,13 @@ EOF fi ### Checks for header files. -echo "$as_me:19459: checking whether time.h and sys/time.h may both be included" >&5 +echo "$as_me:19320: checking whether time.h and sys/time.h may both be included" >&5 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 19465 "configure" +#line 19326 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/time.h> @@ -19478,16 +19339,16 @@ return 0; } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:19481: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:19342: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:19484: \$? = $ac_status" >&5 + echo "$as_me:19345: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:19487: \"$ac_try\"") >&5 + { (eval echo "$as_me:19348: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19490: \$? = $ac_status" >&5 + echo "$as_me:19351: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_header_time=yes else @@ -19497,7 +19358,7 @@ ac_cv_header_time=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:19500: result: $ac_cv_header_time" >&5 +echo "$as_me:19361: result: $ac_cv_header_time" >&5 echo "${ECHO_T}$ac_cv_header_time" >&6 if test $ac_cv_header_time = yes; then @@ -19512,7 +19373,7 @@ cf_regex_libs= case "$host_os" in (mingw*) # -lsystre -ltre -lintl -liconv - echo "$as_me:19515: checking for regcomp in -lsystre" >&5 + echo "$as_me:19376: checking for regcomp in -lsystre" >&5 echo $ECHO_N "checking for regcomp in -lsystre... $ECHO_C" >&6 if test "${ac_cv_lib_systre_regcomp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -19520,7 +19381,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lsystre $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 19523 "configure" +#line 19384 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -19539,16 +19400,16 @@ regcomp (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19542: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19403: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19545: \$? = $ac_status" >&5 + echo "$as_me:19406: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19548: \"$ac_try\"") >&5 + { (eval echo "$as_me:19409: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19551: \$? = $ac_status" >&5 + echo "$as_me:19412: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_systre_regcomp=yes else @@ -19559,11 +19420,11 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:19562: result: $ac_cv_lib_systre_regcomp" >&5 +echo "$as_me:19423: result: $ac_cv_lib_systre_regcomp" >&5 echo "${ECHO_T}$ac_cv_lib_systre_regcomp" >&6 if test "$ac_cv_lib_systre_regcomp" = yes; then - echo "$as_me:19566: checking for libiconv_open in -liconv" >&5 + echo "$as_me:19427: checking for libiconv_open in -liconv" >&5 echo $ECHO_N "checking for libiconv_open in -liconv... $ECHO_C" >&6 if test "${ac_cv_lib_iconv_libiconv_open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -19571,7 +19432,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-liconv $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 19574 "configure" +#line 19435 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -19590,16 +19451,16 @@ libiconv_open (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19593: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19454: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19596: \$? = $ac_status" >&5 + echo "$as_me:19457: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19599: \"$ac_try\"") >&5 + { (eval echo "$as_me:19460: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19602: \$? = $ac_status" >&5 + echo "$as_me:19463: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_iconv_libiconv_open=yes else @@ -19610,7 +19471,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:19613: result: $ac_cv_lib_iconv_libiconv_open" >&5 +echo "$as_me:19474: result: $ac_cv_lib_iconv_libiconv_open" >&5 echo "${ECHO_T}$ac_cv_lib_iconv_libiconv_open" >&6 if test "$ac_cv_lib_iconv_libiconv_open" = yes; then @@ -19632,7 +19493,7 @@ LIBS="$cf_add_libs" fi - echo "$as_me:19635: checking for libintl_gettext in -lintl" >&5 + echo "$as_me:19496: checking for libintl_gettext in -lintl" >&5 echo $ECHO_N "checking for libintl_gettext in -lintl... $ECHO_C" >&6 if test "${ac_cv_lib_intl_libintl_gettext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -19640,7 +19501,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 19643 "configure" +#line 19504 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -19659,16 +19520,16 @@ libintl_gettext (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19662: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19523: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19665: \$? = $ac_status" >&5 + echo "$as_me:19526: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19668: \"$ac_try\"") >&5 + { (eval echo "$as_me:19529: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19671: \$? = $ac_status" >&5 + echo "$as_me:19532: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_intl_libintl_gettext=yes else @@ -19679,7 +19540,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:19682: result: $ac_cv_lib_intl_libintl_gettext" >&5 +echo "$as_me:19543: result: $ac_cv_lib_intl_libintl_gettext" >&5 echo "${ECHO_T}$ac_cv_lib_intl_libintl_gettext" >&6 if test "$ac_cv_lib_intl_libintl_gettext" = yes; then @@ -19701,7 +19562,7 @@ LIBS="$cf_add_libs" fi - echo "$as_me:19704: checking for tre_regcomp in -ltre" >&5 + echo "$as_me:19565: checking for tre_regcomp in -ltre" >&5 echo $ECHO_N "checking for tre_regcomp in -ltre... $ECHO_C" >&6 if test "${ac_cv_lib_tre_tre_regcomp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -19709,7 +19570,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ltre $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 19712 "configure" +#line 19573 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -19728,16 +19589,16 @@ tre_regcomp (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19731: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19592: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19734: \$? = $ac_status" >&5 + echo "$as_me:19595: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19737: \"$ac_try\"") >&5 + { (eval echo "$as_me:19598: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19740: \$? = $ac_status" >&5 + echo "$as_me:19601: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_tre_tre_regcomp=yes else @@ -19748,7 +19609,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:19751: result: $ac_cv_lib_tre_tre_regcomp" >&5 +echo "$as_me:19612: result: $ac_cv_lib_tre_tre_regcomp" >&5 echo "${ECHO_T}$ac_cv_lib_tre_tre_regcomp" >&6 if test "$ac_cv_lib_tre_tre_regcomp" = yes; then @@ -19790,7 +19651,7 @@ LIBS="$cf_add_libs" else - echo "$as_me:19793: checking for regcomp in -lgnurx" >&5 + echo "$as_me:19654: checking for regcomp in -lgnurx" >&5 echo $ECHO_N "checking for regcomp in -lgnurx... $ECHO_C" >&6 if test "${ac_cv_lib_gnurx_regcomp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -19798,7 +19659,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lgnurx $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 19801 "configure" +#line 19662 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -19817,16 +19678,16 @@ regcomp (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19820: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19681: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19823: \$? = $ac_status" >&5 + echo "$as_me:19684: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19826: \"$ac_try\"") >&5 + { (eval echo "$as_me:19687: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19829: \$? = $ac_status" >&5 + echo "$as_me:19690: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_gnurx_regcomp=yes else @@ -19837,7 +19698,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:19840: result: $ac_cv_lib_gnurx_regcomp" >&5 +echo "$as_me:19701: result: $ac_cv_lib_gnurx_regcomp" >&5 echo "${ECHO_T}$ac_cv_lib_gnurx_regcomp" >&6 if test "$ac_cv_lib_gnurx_regcomp" = yes; then @@ -19865,13 +19726,13 @@ fi ;; (*) cf_regex_libs="regex re" - echo "$as_me:19868: checking for regcomp" >&5 + echo "$as_me:19729: checking for regcomp" >&5 echo $ECHO_N "checking for regcomp... $ECHO_C" >&6 if test "${ac_cv_func_regcomp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 19874 "configure" +#line 19735 "configure" #include "confdefs.h" #define regcomp autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -19902,16 +19763,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19905: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19766: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19908: \$? = $ac_status" >&5 + echo "$as_me:19769: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19911: \"$ac_try\"") >&5 + { (eval echo "$as_me:19772: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19914: \$? = $ac_status" >&5 + echo "$as_me:19775: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_regcomp=yes else @@ -19921,7 +19782,7 @@ ac_cv_func_regcomp=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:19924: result: $ac_cv_func_regcomp" >&5 +echo "$as_me:19785: result: $ac_cv_func_regcomp" >&5 echo "${ECHO_T}$ac_cv_func_regcomp" >&6 if test "$ac_cv_func_regcomp" = yes; then cf_regex_func=regcomp @@ -19930,7 +19791,7 @@ else for cf_regex_lib in $cf_regex_libs do as_ac_Lib=`echo "ac_cv_lib_$cf_regex_lib''_regcomp" | $as_tr_sh` -echo "$as_me:19933: checking for regcomp in -l$cf_regex_lib" >&5 +echo "$as_me:19794: checking for regcomp in -l$cf_regex_lib" >&5 echo $ECHO_N "checking for regcomp in -l$cf_regex_lib... $ECHO_C" >&6 if eval "test \"\${$as_ac_Lib+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -19938,7 +19799,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-l$cf_regex_lib $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 19941 "configure" +#line 19802 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -19957,16 +19818,16 @@ regcomp (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:19960: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19821: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:19963: \$? = $ac_status" >&5 + echo "$as_me:19824: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:19966: \"$ac_try\"") >&5 + { (eval echo "$as_me:19827: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:19969: \$? = $ac_status" >&5 + echo "$as_me:19830: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_Lib=yes" else @@ -19977,7 +19838,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:19980: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5 +echo "$as_me:19841: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Lib"'}'`" >&6 if test "`eval echo '${'"$as_ac_Lib"'}'`" = yes; then @@ -20009,13 +19870,13 @@ fi esac if test "$cf_regex_func" = no ; then - echo "$as_me:20012: checking for compile" >&5 + echo "$as_me:19873: checking for compile" >&5 echo $ECHO_N "checking for compile... $ECHO_C" >&6 if test "${ac_cv_func_compile+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20018 "configure" +#line 19879 "configure" #include "confdefs.h" #define compile autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -20046,16 +19907,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:20049: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19910: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20052: \$? = $ac_status" >&5 + echo "$as_me:19913: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:20055: \"$ac_try\"") >&5 + { (eval echo "$as_me:19916: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20058: \$? = $ac_status" >&5 + echo "$as_me:19919: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_compile=yes else @@ -20065,13 +19926,13 @@ ac_cv_func_compile=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:20068: result: $ac_cv_func_compile" >&5 +echo "$as_me:19929: result: $ac_cv_func_compile" >&5 echo "${ECHO_T}$ac_cv_func_compile" >&6 if test "$ac_cv_func_compile" = yes; then cf_regex_func=compile else - echo "$as_me:20074: checking for compile in -lgen" >&5 + echo "$as_me:19935: checking for compile in -lgen" >&5 echo $ECHO_N "checking for compile in -lgen... $ECHO_C" >&6 if test "${ac_cv_lib_gen_compile+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -20079,7 +19940,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lgen $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 20082 "configure" +#line 19943 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -20098,16 +19959,16 @@ compile (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:20101: \"$ac_link\"") >&5 +if { (eval echo "$as_me:19962: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20104: \$? = $ac_status" >&5 + echo "$as_me:19965: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:20107: \"$ac_try\"") >&5 + { (eval echo "$as_me:19968: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20110: \$? = $ac_status" >&5 + echo "$as_me:19971: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_gen_compile=yes else @@ -20118,7 +19979,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:20121: result: $ac_cv_lib_gen_compile" >&5 +echo "$as_me:19982: result: $ac_cv_lib_gen_compile" >&5 echo "${ECHO_T}$ac_cv_lib_gen_compile" >&6 if test "$ac_cv_lib_gen_compile" = yes; then @@ -20146,11 +20007,11 @@ fi fi if test "$cf_regex_func" = no ; then - { echo "$as_me:20149: WARNING: cannot find regular expression library" >&5 + { echo "$as_me:20010: WARNING: cannot find regular expression library" >&5 echo "$as_me: WARNING: cannot find regular expression library" >&2;} fi -echo "$as_me:20153: checking for regular-expression headers" >&5 +echo "$as_me:20014: checking for regular-expression headers" >&5 echo $ECHO_N "checking for regular-expression headers... $ECHO_C" >&6 if test "${cf_cv_regex_hdrs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -20162,7 +20023,7 @@ case "$cf_regex_func" in for cf_regex_hdr in regexp.h regexpr.h do cat >"conftest.$ac_ext" <<_ACEOF -#line 20165 "configure" +#line 20026 "configure" #include "confdefs.h" #include <$cf_regex_hdr> int @@ -20179,16 +20040,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:20182: \"$ac_link\"") >&5 +if { (eval echo "$as_me:20043: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20185: \$? = $ac_status" >&5 + echo "$as_me:20046: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:20188: \"$ac_try\"") >&5 + { (eval echo "$as_me:20049: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20191: \$? = $ac_status" >&5 + echo "$as_me:20052: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_regex_hdrs=$cf_regex_hdr @@ -20205,15 +20066,16 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" for cf_regex_hdr in regex.h do cat >"conftest.$ac_ext" <<_ACEOF -#line 20208 "configure" +#line 20069 "configure" #include "confdefs.h" #include <sys/types.h> +#include <stdio.h> #include <$cf_regex_hdr> int main (void) { - regex_t *p = 0; + regex_t *p = NULL; int x = regcomp(p, "", 0); int y = regexec(p, "", 0, 0, 0); (void)x; @@ -20225,16 +20087,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:20228: \"$ac_link\"") >&5 +if { (eval echo "$as_me:20090: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20231: \$? = $ac_status" >&5 + echo "$as_me:20093: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:20234: \"$ac_try\"") >&5 + { (eval echo "$as_me:20096: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20237: \$? = $ac_status" >&5 + echo "$as_me:20099: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_regex_hdrs=$cf_regex_hdr @@ -20250,11 +20112,11 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" esac fi -echo "$as_me:20253: result: $cf_cv_regex_hdrs" >&5 +echo "$as_me:20115: result: $cf_cv_regex_hdrs" >&5 echo "${ECHO_T}$cf_cv_regex_hdrs" >&6 case "$cf_cv_regex_hdrs" in - (no) { echo "$as_me:20257: WARNING: no regular expression header found" >&5 + (no) { echo "$as_me:20119: WARNING: no regular expression header found" >&5 echo "$as_me: WARNING: no regular expression header found" >&2;} ;; (regex.h) cat >>confdefs.h <<\EOF @@ -20274,13 +20136,16 @@ EOF esac for ac_header in \ +alloca.h \ fcntl.h \ getopt.h \ limits.h \ locale.h \ +malloc.h \ math.h \ poll.h \ sys/auxv.h \ +sys/fsuid.h \ sys/ioctl.h \ sys/param.h \ sys/poll.h \ @@ -20292,23 +20157,23 @@ wctype.h \ do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:20295: checking for $ac_header" >&5 +echo "$as_me:20160: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20301 "configure" +#line 20166 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:20305: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:20170: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:20311: \$? = $ac_status" >&5 + echo "$as_me:20176: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -20327,7 +20192,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:20330: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:20195: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -20337,26 +20202,26 @@ EOF fi done -for ac_header in unistd.h getopt.h +for ac_header in getopt.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:20343: checking for $ac_header" >&5 +echo "$as_me:20208: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20349 "configure" +#line 20214 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:20353: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:20218: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:20359: \$? = $ac_status" >&5 + echo "$as_me:20224: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -20375,7 +20240,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:20378: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:20243: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -20385,7 +20250,7 @@ EOF fi done -echo "$as_me:20388: checking for header declaring getopt variables" >&5 +echo "$as_me:20253: checking for header declaring getopt variables" >&5 echo $ECHO_N "checking for header declaring getopt variables... $ECHO_C" >&6 if test "${cf_cv_getopt_header+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -20395,7 +20260,7 @@ cf_cv_getopt_header=none for cf_header in stdio.h stdlib.h unistd.h getopt.h do cat >"conftest.$ac_ext" <<_ACEOF -#line 20398 "configure" +#line 20263 "configure" #include "confdefs.h" #include <$cf_header> @@ -20408,16 +20273,16 @@ int x = optind; char *y = optarg; (void)x; (void)y } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:20411: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:20276: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:20414: \$? = $ac_status" >&5 + echo "$as_me:20279: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:20417: \"$ac_try\"") >&5 + { (eval echo "$as_me:20282: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20420: \$? = $ac_status" >&5 + echo "$as_me:20285: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_getopt_header=$cf_header break @@ -20429,7 +20294,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" done fi -echo "$as_me:20432: result: $cf_cv_getopt_header" >&5 +echo "$as_me:20297: result: $cf_cv_getopt_header" >&5 echo "${ECHO_T}$cf_cv_getopt_header" >&6 if test "$cf_cv_getopt_header" != none ; then @@ -20446,14 +20311,14 @@ EOF fi -echo "$as_me:20449: checking if external environ is declared" >&5 +echo "$as_me:20314: checking if external environ is declared" >&5 echo $ECHO_N "checking if external environ is declared... $ECHO_C" >&6 if test "${cf_cv_dcl_environ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20456 "configure" +#line 20321 "configure" #include "confdefs.h" $ac_includes_default @@ -20466,16 +20331,16 @@ void* x = (void*) environ; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:20469: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:20334: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:20472: \$? = $ac_status" >&5 + echo "$as_me:20337: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:20475: \"$ac_try\"") >&5 + { (eval echo "$as_me:20340: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20478: \$? = $ac_status" >&5 + echo "$as_me:20343: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_dcl_environ=yes else @@ -20486,7 +20351,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:20489: result: $cf_cv_dcl_environ" >&5 +echo "$as_me:20354: result: $cf_cv_dcl_environ" >&5 echo "${ECHO_T}$cf_cv_dcl_environ" >&6 if test "$cf_cv_dcl_environ" = no ; then @@ -20501,14 +20366,14 @@ fi # It's possible (for near-UNIX clones) that the data doesn't exist -echo "$as_me:20504: checking if external environ exists" >&5 +echo "$as_me:20369: checking if external environ exists" >&5 echo $ECHO_N "checking if external environ exists... $ECHO_C" >&6 if test "${cf_cv_have_environ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20511 "configure" +#line 20376 "configure" #include "confdefs.h" #undef environ @@ -20523,16 +20388,16 @@ environ = 2 } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:20526: \"$ac_link\"") >&5 +if { (eval echo "$as_me:20391: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20529: \$? = $ac_status" >&5 + echo "$as_me:20394: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:20532: \"$ac_try\"") >&5 + { (eval echo "$as_me:20397: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20535: \$? = $ac_status" >&5 + echo "$as_me:20400: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have_environ=yes else @@ -20543,7 +20408,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:20546: result: $cf_cv_have_environ" >&5 +echo "$as_me:20411: result: $cf_cv_have_environ" >&5 echo "${ECHO_T}$cf_cv_have_environ" >&6 if test "$cf_cv_have_environ" = yes ; then @@ -20556,13 +20421,13 @@ EOF fi -echo "$as_me:20559: checking for getenv" >&5 +echo "$as_me:20424: checking for getenv" >&5 echo $ECHO_N "checking for getenv... $ECHO_C" >&6 if test "${ac_cv_func_getenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20565 "configure" +#line 20430 "configure" #include "confdefs.h" #define getenv autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -20593,16 +20458,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:20596: \"$ac_link\"") >&5 +if { (eval echo "$as_me:20461: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20599: \$? = $ac_status" >&5 + echo "$as_me:20464: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:20602: \"$ac_try\"") >&5 + { (eval echo "$as_me:20467: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20605: \$? = $ac_status" >&5 + echo "$as_me:20470: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_getenv=yes else @@ -20612,19 +20477,19 @@ ac_cv_func_getenv=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:20615: result: $ac_cv_func_getenv" >&5 +echo "$as_me:20480: result: $ac_cv_func_getenv" >&5 echo "${ECHO_T}$ac_cv_func_getenv" >&6 for ac_func in putenv setenv strdup do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:20621: checking for $ac_func" >&5 +echo "$as_me:20486: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20627 "configure" +#line 20492 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -20655,16 +20520,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:20658: \"$ac_link\"") >&5 +if { (eval echo "$as_me:20523: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20661: \$? = $ac_status" >&5 + echo "$as_me:20526: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:20664: \"$ac_try\"") >&5 + { (eval echo "$as_me:20529: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20667: \$? = $ac_status" >&5 + echo "$as_me:20532: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -20674,7 +20539,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:20677: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:20542: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -20684,7 +20549,7 @@ EOF fi done -echo "$as_me:20687: checking if getenv returns consistent values" >&5 +echo "$as_me:20552: checking if getenv returns consistent values" >&5 echo $ECHO_N "checking if getenv returns consistent values... $ECHO_C" >&6 if test "${cf_cv_consistent_getenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -20694,7 +20559,7 @@ if test "$cross_compiling" = yes; then cf_cv_consistent_getenv=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 20697 "configure" +#line 20562 "configure" #include "confdefs.h" $ac_includes_default @@ -20738,7 +20603,7 @@ int main(void) for (j = 0; environ[j]; ++j) { mynames[j] = str_alloc(environ[j]); equals = strchr(mynames[j], '='); - if (equals != 0) { + if (equals != NULL) { *equals++ = '\\0'; myvalues[j] = str_alloc(equals); } else { @@ -20799,15 +20664,15 @@ int main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:20802: \"$ac_link\"") >&5 +if { (eval echo "$as_me:20667: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:20805: \$? = $ac_status" >&5 + echo "$as_me:20670: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:20807: \"$ac_try\"") >&5 + { (eval echo "$as_me:20672: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20810: \$? = $ac_status" >&5 + echo "$as_me:20675: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_consistent_getenv=yes else @@ -20820,7 +20685,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes fi fi -echo "$as_me:20823: result: $cf_cv_consistent_getenv" >&5 +echo "$as_me:20688: result: $cf_cv_consistent_getenv" >&5 echo "${ECHO_T}$cf_cv_consistent_getenv" >&6 if test "x$cf_cv_consistent_getenv" = xno @@ -20835,18 +20700,18 @@ fi if test "x$cf_cv_consistent_getenv" = xno && \ test "x$cf_with_trace" = xyes then - { echo "$as_me:20838: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&5 + { echo "$as_me:20703: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&5 echo "$as_me: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&2;} fi -echo "$as_me:20842: checking if sys/time.h works with sys/select.h" >&5 +echo "$as_me:20707: checking if sys/time.h works with sys/select.h" >&5 echo $ECHO_N "checking if sys/time.h works with sys/select.h... $ECHO_C" >&6 if test "${cf_cv_sys_time_select+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20849 "configure" +#line 20714 "configure" #include "confdefs.h" #include <sys/types.h> @@ -20866,16 +20731,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:20869: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:20734: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:20872: \$? = $ac_status" >&5 + echo "$as_me:20737: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:20875: \"$ac_try\"") >&5 + { (eval echo "$as_me:20740: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20878: \$? = $ac_status" >&5 + echo "$as_me:20743: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_sys_time_select=yes else @@ -20887,7 +20752,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:20890: result: $cf_cv_sys_time_select" >&5 +echo "$as_me:20755: result: $cf_cv_sys_time_select" >&5 echo "${ECHO_T}$cf_cv_sys_time_select" >&6 test "$cf_cv_sys_time_select" = yes && cat >>confdefs.h <<\EOF @@ -20902,13 +20767,13 @@ ac_link='$CC -o "conftest$ac_exeext" $CFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ex ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_main_return="return" -echo "$as_me:20905: checking for an ANSI C-conforming const" >&5 +echo "$as_me:20770: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 20911 "configure" +#line 20776 "configure" #include "confdefs.h" int @@ -20918,13 +20783,13 @@ main (void) #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; - const charset x; (void)x; + const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; - static struct point const zero = {0,0}; (void)zero; + static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant @@ -20940,7 +20805,7 @@ main (void) char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; - (void)s; + (void)s; (void)x; (void)zero; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; @@ -20970,16 +20835,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:20973: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:20838: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:20976: \$? = $ac_status" >&5 + echo "$as_me:20841: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:20979: \"$ac_try\"") >&5 + { (eval echo "$as_me:20844: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:20982: \$? = $ac_status" >&5 + echo "$as_me:20847: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_c_const=yes else @@ -20989,7 +20854,7 @@ ac_cv_c_const=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:20992: result: $ac_cv_c_const" >&5 +echo "$as_me:20857: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then @@ -20999,7 +20864,7 @@ EOF fi -echo "$as_me:21002: checking for inline" >&5 +echo "$as_me:20867: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -21007,7 +20872,7 @@ else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >"conftest.$ac_ext" <<_ACEOF -#line 21010 "configure" +#line 20875 "configure" #include "confdefs.h" #ifndef __cplusplus static $ac_kw int static_foo (void) {return 0; } @@ -21016,16 +20881,16 @@ $ac_kw int foo (void) {return 0; } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:21019: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:20884: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21022: \$? = $ac_status" >&5 + echo "$as_me:20887: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:21025: \"$ac_try\"") >&5 + { (eval echo "$as_me:20890: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21028: \$? = $ac_status" >&5 + echo "$as_me:20893: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_c_inline=$ac_kw; break else @@ -21036,7 +20901,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" done fi -echo "$as_me:21039: result: $ac_cv_c_inline" >&5 +echo "$as_me:20904: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; @@ -21062,7 +20927,7 @@ if test "$ac_cv_c_inline" != no ; then : elif test "$GCC" = yes then - echo "$as_me:21065: checking if $CC supports options to tune inlining" >&5 + echo "$as_me:20930: checking if $CC supports options to tune inlining" >&5 echo $ECHO_N "checking if $CC supports options to tune inlining... $ECHO_C" >&6 if test "${cf_cv_gcc_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -21071,7 +20936,7 @@ else cf_save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS --param max-inline-insns-single=1200" cat >"conftest.$ac_ext" <<_ACEOF -#line 21074 "configure" +#line 20939 "configure" #include "confdefs.h" inline int foo(void) { return 1; } int @@ -21083,16 +20948,16 @@ ${cf_cv_main_return:-return} foo() } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:21086: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:20951: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21089: \$? = $ac_status" >&5 + echo "$as_me:20954: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:21092: \"$ac_try\"") >&5 + { (eval echo "$as_me:20957: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21095: \$? = $ac_status" >&5 + echo "$as_me:20960: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_gcc_inline=yes else @@ -21104,7 +20969,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" CFLAGS=$cf_save_CFLAGS fi -echo "$as_me:21107: result: $cf_cv_gcc_inline" >&5 +echo "$as_me:20972: result: $cf_cv_gcc_inline" >&5 echo "${ECHO_T}$cf_cv_gcc_inline" >&6 if test "$cf_cv_gcc_inline" = yes ; then @@ -21210,7 +21075,7 @@ fi fi fi -echo "$as_me:21213: checking for signal global datatype" >&5 +echo "$as_me:21078: checking for signal global datatype" >&5 echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6 if test "${cf_cv_sig_atomic_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -21222,7 +21087,7 @@ else "int" do cat >"conftest.$ac_ext" <<_ACEOF -#line 21225 "configure" +#line 21090 "configure" #include "confdefs.h" #include <sys/types.h> @@ -21246,16 +21111,16 @@ signal(SIGINT, handler); } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:21249: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:21114: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21252: \$? = $ac_status" >&5 + echo "$as_me:21117: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:21255: \"$ac_try\"") >&5 + { (eval echo "$as_me:21120: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21258: \$? = $ac_status" >&5 + echo "$as_me:21123: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_sig_atomic_t=$cf_type else @@ -21269,7 +21134,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:21272: result: $cf_cv_sig_atomic_t" >&5 +echo "$as_me:21137: result: $cf_cv_sig_atomic_t" >&5 echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6 test "$cf_cv_sig_atomic_t" != no && cat >>confdefs.h <<EOF @@ -21278,7 +21143,7 @@ EOF if test "$NCURSES_CHTYPE" = auto ; then -echo "$as_me:21281: checking for type of chtype" >&5 +echo "$as_me:21146: checking for type of chtype" >&5 echo $ECHO_N "checking for type of chtype... $ECHO_C" >&6 if test "${cf_cv_typeof_chtype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -21288,7 +21153,7 @@ else cf_cv_typeof_chtype=long else cat >"conftest.$ac_ext" <<_ACEOF -#line 21291 "configure" +#line 21156 "configure" #include "confdefs.h" $ac_includes_default @@ -21296,7 +21161,7 @@ $ac_includes_default int main(void) { FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { + if (fp != NULL) { char *result = "long"; if (sizeof(unsigned long) > sizeof(unsigned int)) { int n; @@ -21323,15 +21188,15 @@ int main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:21326: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21191: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:21329: \$? = $ac_status" >&5 + echo "$as_me:21194: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:21331: \"$ac_try\"") >&5 + { (eval echo "$as_me:21196: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21334: \$? = $ac_status" >&5 + echo "$as_me:21199: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_typeof_chtype=`cat cf_test.out` else @@ -21346,7 +21211,7 @@ fi fi -echo "$as_me:21349: result: $cf_cv_typeof_chtype" >&5 +echo "$as_me:21214: result: $cf_cv_typeof_chtype" >&5 echo "${ECHO_T}$cf_cv_typeof_chtype" >&6 cat >>confdefs.h <<EOF @@ -21358,14 +21223,14 @@ else fi test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype="" -echo "$as_me:21361: checking if unsigned literals are legal" >&5 +echo "$as_me:21226: checking if unsigned literals are legal" >&5 echo $ECHO_N "checking if unsigned literals are legal... $ECHO_C" >&6 if test "${cf_cv_unsigned_literals+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 21368 "configure" +#line 21233 "configure" #include "confdefs.h" int @@ -21377,16 +21242,16 @@ long x = 1L + 1UL + 1U + 1; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:21380: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:21245: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21383: \$? = $ac_status" >&5 + echo "$as_me:21248: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:21386: \"$ac_try\"") >&5 + { (eval echo "$as_me:21251: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21389: \$? = $ac_status" >&5 + echo "$as_me:21254: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_unsigned_literals=yes else @@ -21398,7 +21263,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:21401: result: $cf_cv_unsigned_literals" >&5 +echo "$as_me:21266: result: $cf_cv_unsigned_literals" >&5 echo "${ECHO_T}$cf_cv_unsigned_literals" >&6 cf_cv_1UL="1" @@ -21414,14 +21279,14 @@ test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t="" ### Checks for external-data -echo "$as_me:21417: checking if external errno is declared" >&5 +echo "$as_me:21282: checking if external errno is declared" >&5 echo $ECHO_N "checking if external errno is declared... $ECHO_C" >&6 if test "${cf_cv_dcl_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 21424 "configure" +#line 21289 "configure" #include "confdefs.h" $ac_includes_default @@ -21435,16 +21300,16 @@ int x = (int) errno; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:21438: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:21303: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21441: \$? = $ac_status" >&5 + echo "$as_me:21306: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:21444: \"$ac_try\"") >&5 + { (eval echo "$as_me:21309: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21447: \$? = $ac_status" >&5 + echo "$as_me:21312: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_dcl_errno=yes else @@ -21455,7 +21320,7 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:21458: result: $cf_cv_dcl_errno" >&5 +echo "$as_me:21323: result: $cf_cv_dcl_errno" >&5 echo "${ECHO_T}$cf_cv_dcl_errno" >&6 if test "$cf_cv_dcl_errno" = no ; then @@ -21470,14 +21335,14 @@ fi # It's possible (for near-UNIX clones) that the data doesn't exist -echo "$as_me:21473: checking if external errno exists" >&5 +echo "$as_me:21338: checking if external errno exists" >&5 echo $ECHO_N "checking if external errno exists... $ECHO_C" >&6 if test "${cf_cv_have_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 21480 "configure" +#line 21345 "configure" #include "confdefs.h" #undef errno @@ -21492,16 +21357,16 @@ errno = 2 } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:21495: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21360: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:21498: \$? = $ac_status" >&5 + echo "$as_me:21363: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:21501: \"$ac_try\"") >&5 + { (eval echo "$as_me:21366: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21504: \$? = $ac_status" >&5 + echo "$as_me:21369: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have_errno=yes else @@ -21512,7 +21377,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:21515: result: $cf_cv_have_errno" >&5 +echo "$as_me:21380: result: $cf_cv_have_errno" >&5 echo "${ECHO_T}$cf_cv_have_errno" >&6 if test "$cf_cv_have_errno" = yes ; then @@ -21525,7 +21390,7 @@ EOF fi -echo "$as_me:21528: checking if data-only library module links" >&5 +echo "$as_me:21393: checking if data-only library module links" >&5 echo $ECHO_N "checking if data-only library module links... $ECHO_C" >&6 if test "${cf_cv_link_dataonly+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -21533,20 +21398,20 @@ else rm -f conftest.a cat >conftest.$ac_ext <<EOF -#line 21536 "configure" +#line 21401 "configure" int testdata[3] = { 123, 456, 789 }; EOF - if { (eval echo "$as_me:21539: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:21404: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21542: \$? = $ac_status" >&5 + echo "$as_me:21407: \$? = $ac_status" >&5 (exit "$ac_status"); } ; then - mv conftest.o data.o && \ - ( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null + mv conftest.$OBJEXT data.$OBJEXT && \ + ( $AR $ARFLAGS conftest.a data.$OBJEXT ) 2>&5 1>/dev/null fi - rm -f conftest.$ac_ext data.o + rm -f conftest.$ac_ext data.$OBJEXT cat >conftest.$ac_ext <<EOF -#line 21549 "configure" +#line 21414 "configure" extern int testfunc(void); #if defined(NeXT) int testfunc(void) @@ -21563,15 +21428,15 @@ int testfunc(void) } #endif EOF - if { (eval echo "$as_me:21566: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:21431: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21569: \$? = $ac_status" >&5 + echo "$as_me:21434: \$? = $ac_status" >&5 (exit "$ac_status"); }; then - mv conftest.o func.o && \ - ( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null + mv conftest.$OBJEXT func.$OBJEXT && \ + ( $AR $ARFLAGS conftest.a func.$OBJEXT ) 2>&5 1>/dev/null fi - rm -f conftest.$ac_ext func.o + rm -f conftest.$ac_ext func.$OBJEXT ( eval $RANLIB conftest.a ) 2>&5 >/dev/null cf_saveLIBS="$LIBS" LIBS="conftest.a $LIBS" @@ -21579,7 +21444,7 @@ EOF cf_cv_link_dataonly=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 21582 "configure" +#line 21447 "configure" #include "confdefs.h" extern int testfunc(void); @@ -21590,15 +21455,15 @@ else _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:21593: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21458: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:21596: \$? = $ac_status" >&5 + echo "$as_me:21461: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:21598: \"$ac_try\"") >&5 + { (eval echo "$as_me:21463: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21601: \$? = $ac_status" >&5 + echo "$as_me:21466: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_link_dataonly=yes else @@ -21613,7 +21478,7 @@ fi fi -echo "$as_me:21616: result: $cf_cv_link_dataonly" >&5 +echo "$as_me:21481: result: $cf_cv_link_dataonly" >&5 echo "${ECHO_T}$cf_cv_link_dataonly" >&6 if test "$cf_cv_link_dataonly" = no ; then @@ -21627,36 +21492,162 @@ fi ### Checks for library functions. -echo "$as_me:21630: checking for clock_gettime" >&5 +cf_save_libs="$LIBS" +echo "$as_me:21496: checking for clock_gettime" >&5 echo $ECHO_N "checking for clock_gettime... $ECHO_C" >&6 +if test "${ac_cv_func_clock_gettime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 21502 "configure" +#include "confdefs.h" +#define clock_gettime autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef clock_gettime + +#ifdef __cplusplus +extern "C" +#endif + +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (void); + +int +main (void) +{ + +/* The GNU C library defines stubs for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_clock_gettime) || defined (__stub___clock_gettime) +#error found stub for clock_gettime +#endif + + return clock_gettime (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21533: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21536: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21539: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21542: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_clock_gettime=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_clock_gettime=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:21552: result: $ac_cv_func_clock_gettime" >&5 +echo "${ECHO_T}$ac_cv_func_clock_gettime" >&6 +if test "$ac_cv_func_clock_gettime" = yes; then + cf_cv_test_clock_gettime=yes +else + echo "$as_me:21557: checking for clock_gettime in -lrt" >&5 +echo $ECHO_N "checking for clock_gettime in -lrt... $ECHO_C" >&6 +if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21565 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (void); +int +main (void) +{ +clock_gettime (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21584: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21587: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21590: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21593: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_rt_clock_gettime=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_rt_clock_gettime=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21604: result: $ac_cv_lib_rt_clock_gettime" >&5 +echo "${ECHO_T}$ac_cv_lib_rt_clock_gettime" >&6 +if test "$ac_cv_lib_rt_clock_gettime" = yes; then + LIBS="-lrt $LIBS" + cf_cv_test_clock_gettime=yes +else + cf_cv_test_clock_gettime=no +fi + +fi + +if test "$cf_cv_test_clock_gettime" = yes ; then +echo "$as_me:21616: checking if clock_gettime links" >&5 +echo $ECHO_N "checking if clock_gettime links... $ECHO_C" >&6 if test "${cf_cv_func_clock_gettime+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 21637 "configure" +#line 21623 "configure" #include "confdefs.h" + +$ac_includes_default #include <time.h> + int main (void) { struct timespec ts; - int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts + int rc = clock_gettime(CLOCK_REALTIME, &ts) + + clock_gettime(CLOCK_MONOTONIC, &ts); + (void) rc; (void)ts ; return 0; } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:21650: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21641: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:21653: \$? = $ac_status" >&5 + echo "$as_me:21644: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:21656: \"$ac_try\"") >&5 + { (eval echo "$as_me:21647: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21659: \$? = $ac_status" >&5 + echo "$as_me:21650: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_clock_gettime=yes else @@ -21667,8 +21658,11 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:21670: result: $cf_cv_func_clock_gettime" >&5 +echo "$as_me:21661: result: $cf_cv_func_clock_gettime" >&5 echo "${ECHO_T}$cf_cv_func_clock_gettime" >&6 +else + cf_cv_func_clock_gettime=no +fi if test "$cf_cv_func_clock_gettime" = yes then @@ -21678,13 +21672,13 @@ cat >>confdefs.h <<\EOF EOF else -echo "$as_me:21681: checking for gettimeofday" >&5 +echo "$as_me:21675: checking for gettimeofday" >&5 echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6 if test "${ac_cv_func_gettimeofday+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 21687 "configure" +#line 21681 "configure" #include "confdefs.h" #define gettimeofday autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -21715,16 +21709,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:21718: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21712: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:21721: \$? = $ac_status" >&5 + echo "$as_me:21715: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:21724: \"$ac_try\"") >&5 + { (eval echo "$as_me:21718: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21727: \$? = $ac_status" >&5 + echo "$as_me:21721: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_gettimeofday=yes else @@ -21734,7 +21728,7 @@ ac_cv_func_gettimeofday=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:21737: result: $ac_cv_func_gettimeofday" >&5 +echo "$as_me:21731: result: $ac_cv_func_gettimeofday" >&5 echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 if test "$ac_cv_func_gettimeofday" = yes; then @@ -21744,7 +21738,7 @@ EOF else -echo "$as_me:21747: checking for gettimeofday in -lbsd" >&5 +echo "$as_me:21741: checking for gettimeofday in -lbsd" >&5 echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -21752,7 +21746,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 21755 "configure" +#line 21749 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -21771,16 +21765,16 @@ gettimeofday (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:21774: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21768: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:21777: \$? = $ac_status" >&5 + echo "$as_me:21771: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:21780: \"$ac_try\"") >&5 + { (eval echo "$as_me:21774: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21783: \$? = $ac_status" >&5 + echo "$as_me:21777: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_bsd_gettimeofday=yes else @@ -21791,7 +21785,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:21794: result: $ac_cv_lib_bsd_gettimeofday" >&5 +echo "$as_me:21788: result: $ac_cv_lib_bsd_gettimeofday" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6 if test "$ac_cv_lib_bsd_gettimeofday" = yes; then @@ -21850,13 +21844,13 @@ vsnprintf \ do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:21853: checking for $ac_func" >&5 +echo "$as_me:21847: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 21859 "configure" +#line 21853 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -21887,16 +21881,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:21890: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21884: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:21893: \$? = $ac_status" >&5 + echo "$as_me:21887: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:21896: \"$ac_try\"") >&5 + { (eval echo "$as_me:21890: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21899: \$? = $ac_status" >&5 + echo "$as_me:21893: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -21906,7 +21900,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:21909: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:21903: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -21916,14 +21910,14 @@ EOF fi done -echo "$as_me:21919: checking if _PATH_TTYS is defined in ttyent.h" >&5 +echo "$as_me:21913: checking if _PATH_TTYS is defined in ttyent.h" >&5 echo $ECHO_N "checking if _PATH_TTYS is defined in ttyent.h... $ECHO_C" >&6 if test "${cf_cv_PATH_TTYS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 21926 "configure" +#line 21920 "configure" #include "confdefs.h" #include <stdio.h> @@ -21938,16 +21932,16 @@ FILE *fp = fopen(_PATH_TTYS, "r"); (void)fp } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:21941: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:21935: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:21944: \$? = $ac_status" >&5 + echo "$as_me:21938: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:21947: \"$ac_try\"") >&5 + { (eval echo "$as_me:21941: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:21950: \$? = $ac_status" >&5 + echo "$as_me:21944: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_PATH_TTYS=yes else @@ -21957,7 +21951,7 @@ cf_cv_PATH_TTYS=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:21960: result: $cf_cv_PATH_TTYS" >&5 +echo "$as_me:21954: result: $cf_cv_PATH_TTYS" >&5 echo "${ECHO_T}$cf_cv_PATH_TTYS" >&6 if test $cf_cv_PATH_TTYS = no @@ -21979,7 +21973,7 @@ fi if test $cf_cv_PATH_TTYS != no then - echo "$as_me:21982: checking if _PATH_TTYS file exists" >&5 + echo "$as_me:21976: checking if _PATH_TTYS file exists" >&5 echo $ECHO_N "checking if _PATH_TTYS file exists... $ECHO_C" >&6 if test "${cf_cv_have_PATH_TTYS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -21989,28 +21983,27 @@ else cf_cv_have_PATH_TTYS=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 21992 "configure" +#line 21986 "configure" #include "confdefs.h" $ac_includes_default - #include <ttyent.h> int main(void) { FILE *fp = fopen(_PATH_TTYS, "r"); - ${cf_cv_main_return:-return} (fp == 0); + ${cf_cv_main_return:-return} (fp == NULL); } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:22005: \"$ac_link\"") >&5 +if { (eval echo "$as_me:21998: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22008: \$? = $ac_status" >&5 + echo "$as_me:22001: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:22010: \"$ac_try\"") >&5 + { (eval echo "$as_me:22003: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22013: \$? = $ac_status" >&5 + echo "$as_me:22006: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have_PATH_TTYS=yes else @@ -22022,7 +22015,7 @@ fi rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" fi fi -echo "$as_me:22025: result: $cf_cv_have_PATH_TTYS" >&5 +echo "$as_me:22018: result: $cf_cv_have_PATH_TTYS" >&5 echo "${ECHO_T}$cf_cv_have_PATH_TTYS" >&6 test "$cf_cv_have_PATH_TTYS" = no && cf_cv_PATH_TTYS=no fi @@ -22034,14 +22027,14 @@ cat >>confdefs.h <<\EOF #define HAVE_PATH_TTYS 1 EOF - echo "$as_me:22037: checking for getttynam" >&5 + echo "$as_me:22030: checking for getttynam" >&5 echo $ECHO_N "checking for getttynam... $ECHO_C" >&6 if test "${cf_cv_func_getttynam+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22044 "configure" +#line 22037 "configure" #include "confdefs.h" #include <ttyent.h> int @@ -22053,16 +22046,16 @@ struct ttyent *fp = getttynam("/dev/tty"); (void)fp } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22056: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22049: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22059: \$? = $ac_status" >&5 + echo "$as_me:22052: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22062: \"$ac_try\"") >&5 + { (eval echo "$as_me:22055: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22065: \$? = $ac_status" >&5 + echo "$as_me:22058: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_getttynam=yes else @@ -22072,9 +22065,10 @@ cf_cv_func_getttynam=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:22075: result: $cf_cv_func_getttynam" >&5 +echo "$as_me:22068: result: $cf_cv_func_getttynam" >&5 echo "${ECHO_T}$cf_cv_func_getttynam" >&6 - test "$cf_cv_func_getttynam" = yes && cat >>confdefs.h <<\EOF + test "$cf_cv_func_getttynam" = yes && +cat >>confdefs.h <<\EOF #define HAVE_GETTTYNAM 1 EOF @@ -22082,7 +22076,7 @@ fi if test "x$ac_cv_func_getopt" = xno && \ test "x$cf_with_progs$cf_with_tests" != xnono; then - { { echo "$as_me:22085: error: getopt is required for building programs" >&5 + { { echo "$as_me:22079: error: getopt is required for building programs" >&5 echo "$as_me: error: getopt is required for building programs" >&2;} { (exit 1); exit 1; }; } fi @@ -22091,7 +22085,7 @@ if test "x$with_safe_sprintf" = xyes then if test "x$ac_cv_func_vsnprintf" = xyes then - { echo "$as_me:22094: WARNING: will use vsnprintf instead of safe-sprintf option" >&5 + { echo "$as_me:22088: WARNING: will use vsnprintf instead of safe-sprintf option" >&5 echo "$as_me: WARNING: will use vsnprintf instead of safe-sprintf option" >&2;} else @@ -22104,14 +22098,14 @@ fi if test "x$with_getcap" = "xyes" ; then -echo "$as_me:22107: checking for terminal-capability database functions" >&5 +echo "$as_me:22101: checking for terminal-capability database functions" >&5 echo $ECHO_N "checking for terminal-capability database functions... $ECHO_C" >&6 if test "${cf_cv_cgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22114 "configure" +#line 22108 "configure" #include "confdefs.h" $ac_includes_default @@ -22131,16 +22125,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22134: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22128: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22137: \$? = $ac_status" >&5 + echo "$as_me:22131: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22140: \"$ac_try\"") >&5 + { (eval echo "$as_me:22134: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22143: \$? = $ac_status" >&5 + echo "$as_me:22137: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_cgetent=yes else @@ -22151,7 +22145,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:22154: result: $cf_cv_cgetent" >&5 +echo "$as_me:22148: result: $cf_cv_cgetent" >&5 echo "${ECHO_T}$cf_cv_cgetent" >&6 if test "$cf_cv_cgetent" = yes @@ -22161,14 +22155,14 @@ cat >>confdefs.h <<\EOF #define HAVE_BSD_CGETENT 1 EOF -echo "$as_me:22164: checking if cgetent uses const parameter" >&5 +echo "$as_me:22158: checking if cgetent uses const parameter" >&5 echo $ECHO_N "checking if cgetent uses const parameter... $ECHO_C" >&6 if test "${cf_cv_cgetent_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22171 "configure" +#line 22165 "configure" #include "confdefs.h" #pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers" @@ -22191,16 +22185,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22194: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22188: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22197: \$? = $ac_status" >&5 + echo "$as_me:22191: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22200: \"$ac_try\"") >&5 + { (eval echo "$as_me:22194: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22203: \$? = $ac_status" >&5 + echo "$as_me:22197: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_cgetent_const=yes else @@ -22211,7 +22205,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:22214: result: $cf_cv_cgetent_const" >&5 +echo "$as_me:22208: result: $cf_cv_cgetent_const" >&5 echo "${ECHO_T}$cf_cv_cgetent_const" >&6 if test "$cf_cv_cgetent_const" = yes then @@ -22225,14 +22219,14 @@ fi fi -echo "$as_me:22228: checking for isascii" >&5 +echo "$as_me:22222: checking for isascii" >&5 echo $ECHO_N "checking for isascii... $ECHO_C" >&6 if test "${cf_cv_have_isascii+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22235 "configure" +#line 22229 "configure" #include "confdefs.h" #include <ctype.h> int @@ -22244,16 +22238,16 @@ int x = isascii(' '); (void)x } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22247: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22241: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22250: \$? = $ac_status" >&5 + echo "$as_me:22244: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22253: \"$ac_try\"") >&5 + { (eval echo "$as_me:22247: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22256: \$? = $ac_status" >&5 + echo "$as_me:22250: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have_isascii=yes else @@ -22264,7 +22258,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:22267: result: $cf_cv_have_isascii" >&5 +echo "$as_me:22261: result: $cf_cv_have_isascii" >&5 echo "${ECHO_T}$cf_cv_have_isascii" >&6 test "$cf_cv_have_isascii" = yes && cat >>confdefs.h <<\EOF @@ -22272,10 +22266,10 @@ cat >>confdefs.h <<\EOF EOF if test "$ac_cv_func_sigaction" = yes; then -echo "$as_me:22275: checking whether sigaction needs _POSIX_SOURCE" >&5 +echo "$as_me:22269: checking whether sigaction needs _POSIX_SOURCE" >&5 echo $ECHO_N "checking whether sigaction needs _POSIX_SOURCE... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 22278 "configure" +#line 22272 "configure" #include "confdefs.h" #include <sys/types.h> @@ -22289,16 +22283,16 @@ struct sigaction act; (void)act } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:22292: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:22286: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:22295: \$? = $ac_status" >&5 + echo "$as_me:22289: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:22298: \"$ac_try\"") >&5 + { (eval echo "$as_me:22292: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22301: \$? = $ac_status" >&5 + echo "$as_me:22295: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then sigact_bad=no else @@ -22306,7 +22300,7 @@ else cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 22309 "configure" +#line 22303 "configure" #include "confdefs.h" #define _POSIX_SOURCE @@ -22321,16 +22315,16 @@ struct sigaction act; (void)act } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:22324: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:22318: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:22327: \$? = $ac_status" >&5 + echo "$as_me:22321: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:22330: \"$ac_try\"") >&5 + { (eval echo "$as_me:22324: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22333: \$? = $ac_status" >&5 + echo "$as_me:22327: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then sigact_bad=yes @@ -22346,11 +22340,11 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" -echo "$as_me:22349: result: $sigact_bad" >&5 +echo "$as_me:22343: result: $sigact_bad" >&5 echo "${ECHO_T}$sigact_bad" >&6 fi -echo "$as_me:22353: checking if nanosleep really works" >&5 +echo "$as_me:22347: checking if nanosleep really works" >&5 echo $ECHO_N "checking if nanosleep really works... $ECHO_C" >&6 if test "${cf_cv_func_nanosleep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -22360,7 +22354,7 @@ if test "$cross_compiling" = yes; then cf_cv_func_nanosleep=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 22363 "configure" +#line 22357 "configure" #include "confdefs.h" $ac_includes_default @@ -22386,15 +22380,15 @@ int main(void) { _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:22389: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22383: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22392: \$? = $ac_status" >&5 + echo "$as_me:22386: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:22394: \"$ac_try\"") >&5 + { (eval echo "$as_me:22388: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22397: \$? = $ac_status" >&5 + echo "$as_me:22391: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_nanosleep=yes else @@ -22406,7 +22400,7 @@ fi rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" fi fi -echo "$as_me:22409: result: $cf_cv_func_nanosleep" >&5 +echo "$as_me:22403: result: $cf_cv_func_nanosleep" >&5 echo "${ECHO_T}$cf_cv_func_nanosleep" >&6 test "$cf_cv_func_nanosleep" = "yes" && @@ -22414,7 +22408,7 @@ cat >>confdefs.h <<\EOF #define HAVE_NANOSLEEP 1 EOF -for ac_header in \ +for ac_header in sgtty.h \ termio.h \ termios.h \ unistd.h \ @@ -22423,23 +22417,23 @@ sys/termio.h \ do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:22426: checking for $ac_header" >&5 +echo "$as_me:22420: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22432 "configure" +#line 22426 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:22436: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:22430: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:22442: \$? = $ac_status" >&5 + echo "$as_me:22436: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -22458,7 +22452,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:22461: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:22455: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -22475,10 +22469,10 @@ if test "$ac_cv_header_termios_h" = yes ; then (*) termios_bad=maybe ;; esac if test "$termios_bad" = maybe ; then - echo "$as_me:22478: checking whether termios.h needs _POSIX_SOURCE" >&5 + echo "$as_me:22472: checking whether termios.h needs _POSIX_SOURCE" >&5 echo $ECHO_N "checking whether termios.h needs _POSIX_SOURCE... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 22481 "configure" +#line 22475 "configure" #include "confdefs.h" #include <termios.h> int @@ -22490,16 +22484,16 @@ struct termios foo; int x = (int)(foo.c_iflag = 1); (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:22493: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:22487: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:22496: \$? = $ac_status" >&5 + echo "$as_me:22490: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:22499: \"$ac_try\"") >&5 + { (eval echo "$as_me:22493: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22502: \$? = $ac_status" >&5 + echo "$as_me:22496: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then termios_bad=no else @@ -22507,7 +22501,7 @@ else cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 22510 "configure" +#line 22504 "configure" #include "confdefs.h" #define _POSIX_SOURCE @@ -22521,16 +22515,16 @@ struct termios foo; int x = (int)(foo.c_iflag = 2); (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:22524: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:22518: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:22527: \$? = $ac_status" >&5 + echo "$as_me:22521: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:22530: \"$ac_try\"") >&5 + { (eval echo "$as_me:22524: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22533: \$? = $ac_status" >&5 + echo "$as_me:22527: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then termios_bad=unknown else @@ -22546,19 +22540,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" - echo "$as_me:22549: result: $termios_bad" >&5 + echo "$as_me:22543: result: $termios_bad" >&5 echo "${ECHO_T}$termios_bad" >&6 fi fi -echo "$as_me:22554: checking for tcgetattr" >&5 +echo "$as_me:22548: checking for tcgetattr" >&5 echo $ECHO_N "checking for tcgetattr... $ECHO_C" >&6 if test "${cf_cv_have_tcgetattr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22561 "configure" +#line 22555 "configure" #include "confdefs.h" #include <sys/types.h> @@ -22586,16 +22580,16 @@ tcgetattr(1, &foo); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22589: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22583: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22592: \$? = $ac_status" >&5 + echo "$as_me:22586: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22595: \"$ac_try\"") >&5 + { (eval echo "$as_me:22589: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22598: \$? = $ac_status" >&5 + echo "$as_me:22592: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have_tcgetattr=yes else @@ -22605,21 +22599,21 @@ cf_cv_have_tcgetattr=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:22608: result: $cf_cv_have_tcgetattr" >&5 +echo "$as_me:22602: result: $cf_cv_have_tcgetattr" >&5 echo "${ECHO_T}$cf_cv_have_tcgetattr" >&6 test "$cf_cv_have_tcgetattr" = yes && cat >>confdefs.h <<\EOF #define HAVE_TCGETATTR 1 EOF -echo "$as_me:22615: checking for vsscanf function or workaround" >&5 +echo "$as_me:22609: checking for vsscanf function or workaround" >&5 echo $ECHO_N "checking for vsscanf function or workaround... $ECHO_C" >&6 if test "${cf_cv_func_vsscanf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22622 "configure" +#line 22616 "configure" #include "confdefs.h" #include <stdarg.h> @@ -22645,16 +22639,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22648: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22642: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22651: \$? = $ac_status" >&5 + echo "$as_me:22645: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22654: \"$ac_try\"") >&5 + { (eval echo "$as_me:22648: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22657: \$? = $ac_status" >&5 + echo "$as_me:22651: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_vsscanf=vsscanf else @@ -22662,7 +22656,7 @@ else cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 22665 "configure" +#line 22659 "configure" #include "confdefs.h" #include <stdarg.h> @@ -22684,16 +22678,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22687: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22681: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22690: \$? = $ac_status" >&5 + echo "$as_me:22684: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22693: \"$ac_try\"") >&5 + { (eval echo "$as_me:22687: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22696: \$? = $ac_status" >&5 + echo "$as_me:22690: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_vsscanf=vfscanf else @@ -22701,7 +22695,7 @@ else cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 22704 "configure" +#line 22698 "configure" #include "confdefs.h" #include <stdarg.h> @@ -22723,16 +22717,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22726: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22720: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22729: \$? = $ac_status" >&5 + echo "$as_me:22723: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22732: \"$ac_try\"") >&5 + { (eval echo "$as_me:22726: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22735: \$? = $ac_status" >&5 + echo "$as_me:22729: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_vsscanf=_doscan else @@ -22747,7 +22741,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:22750: result: $cf_cv_func_vsscanf" >&5 +echo "$as_me:22744: result: $cf_cv_func_vsscanf" >&5 echo "${ECHO_T}$cf_cv_func_vsscanf" >&6 case "$cf_cv_func_vsscanf" in @@ -22773,23 +22767,23 @@ unistd.h \ do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:22776: checking for $ac_header" >&5 +echo "$as_me:22770: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22782 "configure" +#line 22776 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:22786: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:22780: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:22792: \$? = $ac_status" >&5 + echo "$as_me:22786: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -22808,7 +22802,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:22811: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:22805: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -22818,7 +22812,7 @@ EOF fi done -echo "$as_me:22821: checking for working mkstemp" >&5 +echo "$as_me:22815: checking for working mkstemp" >&5 echo $ECHO_N "checking for working mkstemp... $ECHO_C" >&6 if test "${cf_cv_func_mkstemp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -22829,7 +22823,7 @@ if test "$cross_compiling" = yes; then cf_cv_func_mkstemp=maybe else cat >"conftest.$ac_ext" <<_ACEOF -#line 22832 "configure" +#line 22826 "configure" #include "confdefs.h" $ac_includes_default @@ -22864,15 +22858,15 @@ int main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:22867: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22861: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22870: \$? = $ac_status" >&5 + echo "$as_me:22864: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:22872: \"$ac_try\"") >&5 + { (eval echo "$as_me:22866: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22875: \$? = $ac_status" >&5 + echo "$as_me:22869: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_mkstemp=yes @@ -22887,16 +22881,16 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes fi fi -echo "$as_me:22890: result: $cf_cv_func_mkstemp" >&5 +echo "$as_me:22884: result: $cf_cv_func_mkstemp" >&5 echo "${ECHO_T}$cf_cv_func_mkstemp" >&6 if test "x$cf_cv_func_mkstemp" = xmaybe ; then - echo "$as_me:22893: checking for mkstemp" >&5 + echo "$as_me:22887: checking for mkstemp" >&5 echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6 if test "${ac_cv_func_mkstemp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 22899 "configure" +#line 22893 "configure" #include "confdefs.h" #define mkstemp autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -22927,16 +22921,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:22930: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22924: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:22933: \$? = $ac_status" >&5 + echo "$as_me:22927: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:22936: \"$ac_try\"") >&5 + { (eval echo "$as_me:22930: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:22939: \$? = $ac_status" >&5 + echo "$as_me:22933: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_mkstemp=yes else @@ -22946,7 +22940,7 @@ ac_cv_func_mkstemp=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:22949: result: $ac_cv_func_mkstemp" >&5 +echo "$as_me:22943: result: $ac_cv_func_mkstemp" >&5 echo "${ECHO_T}$ac_cv_func_mkstemp" >&6 fi @@ -22967,21 +22961,21 @@ else fi if test "x$cross_compiling" = xyes ; then - { echo "$as_me:22970: WARNING: cross compiling: assume setvbuf params not reversed" >&5 + { echo "$as_me:22964: WARNING: cross compiling: assume setvbuf params not reversed" >&5 echo "$as_me: WARNING: cross compiling: assume setvbuf params not reversed" >&2;} else - echo "$as_me:22973: checking whether setvbuf arguments are reversed" >&5 + echo "$as_me:22967: checking whether setvbuf arguments are reversed" >&5 echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 if test "${ac_cv_func_setvbuf_reversed+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then - { { echo "$as_me:22979: error: cannot run test program while cross compiling" >&5 + { { echo "$as_me:22973: error: cannot run test program while cross compiling" >&5 echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >"conftest.$ac_ext" <<_ACEOF -#line 22984 "configure" +#line 22978 "configure" #include "confdefs.h" #include <stdio.h> /* If setvbuf has the reversed format, exit 0. */ @@ -22998,15 +22992,15 @@ main (void) } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:23001: \"$ac_link\"") >&5 +if { (eval echo "$as_me:22995: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23004: \$? = $ac_status" >&5 + echo "$as_me:22998: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:23006: \"$ac_try\"") >&5 + { (eval echo "$as_me:23000: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23009: \$? = $ac_status" >&5 + echo "$as_me:23003: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_setvbuf_reversed=yes else @@ -23019,7 +23013,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes fi rm -f core ./core.* ./*.core fi -echo "$as_me:23022: result: $ac_cv_func_setvbuf_reversed" >&5 +echo "$as_me:23016: result: $ac_cv_func_setvbuf_reversed" >&5 echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 if test $ac_cv_func_setvbuf_reversed = yes; then @@ -23030,13 +23024,13 @@ EOF fi fi -echo "$as_me:23033: checking for intptr_t" >&5 +echo "$as_me:23027: checking for intptr_t" >&5 echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6 if test "${ac_cv_type_intptr_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23039 "configure" +#line 23033 "configure" #include "confdefs.h" $ac_includes_default int @@ -23051,16 +23045,16 @@ if (sizeof (intptr_t)) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:23054: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:23048: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:23057: \$? = $ac_status" >&5 + echo "$as_me:23051: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:23060: \"$ac_try\"") >&5 + { (eval echo "$as_me:23054: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23063: \$? = $ac_status" >&5 + echo "$as_me:23057: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_type_intptr_t=yes else @@ -23070,7 +23064,7 @@ ac_cv_type_intptr_t=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:23073: result: $ac_cv_type_intptr_t" >&5 +echo "$as_me:23067: result: $ac_cv_type_intptr_t" >&5 echo "${ECHO_T}$ac_cv_type_intptr_t" >&6 if test "$ac_cv_type_intptr_t" = yes; then : @@ -23082,13 +23076,13 @@ EOF fi -echo "$as_me:23085: checking for ssize_t" >&5 +echo "$as_me:23079: checking for ssize_t" >&5 echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 if test "${ac_cv_type_ssize_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23091 "configure" +#line 23085 "configure" #include "confdefs.h" $ac_includes_default int @@ -23103,16 +23097,16 @@ if (sizeof (ssize_t)) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:23106: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:23100: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:23109: \$? = $ac_status" >&5 + echo "$as_me:23103: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:23112: \"$ac_try\"") >&5 + { (eval echo "$as_me:23106: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23115: \$? = $ac_status" >&5 + echo "$as_me:23109: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_type_ssize_t=yes else @@ -23122,7 +23116,7 @@ ac_cv_type_ssize_t=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:23125: result: $ac_cv_type_ssize_t" >&5 +echo "$as_me:23119: result: $ac_cv_type_ssize_t" >&5 echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 if test "$ac_cv_type_ssize_t" = yes; then : @@ -23134,14 +23128,14 @@ EOF fi -echo "$as_me:23137: checking for type sigaction_t" >&5 +echo "$as_me:23131: checking for type sigaction_t" >&5 echo $ECHO_N "checking for type sigaction_t... $ECHO_C" >&6 if test "${cf_cv_type_sigaction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23144 "configure" +#line 23138 "configure" #include "confdefs.h" #include <signal.h> @@ -23154,16 +23148,16 @@ sigaction_t x; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:23157: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:23151: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:23160: \$? = $ac_status" >&5 + echo "$as_me:23154: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:23163: \"$ac_try\"") >&5 + { (eval echo "$as_me:23157: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23166: \$? = $ac_status" >&5 + echo "$as_me:23160: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_type_sigaction=yes else @@ -23174,14 +23168,14 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:23177: result: $cf_cv_type_sigaction" >&5 +echo "$as_me:23171: result: $cf_cv_type_sigaction" >&5 echo "${ECHO_T}$cf_cv_type_sigaction" >&6 test "$cf_cv_type_sigaction" = yes && cat >>confdefs.h <<\EOF #define HAVE_TYPE_SIGACTION 1 EOF -echo "$as_me:23184: checking declaration of size-change" >&5 +echo "$as_me:23178: checking declaration of size-change" >&5 echo $ECHO_N "checking declaration of size-change... $ECHO_C" >&6 if test "${cf_cv_sizechange+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -23202,7 +23196,7 @@ do fi cat >"conftest.$ac_ext" <<_ACEOF -#line 23205 "configure" +#line 23199 "configure" #include "confdefs.h" #include <sys/types.h> #ifdef HAVE_TERMIOS_H @@ -23252,16 +23246,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:23255: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:23249: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:23258: \$? = $ac_status" >&5 + echo "$as_me:23252: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:23261: \"$ac_try\"") >&5 + { (eval echo "$as_me:23255: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23264: \$? = $ac_status" >&5 + echo "$as_me:23258: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_sizechange=yes else @@ -23280,7 +23274,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" done fi -echo "$as_me:23283: result: $cf_cv_sizechange" >&5 +echo "$as_me:23277: result: $cf_cv_sizechange" >&5 echo "${ECHO_T}$cf_cv_sizechange" >&6 if test "$cf_cv_sizechange" != no ; then @@ -23298,13 +23292,13 @@ EOF esac fi -echo "$as_me:23301: checking for memmove" >&5 +echo "$as_me:23295: checking for memmove" >&5 echo $ECHO_N "checking for memmove... $ECHO_C" >&6 if test "${ac_cv_func_memmove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23307 "configure" +#line 23301 "configure" #include "confdefs.h" #define memmove autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -23335,16 +23329,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23338: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23332: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23341: \$? = $ac_status" >&5 + echo "$as_me:23335: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23344: \"$ac_try\"") >&5 + { (eval echo "$as_me:23338: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23347: \$? = $ac_status" >&5 + echo "$as_me:23341: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_memmove=yes else @@ -23354,19 +23348,19 @@ ac_cv_func_memmove=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23357: result: $ac_cv_func_memmove" >&5 +echo "$as_me:23351: result: $ac_cv_func_memmove" >&5 echo "${ECHO_T}$ac_cv_func_memmove" >&6 if test "$ac_cv_func_memmove" = yes; then : else -echo "$as_me:23363: checking for bcopy" >&5 +echo "$as_me:23357: checking for bcopy" >&5 echo $ECHO_N "checking for bcopy... $ECHO_C" >&6 if test "${ac_cv_func_bcopy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23369 "configure" +#line 23363 "configure" #include "confdefs.h" #define bcopy autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -23397,16 +23391,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23400: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23394: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23403: \$? = $ac_status" >&5 + echo "$as_me:23397: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23406: \"$ac_try\"") >&5 + { (eval echo "$as_me:23400: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23409: \$? = $ac_status" >&5 + echo "$as_me:23403: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_bcopy=yes else @@ -23416,11 +23410,11 @@ ac_cv_func_bcopy=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23419: result: $ac_cv_func_bcopy" >&5 +echo "$as_me:23413: result: $ac_cv_func_bcopy" >&5 echo "${ECHO_T}$ac_cv_func_bcopy" >&6 if test "$ac_cv_func_bcopy" = yes; then - echo "$as_me:23423: checking if bcopy does overlapping moves" >&5 + echo "$as_me:23417: checking if bcopy does overlapping moves" >&5 echo $ECHO_N "checking if bcopy does overlapping moves... $ECHO_C" >&6 if test "${cf_cv_good_bcopy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -23430,7 +23424,7 @@ else cf_cv_good_bcopy=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 23433 "configure" +#line 23427 "configure" #include "confdefs.h" $ac_includes_default @@ -23446,15 +23440,15 @@ int main(void) { _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:23449: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23443: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23452: \$? = $ac_status" >&5 + echo "$as_me:23446: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:23454: \"$ac_try\"") >&5 + { (eval echo "$as_me:23448: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23457: \$? = $ac_status" >&5 + echo "$as_me:23451: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_good_bcopy=yes else @@ -23467,7 +23461,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes fi fi -echo "$as_me:23470: result: $cf_cv_good_bcopy" >&5 +echo "$as_me:23464: result: $cf_cv_good_bcopy" >&5 echo "${ECHO_T}$cf_cv_good_bcopy" >&6 else @@ -23494,13 +23488,13 @@ tty >/dev/null 2>&1 || { for ac_func in posix_openpt do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:23497: checking for $ac_func" >&5 +echo "$as_me:23491: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23503 "configure" +#line 23497 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -23531,16 +23525,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23534: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23528: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23537: \$? = $ac_status" >&5 + echo "$as_me:23531: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23540: \"$ac_try\"") >&5 + { (eval echo "$as_me:23534: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23543: \$? = $ac_status" >&5 + echo "$as_me:23537: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -23550,7 +23544,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23553: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:23547: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -23560,7 +23554,7 @@ EOF fi done } -echo "$as_me:23563: checking if poll really works" >&5 +echo "$as_me:23557: checking if poll really works" >&5 echo $ECHO_N "checking if poll really works... $ECHO_C" >&6 if test "${cf_cv_working_poll+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -23570,7 +23564,7 @@ if test "$cross_compiling" = yes; then cf_cv_working_poll=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 23573 "configure" +#line 23567 "configure" #include "confdefs.h" $ac_includes_default @@ -23623,15 +23617,15 @@ int main(void) { } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:23626: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23620: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23629: \$? = $ac_status" >&5 + echo "$as_me:23623: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:23631: \"$ac_try\"") >&5 + { (eval echo "$as_me:23625: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23634: \$? = $ac_status" >&5 + echo "$as_me:23628: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_working_poll=yes else @@ -23643,21 +23637,21 @@ fi rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" fi fi -echo "$as_me:23646: result: $cf_cv_working_poll" >&5 +echo "$as_me:23640: result: $cf_cv_working_poll" >&5 echo "${ECHO_T}$cf_cv_working_poll" >&6 test "$cf_cv_working_poll" = "yes" && cat >>confdefs.h <<\EOF #define HAVE_WORKING_POLL 1 EOF -echo "$as_me:23653: checking if MB_LEN_MAX is usable" >&5 +echo "$as_me:23647: checking if MB_LEN_MAX is usable" >&5 echo $ECHO_N "checking if MB_LEN_MAX is usable... $ECHO_C" >&6 if test "${cf_cv_mb_len_max+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23660 "configure" +#line 23654 "configure" #include "confdefs.h" $ac_includes_default @@ -23677,16 +23671,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:23680: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:23674: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:23683: \$? = $ac_status" >&5 + echo "$as_me:23677: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:23686: \"$ac_try\"") >&5 + { (eval echo "$as_me:23680: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23689: \$? = $ac_status" >&5 + echo "$as_me:23683: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_mb_len_max=yes else @@ -23696,7 +23690,7 @@ cf_cv_mb_len_max=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:23699: result: $cf_cv_mb_len_max" >&5 +echo "$as_me:23693: result: $cf_cv_mb_len_max" >&5 echo "${ECHO_T}$cf_cv_mb_len_max" >&6 if test "$cf_cv_mb_len_max" = yes then @@ -23706,18 +23700,18 @@ cat >>confdefs.h <<\EOF EOF else - { echo "$as_me:23709: WARNING: MB_LEN_MAX is missing/inconsistent in system headers" >&5 + { echo "$as_me:23703: WARNING: MB_LEN_MAX is missing/inconsistent in system headers" >&5 echo "$as_me: WARNING: MB_LEN_MAX is missing/inconsistent in system headers" >&2;} fi -echo "$as_me:23713: checking for va_copy" >&5 +echo "$as_me:23707: checking for va_copy" >&5 echo $ECHO_N "checking for va_copy... $ECHO_C" >&6 if test "${cf_cv_have_va_copy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23720 "configure" +#line 23714 "configure" #include "confdefs.h" #include <stdarg.h> @@ -23734,16 +23728,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23737: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23731: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23740: \$? = $ac_status" >&5 + echo "$as_me:23734: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23743: \"$ac_try\"") >&5 + { (eval echo "$as_me:23737: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23746: \$? = $ac_status" >&5 + echo "$as_me:23740: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have_va_copy=yes else @@ -23753,7 +23747,7 @@ cf_cv_have_va_copy=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23756: result: $cf_cv_have_va_copy" >&5 +echo "$as_me:23750: result: $cf_cv_have_va_copy" >&5 echo "${ECHO_T}$cf_cv_have_va_copy" >&6 if test "$cf_cv_have_va_copy" = yes; @@ -23765,14 +23759,14 @@ EOF else # !cf_cv_have_va_copy -echo "$as_me:23768: checking for __va_copy" >&5 +echo "$as_me:23762: checking for __va_copy" >&5 echo $ECHO_N "checking for __va_copy... $ECHO_C" >&6 if test "${cf_cv_have___va_copy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23775 "configure" +#line 23769 "configure" #include "confdefs.h" #include <stdarg.h> @@ -23789,16 +23783,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23792: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23786: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23795: \$? = $ac_status" >&5 + echo "$as_me:23789: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23798: \"$ac_try\"") >&5 + { (eval echo "$as_me:23792: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23801: \$? = $ac_status" >&5 + echo "$as_me:23795: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have___va_copy=yes else @@ -23808,7 +23802,7 @@ cf_cv_have___va_copy=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23811: result: $cf_cv_have___va_copy" >&5 +echo "$as_me:23805: result: $cf_cv_have___va_copy" >&5 echo "${ECHO_T}$cf_cv_have___va_copy" >&6 if test "$cf_cv_have___va_copy" = yes @@ -23820,14 +23814,14 @@ EOF else # !cf_cv_have___va_copy -echo "$as_me:23823: checking for __builtin_va_copy" >&5 +echo "$as_me:23817: checking for __builtin_va_copy" >&5 echo $ECHO_N "checking for __builtin_va_copy... $ECHO_C" >&6 if test "${cf_cv_have___builtin_va_copy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23830 "configure" +#line 23824 "configure" #include "confdefs.h" #include <stdarg.h> @@ -23844,16 +23838,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23847: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23841: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23850: \$? = $ac_status" >&5 + echo "$as_me:23844: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23853: \"$ac_try\"") >&5 + { (eval echo "$as_me:23847: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23856: \$? = $ac_status" >&5 + echo "$as_me:23850: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_have___builtin_va_copy=yes else @@ -23863,7 +23857,7 @@ cf_cv_have___builtin_va_copy=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23866: result: $cf_cv_have___builtin_va_copy" >&5 +echo "$as_me:23860: result: $cf_cv_have___builtin_va_copy" >&5 echo "${ECHO_T}$cf_cv_have___builtin_va_copy" >&6 test "$cf_cv_have___builtin_va_copy" = yes && @@ -23881,14 +23875,14 @@ case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy ;; (*) - echo "$as_me:23884: checking if we can simply copy va_list" >&5 + echo "$as_me:23878: checking if we can simply copy va_list" >&5 echo $ECHO_N "checking if we can simply copy va_list... $ECHO_C" >&6 if test "${cf_cv_pointer_va_list+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23891 "configure" +#line 23885 "configure" #include "confdefs.h" #include <stdarg.h> @@ -23905,16 +23899,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23908: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23902: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23911: \$? = $ac_status" >&5 + echo "$as_me:23905: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23914: \"$ac_try\"") >&5 + { (eval echo "$as_me:23908: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23917: \$? = $ac_status" >&5 + echo "$as_me:23911: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_pointer_va_list=yes else @@ -23924,19 +23918,19 @@ cf_cv_pointer_va_list=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23927: result: $cf_cv_pointer_va_list" >&5 +echo "$as_me:23921: result: $cf_cv_pointer_va_list" >&5 echo "${ECHO_T}$cf_cv_pointer_va_list" >&6 if test "$cf_cv_pointer_va_list" = no then - echo "$as_me:23932: checking if we can copy va_list indirectly" >&5 + echo "$as_me:23926: checking if we can copy va_list indirectly" >&5 echo $ECHO_N "checking if we can copy va_list indirectly... $ECHO_C" >&6 if test "${cf_cv_array_va_list+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23939 "configure" +#line 23933 "configure" #include "confdefs.h" #include <stdarg.h> @@ -23953,16 +23947,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:23956: \"$ac_link\"") >&5 +if { (eval echo "$as_me:23950: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:23959: \$? = $ac_status" >&5 + echo "$as_me:23953: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:23962: \"$ac_try\"") >&5 + { (eval echo "$as_me:23956: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:23965: \$? = $ac_status" >&5 + echo "$as_me:23959: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_array_va_list=yes else @@ -23972,7 +23966,7 @@ cf_cv_array_va_list=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:23975: result: $cf_cv_array_va_list" >&5 +echo "$as_me:23969: result: $cf_cv_array_va_list" >&5 echo "${ECHO_T}$cf_cv_array_va_list" >&6 test "$cf_cv_array_va_list" = yes && cat >>confdefs.h <<\EOF @@ -23983,13 +23977,13 @@ EOF ;; esac -echo "$as_me:23986: checking for pid_t" >&5 +echo "$as_me:23980: checking for pid_t" >&5 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 23992 "configure" +#line 23986 "configure" #include "confdefs.h" $ac_includes_default int @@ -24004,16 +23998,16 @@ if (sizeof (pid_t)) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:24007: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:24001: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:24010: \$? = $ac_status" >&5 + echo "$as_me:24004: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:24013: \"$ac_try\"") >&5 + { (eval echo "$as_me:24007: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24016: \$? = $ac_status" >&5 + echo "$as_me:24010: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_type_pid_t=yes else @@ -24023,7 +24017,7 @@ ac_cv_type_pid_t=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:24026: result: $ac_cv_type_pid_t" >&5 +echo "$as_me:24020: result: $ac_cv_type_pid_t" >&5 echo "${ECHO_T}$ac_cv_type_pid_t" >&6 if test "$ac_cv_type_pid_t" = yes; then : @@ -24038,23 +24032,23 @@ fi for ac_header in unistd.h vfork.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:24041: checking for $ac_header" >&5 +echo "$as_me:24035: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 24047 "configure" +#line 24041 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:24051: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:24045: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:24057: \$? = $ac_status" >&5 + echo "$as_me:24051: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -24073,7 +24067,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:24076: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:24070: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -24086,13 +24080,13 @@ done for ac_func in fork vfork do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:24089: checking for $ac_func" >&5 +echo "$as_me:24083: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 24095 "configure" +#line 24089 "configure" #include "confdefs.h" #define $ac_func autoconf_temporary #include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ @@ -24123,16 +24117,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:24126: \"$ac_link\"") >&5 +if { (eval echo "$as_me:24120: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:24129: \$? = $ac_status" >&5 + echo "$as_me:24123: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:24132: \"$ac_try\"") >&5 + { (eval echo "$as_me:24126: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24135: \$? = $ac_status" >&5 + echo "$as_me:24129: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then eval "$as_ac_var=yes" else @@ -24142,7 +24136,7 @@ eval "$as_ac_var=no" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi -echo "$as_me:24145: result: `eval echo '${'"$as_ac_var"'}'`" >&5 +echo "$as_me:24139: result: `eval echo '${'"$as_ac_var"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -24154,7 +24148,7 @@ done ac_cv_func_fork_works=$ac_cv_func_fork if test "x$ac_cv_func_fork" = xyes; then - echo "$as_me:24157: checking for working fork" >&5 + echo "$as_me:24151: checking for working fork" >&5 echo $ECHO_N "checking for working fork... $ECHO_C" >&6 if test "${ac_cv_func_fork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -24177,15 +24171,15 @@ else } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:24180: \"$ac_link\"") >&5 +if { (eval echo "$as_me:24174: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:24183: \$? = $ac_status" >&5 + echo "$as_me:24177: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:24185: \"$ac_try\"") >&5 + { (eval echo "$as_me:24179: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24188: \$? = $ac_status" >&5 + echo "$as_me:24182: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_fork_works=yes else @@ -24197,7 +24191,7 @@ fi rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" fi fi -echo "$as_me:24200: result: $ac_cv_func_fork_works" >&5 +echo "$as_me:24194: result: $ac_cv_func_fork_works" >&5 echo "${ECHO_T}$ac_cv_func_fork_works" >&6 fi @@ -24211,12 +24205,12 @@ if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_fork_works=yes ;; esac - { echo "$as_me:24214: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5 + { echo "$as_me:24208: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5 echo "$as_me: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then - echo "$as_me:24219: checking for working vfork" >&5 + echo "$as_me:24213: checking for working vfork" >&5 echo $ECHO_N "checking for working vfork... $ECHO_C" >&6 if test "${ac_cv_func_vfork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -24225,7 +24219,7 @@ else ac_cv_func_vfork_works=cross else cat >"conftest.$ac_ext" <<_ACEOF -#line 24228 "configure" +#line 24222 "configure" #include "confdefs.h" /* Thanks to Paul Eggert for this test. */ #include <stdio.h> @@ -24318,15 +24312,15 @@ main (void) } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:24321: \"$ac_link\"") >&5 +if { (eval echo "$as_me:24315: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:24324: \$? = $ac_status" >&5 + echo "$as_me:24318: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:24326: \"$ac_try\"") >&5 + { (eval echo "$as_me:24320: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24329: \$? = $ac_status" >&5 + echo "$as_me:24323: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_func_vfork_works=yes else @@ -24338,13 +24332,13 @@ fi rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" fi fi -echo "$as_me:24341: result: $ac_cv_func_vfork_works" >&5 +echo "$as_me:24335: result: $ac_cv_func_vfork_works" >&5 echo "${ECHO_T}$ac_cv_func_vfork_works" >&6 fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=ac_cv_func_vfork - { echo "$as_me:24347: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5 + { echo "$as_me:24341: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5 echo "$as_me: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&2;} fi @@ -24369,7 +24363,7 @@ EOF fi -echo "$as_me:24372: checking if fopen accepts explicit binary mode" >&5 +echo "$as_me:24366: checking if fopen accepts explicit binary mode" >&5 echo $ECHO_N "checking if fopen accepts explicit binary mode... $ECHO_C" >&6 if test "${cf_cv_fopen_bin_r+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -24379,7 +24373,7 @@ else cf_cv_fopen_bin_r=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 24382 "configure" +#line 24376 "configure" #include "confdefs.h" $ac_includes_default @@ -24388,14 +24382,14 @@ int main(void) { FILE *fp = fopen("conftest.tmp", "wb"); int rc = 0; - if (fp != 0) { + if (fp != NULL) { int p, q; for (p = 0; p < 256; ++p) { fputc(p, fp); } fclose(fp); fp = fopen("conftest.tmp", "rb"); - if (fp != 0) { + if (fp != NULL) { for (p = 0; p < 256; ++p) { q = fgetc(fp); if (q != p) { @@ -24414,15 +24408,15 @@ int main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:24417: \"$ac_link\"") >&5 +if { (eval echo "$as_me:24411: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:24420: \$? = $ac_status" >&5 + echo "$as_me:24414: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:24422: \"$ac_try\"") >&5 + { (eval echo "$as_me:24416: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24425: \$? = $ac_status" >&5 + echo "$as_me:24419: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_fopen_bin_r=yes else @@ -24435,16 +24429,228 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes fi fi -echo "$as_me:24438: result: $cf_cv_fopen_bin_r" >&5 +echo "$as_me:24432: result: $cf_cv_fopen_bin_r" >&5 echo "${ECHO_T}$cf_cv_fopen_bin_r" >&6 test "x$cf_cv_fopen_bin_r" != xno && cat >>confdefs.h <<\EOF #define USE_FOPEN_BIN_R 1 EOF + echo "$as_me:24439: checking for cc_t" >&5 +echo $ECHO_N "checking for cc_t... $ECHO_C" >&6 +if test "${ac_cv_type_cc_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 24445 "configure" +#include "confdefs.h" + +$ac_includes_default +#include <termios.h> + +int +main (void) +{ +if ((cc_t *) 0) + return 0; +if (sizeof (cc_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24463: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24466: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24469: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24472: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_cc_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_cc_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:24482: result: $ac_cv_type_cc_t" >&5 +echo "${ECHO_T}$ac_cv_type_cc_t" >&6 +if test "$ac_cv_type_cc_t" = yes; then + +cat >>confdefs.h <<EOF +#define HAVE_CC_T 1 +EOF + +fi + + echo "$as_me:24492: checking for speed_t" >&5 +echo $ECHO_N "checking for speed_t... $ECHO_C" >&6 +if test "${ac_cv_type_speed_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 24498 "configure" +#include "confdefs.h" + +$ac_includes_default +#include <termios.h> + +int +main (void) +{ +if ((speed_t *) 0) + return 0; +if (sizeof (speed_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24516: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24519: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24522: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24525: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_speed_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_speed_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:24535: result: $ac_cv_type_speed_t" >&5 +echo "${ECHO_T}$ac_cv_type_speed_t" >&6 +if test "$ac_cv_type_speed_t" = yes; then + +cat >>confdefs.h <<EOF +#define HAVE_SPEED_T 1 +EOF + +fi + + echo "$as_me:24545: checking for tcflag_t" >&5 +echo $ECHO_N "checking for tcflag_t... $ECHO_C" >&6 +if test "${ac_cv_type_tcflag_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 24551 "configure" +#include "confdefs.h" + +$ac_includes_default +#include <termios.h> + +int +main (void) +{ +if ((tcflag_t *) 0) + return 0; +if (sizeof (tcflag_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24569: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24572: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24575: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24578: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_tcflag_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_tcflag_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:24588: result: $ac_cv_type_tcflag_t" >&5 +echo "${ECHO_T}$ac_cv_type_tcflag_t" >&6 +if test "$ac_cv_type_tcflag_t" = yes; then + +cat >>confdefs.h <<EOF +#define HAVE_TCFLAG_T 1 +EOF + +fi + + echo "$as_me:24598: checking for sigset_t" >&5 +echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 +if test "${ac_cv_type_sigset_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 24604 "configure" +#include "confdefs.h" + +$ac_includes_default +#include <signal.h> + +int +main (void) +{ +if ((sigset_t *) 0) + return 0; +if (sizeof (sigset_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24622: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24625: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24628: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24631: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_sigset_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_sigset_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:24641: result: $ac_cv_type_sigset_t" >&5 +echo "${ECHO_T}$ac_cv_type_sigset_t" >&6 +if test "$ac_cv_type_sigset_t" = yes; then + +cat >>confdefs.h <<EOF +#define HAVE_SIGSET_T 1 +EOF + +fi + # special check for test/ditto.c -echo "$as_me:24447: checking for openpty in -lutil" >&5 +echo "$as_me:24653: checking for openpty in -lutil" >&5 echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6 if test "${ac_cv_lib_util_openpty+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -24452,7 +24658,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 24455 "configure" +#line 24661 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -24471,16 +24677,16 @@ openpty (); } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:24474: \"$ac_link\"") >&5 +if { (eval echo "$as_me:24680: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:24477: \$? = $ac_status" >&5 + echo "$as_me:24683: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:24480: \"$ac_try\"") >&5 + { (eval echo "$as_me:24686: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24483: \$? = $ac_status" >&5 + echo "$as_me:24689: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_lib_util_openpty=yes else @@ -24491,7 +24697,7 @@ fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:24494: result: $ac_cv_lib_util_openpty" >&5 +echo "$as_me:24700: result: $ac_cv_lib_util_openpty" >&5 echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6 if test "$ac_cv_lib_util_openpty" = yes; then cf_cv_lib_util=yes @@ -24499,7 +24705,7 @@ else cf_cv_lib_util=no fi -echo "$as_me:24502: checking for openpty header" >&5 +echo "$as_me:24708: checking for openpty header" >&5 echo $ECHO_N "checking for openpty header... $ECHO_C" >&6 if test "${cf_cv_func_openpty+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -24526,7 +24732,7 @@ LIBS="$cf_add_libs" for cf_header in pty.h libutil.h util.h do cat >"conftest.$ac_ext" <<_ACEOF -#line 24529 "configure" +#line 24735 "configure" #include "confdefs.h" #include <$cf_header> @@ -24544,16 +24750,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:24547: \"$ac_link\"") >&5 +if { (eval echo "$as_me:24753: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:24550: \$? = $ac_status" >&5 + echo "$as_me:24756: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:24553: \"$ac_try\"") >&5 + { (eval echo "$as_me:24759: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24556: \$? = $ac_status" >&5 + echo "$as_me:24762: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_func_openpty=$cf_header @@ -24571,7 +24777,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS="$cf_save_LIBS" fi -echo "$as_me:24574: result: $cf_cv_func_openpty" >&5 +echo "$as_me:24780: result: $cf_cv_func_openpty" >&5 echo "${ECHO_T}$cf_cv_func_openpty" >&6 if test "$cf_cv_func_openpty" != no ; then @@ -24644,7 +24850,7 @@ if test -n "$with_hashed_db/include" ; then CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" cat >"conftest.$ac_ext" <<_ACEOF -#line 24647 "configure" +#line 24853 "configure" #include "confdefs.h" #include <stdio.h> int @@ -24656,16 +24862,16 @@ printf("Hello") } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:24659: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:24865: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:24662: \$? = $ac_status" >&5 + echo "$as_me:24868: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:24665: \"$ac_try\"") >&5 + { (eval echo "$as_me:24871: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24668: \$? = $ac_status" >&5 + echo "$as_me:24874: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -24682,7 +24888,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" if test "$cf_have_incdir" = no ; then test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 -echo "${as_me:-configure}:24685: testing adding $cf_add_incdir to include-path ..." 1>&5 +echo "${as_me:-configure}:24891: testing adding $cf_add_incdir to include-path ..." 1>&5 CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" @@ -24718,7 +24924,7 @@ if test -n "$with_hashed_db/lib" ; then if test "$cf_have_libdir" = no ; then test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 -echo "${as_me:-configure}:24721: testing adding $cf_add_libdir to library-path ..." 1>&5 +echo "${as_me:-configure}:24927: testing adding $cf_add_libdir to library-path ..." 1>&5 LDFLAGS="-L$cf_add_libdir $LDFLAGS" fi @@ -24729,7 +24935,7 @@ fi else case "$with_hashed_db" in (./*|../*|/*) - { echo "$as_me:24732: WARNING: no such directory $with_hashed_db" >&5 + { echo "$as_me:24938: WARNING: no such directory $with_hashed_db" >&5 echo "$as_me: WARNING: no such directory $with_hashed_db" >&2;} ;; (*) @@ -24801,7 +25007,7 @@ if test -n "$cf_item" ; then CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" cat >"conftest.$ac_ext" <<_ACEOF -#line 24804 "configure" +#line 25010 "configure" #include "confdefs.h" #include <stdio.h> int @@ -24813,16 +25019,16 @@ printf("Hello") } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:24816: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:25022: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:24819: \$? = $ac_status" >&5 + echo "$as_me:25025: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:24822: \"$ac_try\"") >&5 + { (eval echo "$as_me:25028: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:24825: \$? = $ac_status" >&5 + echo "$as_me:25031: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then : else @@ -24839,7 +25045,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" if test "$cf_have_incdir" = no ; then test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 -echo "${as_me:-configure}:24842: testing adding $cf_add_incdir to include-path ..." 1>&5 +echo "${as_me:-configure}:25048: testing adding $cf_add_incdir to include-path ..." 1>&5 CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" @@ -24919,7 +25125,7 @@ if test -n "$cf_item" ; then if test "$cf_have_libdir" = no ; then test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 -echo "${as_me:-configure}:24922: testing adding $cf_add_libdir to library-path ..." 1>&5 +echo "${as_me:-configure}:25128: testing adding $cf_add_libdir to library-path ..." 1>&5 LDFLAGS="-L$cf_add_libdir $LDFLAGS" fi @@ -24936,23 +25142,23 @@ fi fi esac -echo "$as_me:24939: checking for db.h" >&5 +echo "$as_me:25145: checking for db.h" >&5 echo $ECHO_N "checking for db.h... $ECHO_C" >&6 if test "${ac_cv_header_db_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 24945 "configure" +#line 25151 "configure" #include "confdefs.h" #include <db.h> _ACEOF -if { (eval echo "$as_me:24949: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:25155: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:24955: \$? = $ac_status" >&5 + echo "$as_me:25161: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -24971,11 +25177,11 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:24974: result: $ac_cv_header_db_h" >&5 +echo "$as_me:25180: result: $ac_cv_header_db_h" >&5 echo "${ECHO_T}$ac_cv_header_db_h" >&6 if test "$ac_cv_header_db_h" = yes; then -echo "$as_me:24978: checking for version of db" >&5 +echo "$as_me:25184: checking for version of db" >&5 echo $ECHO_N "checking for version of db... $ECHO_C" >&6 if test "${cf_cv_hashed_db_version+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -24986,10 +25192,10 @@ cf_cv_hashed_db_version=unknown for cf_db_version in 1 2 3 4 5 6 do -echo "${as_me:-configure}:24989: testing checking for db version $cf_db_version ..." 1>&5 +echo "${as_me:-configure}:25195: testing checking for db version $cf_db_version ..." 1>&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 24992 "configure" +#line 25198 "configure" #include "confdefs.h" $ac_includes_default @@ -25019,16 +25225,16 @@ DBT *foo = 0 } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:25022: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:25228: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:25025: \$? = $ac_status" >&5 + echo "$as_me:25231: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:25028: \"$ac_try\"") >&5 + { (eval echo "$as_me:25234: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25031: \$? = $ac_status" >&5 + echo "$as_me:25237: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_hashed_db_version=$cf_db_version @@ -25042,16 +25248,16 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" done fi -echo "$as_me:25045: result: $cf_cv_hashed_db_version" >&5 +echo "$as_me:25251: result: $cf_cv_hashed_db_version" >&5 echo "${ECHO_T}$cf_cv_hashed_db_version" >&6 if test "$cf_cv_hashed_db_version" = unknown ; then - { { echo "$as_me:25049: error: Cannot determine version of db" >&5 + { { echo "$as_me:25255: error: Cannot determine version of db" >&5 echo "$as_me: error: Cannot determine version of db" >&2;} { (exit 1); exit 1; }; } else -echo "$as_me:25054: checking for db libraries" >&5 +echo "$as_me:25260: checking for db libraries" >&5 echo $ECHO_N "checking for db libraries... $ECHO_C" >&6 if test "${cf_cv_hashed_db_libs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -25081,10 +25287,10 @@ LIBS="$cf_add_libs" fi -echo "${as_me:-configure}:25084: testing checking for library $cf_db_libs ..." 1>&5 +echo "${as_me:-configure}:25290: testing checking for library $cf_db_libs ..." 1>&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 25087 "configure" +#line 25293 "configure" #include "confdefs.h" $ac_includes_default @@ -25097,7 +25303,7 @@ main (void) char *path = "/tmp/foo"; #ifdef DB_VERSION_MAJOR #if DB_VERSION_MAJOR >= 4 - DB *result = 0; + DB *result = NULL; db_create(&result, NULL, 0); result->open(result, NULL, @@ -25107,7 +25313,7 @@ main (void) DB_CREATE, 0644); #elif DB_VERSION_MAJOR >= 3 - DB *result = 0; + DB *result = NULL; db_create(&result, NULL, 0); result->open(result, path, @@ -25116,7 +25322,7 @@ main (void) DB_CREATE, 0644); #elif DB_VERSION_MAJOR >= 2 - DB *result = 0; + DB *result = NULL; db_open(path, DB_HASH, DB_CREATE, @@ -25132,23 +25338,23 @@ main (void) DB_HASH, 0); #endif - ${cf_cv_main_return:-return}(result != 0) + ${cf_cv_main_return:-return}(result != NULL) ; return 0; } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:25142: \"$ac_link\"") >&5 +if { (eval echo "$as_me:25348: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:25145: \$? = $ac_status" >&5 + echo "$as_me:25351: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:25148: \"$ac_try\"") >&5 + { (eval echo "$as_me:25354: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25151: \$? = $ac_status" >&5 + echo "$as_me:25357: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then if test -n "$cf_db_libs" ; then @@ -25168,11 +25374,11 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" done fi -echo "$as_me:25171: result: $cf_cv_hashed_db_libs" >&5 +echo "$as_me:25377: result: $cf_cv_hashed_db_libs" >&5 echo "${ECHO_T}$cf_cv_hashed_db_libs" >&6 if test "$cf_cv_hashed_db_libs" = unknown ; then - { { echo "$as_me:25175: error: Cannot determine library for db" >&5 + { { echo "$as_me:25381: error: Cannot determine library for db" >&5 echo "$as_me: error: Cannot determine library for db" >&2;} { (exit 1); exit 1; }; } elif test "$cf_cv_hashed_db_libs" != default ; then @@ -25198,7 +25404,7 @@ fi else - { { echo "$as_me:25201: error: Cannot find db.h" >&5 + { { echo "$as_me:25407: error: Cannot find db.h" >&5 echo "$as_me: error: Cannot find db.h" >&2;} { (exit 1); exit 1; }; } @@ -25213,17 +25419,19 @@ fi # Just in case, check if the C compiler has a bool type. -echo "$as_me:25216: checking if we should include stdbool.h" >&5 -echo $ECHO_N "checking if we should include stdbool.h... $ECHO_C" >&6 - +echo "$as_me:25422: checking if we can include stdbool.h" >&5 +echo $ECHO_N "checking if we can include stdbool.h... $ECHO_C" >&6 if test "${cf_cv_header_stdbool_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 25224 "configure" +#line 25429 "configure" #include "confdefs.h" +$ac_includes_default +#include <stdbool.h> + int main (void) { @@ -25233,29 +25441,25 @@ bool foo = false; (void)foo } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:25236: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:25444: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:25239: \$? = $ac_status" >&5 + echo "$as_me:25447: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:25242: \"$ac_try\"") >&5 + { (eval echo "$as_me:25450: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25245: \$? = $ac_status" >&5 + echo "$as_me:25453: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then - cf_cv_header_stdbool_h=0 + cf_cv_header_stdbool_h=yes else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 25252 "configure" +#line 25460 "configure" #include "confdefs.h" -#ifndef __BEOS__ -#include <stdbool.h> -#endif - int main (void) { @@ -25265,48 +25469,45 @@ bool foo = false; (void)foo } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:25268: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:25472: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:25271: \$? = $ac_status" >&5 + echo "$as_me:25475: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:25274: \"$ac_try\"") >&5 + { (eval echo "$as_me:25478: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25277: \$? = $ac_status" >&5 + echo "$as_me:25481: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then - cf_cv_header_stdbool_h=1 + cf_cv_header_stdbool_h=no else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 -cf_cv_header_stdbool_h=0 fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi +echo "$as_me:25492: result: $cf_cv_header_stdbool_h" >&5 +echo "${ECHO_T}$cf_cv_header_stdbool_h" >&6 -if test "$cf_cv_header_stdbool_h" = 1 -then echo "$as_me:25291: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:25293: result: no" >&5 -echo "${ECHO_T}no" >&6 +if test "$cf_cv_header_stdbool_h" = yes +then USE_STDBOOL_H=1 +else USE_STDBOOL_H=0 fi -echo "$as_me:25297: checking for builtin bool type" >&5 +echo "$as_me:25500: checking for builtin bool type" >&5 echo $ECHO_N "checking for builtin bool type... $ECHO_C" >&6 - if test "${cf_cv_cc_bool_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 25305 "configure" +#line 25507 "configure" #include "confdefs.h" -#include <stdio.h> -#include <sys/types.h> +$ac_includes_default int main (void) @@ -25317,34 +25518,39 @@ bool x = false; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:25320: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:25521: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:25323: \$? = $ac_status" >&5 + echo "$as_me:25524: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:25326: \"$ac_try\"") >&5 + { (eval echo "$as_me:25527: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25329: \$? = $ac_status" >&5 + echo "$as_me:25530: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then - cf_cv_cc_bool_type=1 + cf_cv_cc_bool_type=yes else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 -cf_cv_cc_bool_type=0 +cf_cv_cc_bool_type=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" - fi +echo "$as_me:25540: result: $cf_cv_cc_bool_type" >&5 +echo "${ECHO_T}$cf_cv_cc_bool_type" >&6 -if test "$cf_cv_cc_bool_type" = 1 -then echo "$as_me:25342: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:25344: result: no" >&5 -echo "${ECHO_T}no" >&6 +if test "$cf_cv_cc_bool_type" = yes; then + USE_BUILTIN_BOOL=1 +else + USE_BUILTIN_BOOL=0 fi +test "$cf_cv_header_stdbool_h" = yes && +cat >>confdefs.h <<\EOF +#define USE_STDBOOL_H 1 +EOF + # Check for C++ compiler characteristics (and ensure that it's there!) if test -n "$CXX" ; then ac_ext=cc @@ -25358,10 +25564,10 @@ if test -n "$GXX" ; then cf_save="$LIBS" LIBS="$LIBS $CXXLIBS" - echo "$as_me:25361: checking if we already have C++ library" >&5 + echo "$as_me:25567: checking if we already have C++ library" >&5 echo $ECHO_N "checking if we already have C++ library... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 25364 "configure" +#line 25570 "configure" #include "confdefs.h" #include <iostream> @@ -25375,16 +25581,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:25378: \"$ac_link\"") >&5 +if { (eval echo "$as_me:25584: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:25381: \$? = $ac_status" >&5 + echo "$as_me:25587: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:25384: \"$ac_try\"") >&5 + { (eval echo "$as_me:25590: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25387: \$? = $ac_status" >&5 + echo "$as_me:25593: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_have_libstdcpp=yes else @@ -25393,7 +25599,7 @@ cat "conftest.$ac_ext" >&5 cf_have_libstdcpp=no fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" - echo "$as_me:25396: result: $cf_have_libstdcpp" >&5 + echo "$as_me:25602: result: $cf_have_libstdcpp" >&5 echo "${ECHO_T}$cf_have_libstdcpp" >&6 LIBS="$cf_save" @@ -25412,7 +25618,7 @@ echo "${ECHO_T}$cf_have_libstdcpp" >&6 ;; esac - echo "$as_me:25415: checking for library $cf_stdcpp_libname" >&5 + echo "$as_me:25621: checking for library $cf_stdcpp_libname" >&5 echo $ECHO_N "checking for library $cf_stdcpp_libname... $ECHO_C" >&6 if test "${cf_cv_libstdcpp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -25438,7 +25644,7 @@ done LIBS="$cf_add_libs" cat >"conftest.$ac_ext" <<_ACEOF -#line 25441 "configure" +#line 25647 "configure" #include "confdefs.h" #include <iostream> @@ -25452,16 +25658,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:25455: \"$ac_link\"") >&5 +if { (eval echo "$as_me:25661: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:25458: \$? = $ac_status" >&5 + echo "$as_me:25664: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:25461: \"$ac_try\"") >&5 + { (eval echo "$as_me:25667: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25464: \$? = $ac_status" >&5 + echo "$as_me:25670: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_libstdcpp=yes else @@ -25473,7 +25679,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS="$cf_save" fi -echo "$as_me:25476: result: $cf_cv_libstdcpp" >&5 +echo "$as_me:25682: result: $cf_cv_libstdcpp" >&5 echo "${ECHO_T}$cf_cv_libstdcpp" >&6 test "$cf_cv_libstdcpp" = yes && { cf_add_libs="$CXXLIBS" @@ -25495,7 +25701,7 @@ CXXLIBS="$cf_add_libs" fi fi - echo "$as_me:25498: checking whether $CXX understands -c and -o together" >&5 + echo "$as_me:25704: checking whether $CXX understands -c and -o together" >&5 echo $ECHO_N "checking whether $CXX understands -c and -o together... $ECHO_C" >&6 if test "${cf_cv_prog_CXX_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -25510,15 +25716,15 @@ CF_EOF # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CXX $CXXFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -if { (eval echo "$as_me:25513: \"$ac_try\"") >&5 +if { (eval echo "$as_me:25719: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25516: \$? = $ac_status" >&5 + echo "$as_me:25722: \$? = $ac_status" >&5 (exit "$ac_status"); } && - test -f conftest2.$ac_objext && { (eval echo "$as_me:25518: \"$ac_try\"") >&5 + test -f conftest2.$ac_objext && { (eval echo "$as_me:25724: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25521: \$? = $ac_status" >&5 + echo "$as_me:25727: \$? = $ac_status" >&5 (exit "$ac_status"); }; then eval cf_cv_prog_CXX_c_o=yes @@ -25529,10 +25735,10 @@ rm -rf ./conftest* fi if test "$cf_cv_prog_CXX_c_o" = yes; then - echo "$as_me:25532: result: yes" >&5 + echo "$as_me:25738: result: yes" >&5 echo "${ECHO_T}yes" >&6 else - echo "$as_me:25535: result: no" >&5 + echo "$as_me:25741: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -25552,7 +25758,7 @@ case "$cf_cv_system_name" in ;; esac if test "$GXX" = yes; then - echo "$as_me:25555: checking for lib$cf_gpp_libname" >&5 + echo "$as_me:25761: checking for lib$cf_gpp_libname" >&5 echo $ECHO_N "checking for lib$cf_gpp_libname... $ECHO_C" >&6 cf_save="$LIBS" @@ -25573,7 +25779,7 @@ done LIBS="$cf_add_libs" cat >"conftest.$ac_ext" <<_ACEOF -#line 25576 "configure" +#line 25782 "configure" #include "confdefs.h" #include <$cf_gpp_libname/builtin.h> @@ -25587,16 +25793,16 @@ two_arg_error_handler_t foo2 = lib_error_handler } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:25590: \"$ac_link\"") >&5 +if { (eval echo "$as_me:25796: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:25593: \$? = $ac_status" >&5 + echo "$as_me:25799: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:25596: \"$ac_try\"") >&5 + { (eval echo "$as_me:25802: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25599: \$? = $ac_status" >&5 + echo "$as_me:25805: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cxx_library=yes @@ -25633,7 +25839,7 @@ else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 cat >"conftest.$ac_ext" <<_ACEOF -#line 25636 "configure" +#line 25842 "configure" #include "confdefs.h" #include <builtin.h> @@ -25647,16 +25853,16 @@ two_arg_error_handler_t foo2 = lib_error_handler } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:25650: \"$ac_link\"") >&5 +if { (eval echo "$as_me:25856: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:25653: \$? = $ac_status" >&5 + echo "$as_me:25859: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:25656: \"$ac_try\"") >&5 + { (eval echo "$as_me:25862: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:25659: \$? = $ac_status" >&5 + echo "$as_me:25865: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cxx_library=yes @@ -25689,7 +25895,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" fi rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" LIBS="$cf_save" - echo "$as_me:25692: result: $cf_cxx_library" >&5 + echo "$as_me:25898: result: $cf_cxx_library" >&5 echo "${ECHO_T}$cf_cxx_library" >&6 fi @@ -25705,7 +25911,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS "conftest.$ac_ext" >&5' ac_link='$CXX -o "conftest$ac_exeext" $CXXFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ext" $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" -echo "$as_me:25708: checking how to run the C++ preprocessor" >&5 +echo "$as_me:25914: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then @@ -25722,18 +25928,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >"conftest.$ac_ext" <<_ACEOF -#line 25725 "configure" +#line 25931 "configure" #include "confdefs.h" #include <assert.h> Syntax error _ACEOF -if { (eval echo "$as_me:25730: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:25936: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:25736: \$? = $ac_status" >&5 + echo "$as_me:25942: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag @@ -25756,17 +25962,17 @@ rm -f conftest.err "conftest.$ac_ext" # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >"conftest.$ac_ext" <<_ACEOF -#line 25759 "configure" +#line 25965 "configure" #include "confdefs.h" #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:25763: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:25969: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:25769: \$? = $ac_status" >&5 + echo "$as_me:25975: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag @@ -25803,7 +26009,7 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -echo "$as_me:25806: result: $CXXCPP" >&5 +echo "$as_me:26012: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes @@ -25813,18 +26019,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >"conftest.$ac_ext" <<_ACEOF -#line 25816 "configure" +#line 26022 "configure" #include "confdefs.h" #include <assert.h> Syntax error _ACEOF -if { (eval echo "$as_me:25821: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:26027: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:25827: \$? = $ac_status" >&5 + echo "$as_me:26033: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag @@ -25847,17 +26053,17 @@ rm -f conftest.err "conftest.$ac_ext" # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >"conftest.$ac_ext" <<_ACEOF -#line 25850 "configure" +#line 26056 "configure" #include "confdefs.h" #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:25854: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:26060: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:25860: \$? = $ac_status" >&5 + echo "$as_me:26066: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag @@ -25885,7 +26091,7 @@ rm -f conftest.err "conftest.$ac_ext" if $ac_preproc_ok; then : else - { { echo "$as_me:25888: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5 + { { echo "$as_me:26094: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi @@ -25897,26 +26103,26 @@ ac_link='$CXX -o "conftest$ac_exeext" $CXXFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" -for ac_header in typeinfo +for ac_header in new exception typeinfo do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:25903: checking for $ac_header" >&5 +echo "$as_me:26109: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 25909 "configure" +#line 26115 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:25913: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:26119: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:25919: \$? = $ac_status" >&5 + echo "$as_me:26125: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag @@ -25935,7 +26141,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:25938: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:26144: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -25948,23 +26154,23 @@ done for ac_header in iostream do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:25951: checking for $ac_header" >&5 +echo "$as_me:26157: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 25957 "configure" +#line 26163 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:25961: \"$ac_cpp "conftest.$ac_ext"\"") >&5 +if { (eval echo "$as_me:26167: \"$ac_cpp "conftest.$ac_ext"\"") >&5 (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1 ac_status=$? $EGREP -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:25967: \$? = $ac_status" >&5 + echo "$as_me:26173: \$? = $ac_status" >&5 (exit "$ac_status"); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag @@ -25983,7 +26189,7 @@ else fi rm -f conftest.err "conftest.$ac_ext" fi -echo "$as_me:25986: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 +echo "$as_me:26192: result: `eval echo '${'"$as_ac_Header"'}'`" >&5 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then cat >>confdefs.h <<EOF @@ -25994,10 +26200,10 @@ fi done if test x"$ac_cv_header_iostream" = xyes ; then - echo "$as_me:25997: checking if iostream uses std-namespace" >&5 + echo "$as_me:26203: checking if iostream uses std-namespace" >&5 echo $ECHO_N "checking if iostream uses std-namespace... $ECHO_C" >&6 cat >"conftest.$ac_ext" <<_ACEOF -#line 26000 "configure" +#line 26206 "configure" #include "confdefs.h" #include <iostream> @@ -26014,16 +26220,16 @@ cerr << "testing" << endl; } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26017: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26223: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26020: \$? = $ac_status" >&5 + echo "$as_me:26226: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26023: \"$ac_try\"") >&5 + { (eval echo "$as_me:26229: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26026: \$? = $ac_status" >&5 + echo "$as_me:26232: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_iostream_namespace=yes else @@ -26032,7 +26238,7 @@ cat "conftest.$ac_ext" >&5 cf_iostream_namespace=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" - echo "$as_me:26035: result: $cf_iostream_namespace" >&5 + echo "$as_me:26241: result: $cf_iostream_namespace" >&5 echo "${ECHO_T}$cf_iostream_namespace" >&6 if test "$cf_iostream_namespace" = yes ; then @@ -26043,100 +26249,17 @@ EOF fi fi -echo "$as_me:26046: checking if we should include stdbool.h" >&5 -echo $ECHO_N "checking if we should include stdbool.h... $ECHO_C" >&6 - -if test "${cf_cv_header_stdbool_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cat >"conftest.$ac_ext" <<_ACEOF -#line 26054 "configure" -#include "confdefs.h" - -int -main (void) -{ -bool foo = false; (void)foo - ; - return 0; -} -_ACEOF -rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26066: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:26069: \$? = $ac_status" >&5 - (exit "$ac_status"); } && - { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26072: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:26075: \$? = $ac_status" >&5 - (exit "$ac_status"); }; }; then - cf_cv_header_stdbool_h=0 -else - echo "$as_me: failed program was:" >&5 -cat "conftest.$ac_ext" >&5 -cat >"conftest.$ac_ext" <<_ACEOF -#line 26082 "configure" -#include "confdefs.h" - -#ifndef __BEOS__ -#include <stdbool.h> -#endif - -int -main (void) -{ -bool foo = false; (void)foo - ; - return 0; -} -_ACEOF -rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26098: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:26101: \$? = $ac_status" >&5 - (exit "$ac_status"); } && - { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26104: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:26107: \$? = $ac_status" >&5 - (exit "$ac_status"); }; }; then - cf_cv_header_stdbool_h=1 -else - echo "$as_me: failed program was:" >&5 -cat "conftest.$ac_ext" >&5 -cf_cv_header_stdbool_h=0 -fi -rm -f "conftest.$ac_objext" "conftest.$ac_ext" -fi -rm -f "conftest.$ac_objext" "conftest.$ac_ext" -fi - -if test "$cf_cv_header_stdbool_h" = 1 -then echo "$as_me:26121: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:26123: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:26127: checking for builtin bool type" >&5 +echo "$as_me:26252: checking for builtin bool type" >&5 echo $ECHO_N "checking for builtin bool type... $ECHO_C" >&6 - if test "${cf_cv_builtin_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 26135 "configure" +#line 26259 "configure" #include "confdefs.h" -#include <stdio.h> -#include <sys/types.h> +$ac_includes_default int main (void) @@ -26147,41 +26270,35 @@ bool x = false; (void)x } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26150: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26273: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26153: \$? = $ac_status" >&5 + echo "$as_me:26276: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26156: \"$ac_try\"") >&5 + { (eval echo "$as_me:26279: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26159: \$? = $ac_status" >&5 + echo "$as_me:26282: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then - cf_cv_builtin_bool=1 + cf_cv_builtin_bool=yes else echo "$as_me: failed program was:" >&5 cat "conftest.$ac_ext" >&5 -cf_cv_builtin_bool=0 +cf_cv_builtin_bool=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" - -fi - -if test "$cf_cv_builtin_bool" = 1 -then echo "$as_me:26172: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:26174: result: no" >&5 -echo "${ECHO_T}no" >&6 fi +echo "$as_me:26292: result: $cf_cv_builtin_bool" >&5 +echo "${ECHO_T}$cf_cv_builtin_bool" >&6 -echo "$as_me:26178: checking for bool" >&5 +echo "$as_me:26295: checking for bool" >&5 echo $ECHO_N "checking for bool... $ECHO_C" >&6 if test "${ac_cv_type_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 26184 "configure" +#line 26301 "configure" #include "confdefs.h" $ac_includes_default @@ -26198,7 +26315,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -26216,16 +26333,16 @@ if (sizeof (bool)) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26219: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26336: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26222: \$? = $ac_status" >&5 + echo "$as_me:26339: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26225: \"$ac_try\"") >&5 + { (eval echo "$as_me:26342: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26228: \$? = $ac_status" >&5 + echo "$as_me:26345: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_type_bool=yes else @@ -26235,10 +26352,10 @@ ac_cv_type_bool=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:26238: result: $ac_cv_type_bool" >&5 +echo "$as_me:26355: result: $ac_cv_type_bool" >&5 echo "${ECHO_T}$ac_cv_type_bool" >&6 -echo "$as_me:26241: checking size of bool" >&5 +echo "$as_me:26358: checking size of bool" >&5 echo $ECHO_N "checking size of bool... $ECHO_C" >&6 if test "${ac_cv_sizeof_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -26247,7 +26364,7 @@ else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >"conftest.$ac_ext" <<_ACEOF -#line 26250 "configure" +#line 26367 "configure" #include "confdefs.h" $ac_includes_default @@ -26264,7 +26381,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -26279,21 +26396,21 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= 0)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26282: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26399: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26285: \$? = $ac_status" >&5 + echo "$as_me:26402: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26288: \"$ac_try\"") >&5 + { (eval echo "$as_me:26405: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26291: \$? = $ac_status" >&5 + echo "$as_me:26408: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=0 ac_mid=0 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 26296 "configure" +#line 26413 "configure" #include "confdefs.h" $ac_includes_default @@ -26310,7 +26427,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -26325,16 +26442,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26328: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26445: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26331: \$? = $ac_status" >&5 + echo "$as_me:26448: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26334: \"$ac_try\"") >&5 + { (eval echo "$as_me:26451: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26337: \$? = $ac_status" >&5 + echo "$as_me:26454: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid; break else @@ -26350,7 +26467,7 @@ cat "conftest.$ac_ext" >&5 ac_hi=-1 ac_mid=-1 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 26353 "configure" +#line 26470 "configure" #include "confdefs.h" $ac_includes_default @@ -26367,7 +26484,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -26382,16 +26499,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26385: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26502: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26388: \$? = $ac_status" >&5 + echo "$as_me:26505: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26391: \"$ac_try\"") >&5 + { (eval echo "$as_me:26508: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26394: \$? = $ac_status" >&5 + echo "$as_me:26511: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=$ac_mid; break else @@ -26407,7 +26524,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"` cat >"conftest.$ac_ext" <<_ACEOF -#line 26410 "configure" +#line 26527 "configure" #include "confdefs.h" $ac_includes_default @@ -26424,7 +26541,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -26439,16 +26556,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26442: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26559: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26445: \$? = $ac_status" >&5 + echo "$as_me:26562: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26448: \"$ac_try\"") >&5 + { (eval echo "$as_me:26565: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26451: \$? = $ac_status" >&5 + echo "$as_me:26568: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid else @@ -26461,12 +26578,12 @@ done ac_cv_sizeof_bool=$ac_lo else if test "$cross_compiling" = yes; then - { { echo "$as_me:26464: error: cannot run test program while cross compiling" >&5 + { { echo "$as_me:26581: error: cannot run test program while cross compiling" >&5 echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >"conftest.$ac_ext" <<_ACEOF -#line 26469 "configure" +#line 26586 "configure" #include "confdefs.h" $ac_includes_default @@ -26483,7 +26600,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -26502,15 +26619,15 @@ fclose (f); } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:26505: \"$ac_link\"") >&5 +if { (eval echo "$as_me:26622: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:26508: \$? = $ac_status" >&5 + echo "$as_me:26625: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:26510: \"$ac_try\"") >&5 + { (eval echo "$as_me:26627: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26513: \$? = $ac_status" >&5 + echo "$as_me:26630: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sizeof_bool=`cat conftest.val` else @@ -26526,13 +26643,13 @@ else ac_cv_sizeof_bool=0 fi fi -echo "$as_me:26529: result: $ac_cv_sizeof_bool" >&5 +echo "$as_me:26646: result: $ac_cv_sizeof_bool" >&5 echo "${ECHO_T}$ac_cv_sizeof_bool" >&6 cat >>confdefs.h <<EOF #define SIZEOF_BOOL $ac_cv_sizeof_bool EOF -echo "$as_me:26535: checking for type of bool" >&5 +echo "$as_me:26652: checking for type of bool" >&5 echo $ECHO_N "checking for type of bool... $ECHO_C" >&6 if test "${cf_cv_type_of_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -26551,7 +26668,7 @@ else else cat >"conftest.$ac_ext" <<_ACEOF -#line 26554 "configure" +#line 26671 "configure" #include "confdefs.h" $ac_includes_default @@ -26568,7 +26685,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -26577,7 +26694,7 @@ $ac_includes_default int main(void) { FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { + if (fp != NULL) { bool x = true; if ((bool)(-x) >= 0) fputs("unsigned ", fp); @@ -26592,15 +26709,15 @@ int main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:26595: \"$ac_link\"") >&5 +if { (eval echo "$as_me:26712: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:26598: \$? = $ac_status" >&5 + echo "$as_me:26715: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:26600: \"$ac_try\"") >&5 + { (eval echo "$as_me:26717: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26603: \$? = $ac_status" >&5 + echo "$as_me:26720: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_type_of_bool=`cat cf_test.out` if test -z "$cf_cv_type_of_bool"; then @@ -26617,19 +26734,19 @@ fi rm -f cf_test.out fi -echo "$as_me:26620: result: $cf_cv_type_of_bool" >&5 +echo "$as_me:26737: result: $cf_cv_type_of_bool" >&5 echo "${ECHO_T}$cf_cv_type_of_bool" >&6 if test "$cf_cv_type_of_bool" = unknown ; then case .$NCURSES_BOOL in (.auto|.) NCURSES_BOOL=unsigned;; esac - { echo "$as_me:26627: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5 + { echo "$as_me:26744: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5 echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;} cf_cv_type_of_bool=$NCURSES_BOOL fi -echo "$as_me:26632: checking for special defines needed for etip.h" >&5 +echo "$as_me:26749: checking for special defines needed for etip.h" >&5 echo $ECHO_N "checking for special defines needed for etip.h... $ECHO_C" >&6 cf_save_CXXFLAGS="$CXXFLAGS" cf_result="none" @@ -26647,7 +26764,7 @@ do test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}" test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}" cat >"conftest.$ac_ext" <<_ACEOF -#line 26650 "configure" +#line 26767 "configure" #include "confdefs.h" #include <etip.h.in> @@ -26661,16 +26778,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26664: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:26781: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26667: \$? = $ac_status" >&5 + echo "$as_me:26784: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26670: \"$ac_try\"") >&5 + { (eval echo "$as_me:26787: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26673: \$? = $ac_status" >&5 + echo "$as_me:26790: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then test -n "$cf_math" && cat >>confdefs.h <<EOF @@ -26691,12 +26808,12 @@ fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" done done -echo "$as_me:26694: result: ${cf_result:-(none)}" >&5 +echo "$as_me:26811: result: ${cf_result:-(none)}" >&5 echo "${ECHO_T}${cf_result:-(none)}" >&6 CXXFLAGS="$cf_save_CXXFLAGS" if test -n "$CXX"; then -echo "$as_me:26699: checking if $CXX accepts override keyword" >&5 +echo "$as_me:26816: checking if $CXX accepts override keyword" >&5 echo $ECHO_N "checking if $CXX accepts override keyword... $ECHO_C" >&6 if test "${cf_cv_cpp_override+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -26713,7 +26830,7 @@ ac_main_return="return" cf_cv_cpp_override=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 26716 "configure" +#line 26833 "configure" #include "confdefs.h" class base @@ -26732,15 +26849,15 @@ int main(void) { } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:26735: \"$ac_link\"") >&5 +if { (eval echo "$as_me:26852: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:26738: \$? = $ac_status" >&5 + echo "$as_me:26855: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:26740: \"$ac_try\"") >&5 + { (eval echo "$as_me:26857: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26743: \$? = $ac_status" >&5 + echo "$as_me:26860: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_cpp_override=yes else @@ -26759,7 +26876,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" fi -echo "$as_me:26762: result: $cf_cv_cpp_override" >&5 +echo "$as_me:26879: result: $cf_cv_cpp_override" >&5 echo "${ECHO_T}$cf_cv_cpp_override" >&6 fi test "$cf_cv_cpp_override" = yes && @@ -26768,7 +26885,7 @@ cat >>confdefs.h <<\EOF EOF if test -n "$CXX"; then -echo "$as_me:26771: checking if $CXX accepts parameter initialization" >&5 +echo "$as_me:26888: checking if $CXX accepts parameter initialization" >&5 echo $ECHO_N "checking if $CXX accepts parameter initialization... $ECHO_C" >&6 if test "${cf_cv_cpp_param_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -26785,7 +26902,7 @@ ac_main_return="return" cf_cv_cpp_param_init=unknown else cat >"conftest.$ac_ext" <<_ACEOF -#line 26788 "configure" +#line 26905 "configure" #include "confdefs.h" class TEST { @@ -26804,15 +26921,15 @@ int main(void) { } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:26807: \"$ac_link\"") >&5 +if { (eval echo "$as_me:26924: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:26810: \$? = $ac_status" >&5 + echo "$as_me:26927: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:26812: \"$ac_try\"") >&5 + { (eval echo "$as_me:26929: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26815: \$? = $ac_status" >&5 + echo "$as_me:26932: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_cpp_param_init=yes else @@ -26831,7 +26948,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" fi -echo "$as_me:26834: result: $cf_cv_cpp_param_init" >&5 +echo "$as_me:26951: result: $cf_cv_cpp_param_init" >&5 echo "${ECHO_T}$cf_cv_cpp_param_init" >&6 fi test "$cf_cv_cpp_param_init" = yes && @@ -26841,7 +26958,7 @@ EOF if test -n "$CXX"; then -echo "$as_me:26844: checking if $CXX accepts static_cast" >&5 +echo "$as_me:26961: checking if $CXX accepts static_cast" >&5 echo $ECHO_N "checking if $CXX accepts static_cast... $ECHO_C" >&6 if test "${cf_cv_cpp_static_cast+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -26855,7 +26972,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" cat >"conftest.$ac_ext" <<_ACEOF -#line 26858 "configure" +#line 26975 "configure" #include "confdefs.h" class NCursesPanel @@ -26899,16 +27016,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:26902: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:27019: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:26905: \$? = $ac_status" >&5 + echo "$as_me:27022: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:26908: \"$ac_try\"") >&5 + { (eval echo "$as_me:27025: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:26911: \$? = $ac_status" >&5 + echo "$as_me:27028: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_cpp_static_cast=yes else @@ -26926,7 +27043,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_main_return="return" fi -echo "$as_me:26929: result: $cf_cv_cpp_static_cast" >&5 +echo "$as_me:27046: result: $cf_cv_cpp_static_cast" >&5 echo "${ECHO_T}$cf_cv_cpp_static_cast" >&6 fi @@ -26958,7 +27075,7 @@ EOF else cf_cxx_library=no - cf_cv_builtin_bool=1 + cf_cv_builtin_bool=yes # Just because we are not configuring against C++ right now does not # mean that a user will not want to use C++. Some distributors disable @@ -26971,17 +27088,16 @@ else if test "$NCURSES_BOOL" != auto ; then cf_cv_type_of_bool=$NCURSES_BOOL - cf_cv_header_stdbool_h=0 + USE_STDBOOL_H=0 else - if test "$cf_cv_header_stdbool_h" = 1 ; then -echo "$as_me:26978: checking for bool" >&5 +echo "$as_me:27094: checking for bool" >&5 echo $ECHO_N "checking for bool... $ECHO_C" >&6 if test "${ac_cv_type_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 26984 "configure" +#line 27100 "configure" #include "confdefs.h" $ac_includes_default @@ -26998,7 +27114,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -27016,16 +27132,16 @@ if (sizeof (bool)) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:27019: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:27135: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:27022: \$? = $ac_status" >&5 + echo "$as_me:27138: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:27025: \"$ac_try\"") >&5 + { (eval echo "$as_me:27141: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:27028: \$? = $ac_status" >&5 + echo "$as_me:27144: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_type_bool=yes else @@ -27035,10 +27151,10 @@ ac_cv_type_bool=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:27038: result: $ac_cv_type_bool" >&5 +echo "$as_me:27154: result: $ac_cv_type_bool" >&5 echo "${ECHO_T}$ac_cv_type_bool" >&6 -echo "$as_me:27041: checking size of bool" >&5 +echo "$as_me:27157: checking size of bool" >&5 echo $ECHO_N "checking size of bool... $ECHO_C" >&6 if test "${ac_cv_sizeof_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -27047,7 +27163,7 @@ else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >"conftest.$ac_ext" <<_ACEOF -#line 27050 "configure" +#line 27166 "configure" #include "confdefs.h" $ac_includes_default @@ -27064,7 +27180,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -27079,21 +27195,21 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= 0)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:27082: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:27198: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:27085: \$? = $ac_status" >&5 + echo "$as_me:27201: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:27088: \"$ac_try\"") >&5 + { (eval echo "$as_me:27204: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:27091: \$? = $ac_status" >&5 + echo "$as_me:27207: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=0 ac_mid=0 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 27096 "configure" +#line 27212 "configure" #include "confdefs.h" $ac_includes_default @@ -27110,7 +27226,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -27125,16 +27241,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:27128: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:27244: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:27131: \$? = $ac_status" >&5 + echo "$as_me:27247: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:27134: \"$ac_try\"") >&5 + { (eval echo "$as_me:27250: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:27137: \$? = $ac_status" >&5 + echo "$as_me:27253: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid; break else @@ -27150,7 +27266,7 @@ cat "conftest.$ac_ext" >&5 ac_hi=-1 ac_mid=-1 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 27153 "configure" +#line 27269 "configure" #include "confdefs.h" $ac_includes_default @@ -27167,7 +27283,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -27182,16 +27298,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:27185: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:27301: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:27188: \$? = $ac_status" >&5 + echo "$as_me:27304: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:27191: \"$ac_try\"") >&5 + { (eval echo "$as_me:27307: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:27194: \$? = $ac_status" >&5 + echo "$as_me:27310: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=$ac_mid; break else @@ -27207,7 +27323,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"` cat >"conftest.$ac_ext" <<_ACEOF -#line 27210 "configure" +#line 27326 "configure" #include "confdefs.h" $ac_includes_default @@ -27224,7 +27340,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -27239,16 +27355,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:27242: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:27358: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:27245: \$? = $ac_status" >&5 + echo "$as_me:27361: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:27248: \"$ac_try\"") >&5 + { (eval echo "$as_me:27364: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:27251: \$? = $ac_status" >&5 + echo "$as_me:27367: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid else @@ -27261,12 +27377,12 @@ done ac_cv_sizeof_bool=$ac_lo else if test "$cross_compiling" = yes; then - { { echo "$as_me:27264: error: cannot run test program while cross compiling" >&5 + { { echo "$as_me:27380: error: cannot run test program while cross compiling" >&5 echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >"conftest.$ac_ext" <<_ACEOF -#line 27269 "configure" +#line 27385 "configure" #include "confdefs.h" $ac_includes_default @@ -27283,7 +27399,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -27302,15 +27418,15 @@ fclose (f); } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:27305: \"$ac_link\"") >&5 +if { (eval echo "$as_me:27421: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:27308: \$? = $ac_status" >&5 + echo "$as_me:27424: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:27310: \"$ac_try\"") >&5 + { (eval echo "$as_me:27426: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:27313: \$? = $ac_status" >&5 + echo "$as_me:27429: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sizeof_bool=`cat conftest.val` else @@ -27326,13 +27442,13 @@ else ac_cv_sizeof_bool=0 fi fi -echo "$as_me:27329: result: $ac_cv_sizeof_bool" >&5 +echo "$as_me:27445: result: $ac_cv_sizeof_bool" >&5 echo "${ECHO_T}$ac_cv_sizeof_bool" >&6 cat >>confdefs.h <<EOF #define SIZEOF_BOOL $ac_cv_sizeof_bool EOF -echo "$as_me:27335: checking for type of bool" >&5 +echo "$as_me:27451: checking for type of bool" >&5 echo $ECHO_N "checking for type of bool... $ECHO_C" >&6 if test "${cf_cv_type_of_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -27351,7 +27467,7 @@ else else cat >"conftest.$ac_ext" <<_ACEOF -#line 27354 "configure" +#line 27470 "configure" #include "confdefs.h" $ac_includes_default @@ -27368,7 +27484,7 @@ $ac_includes_default #else -#if $cf_cv_header_stdbool_h +#if $USE_STDBOOL_H #include <stdbool.h> #endif @@ -27377,7 +27493,7 @@ $ac_includes_default int main(void) { FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { + if (fp != NULL) { bool x = true; if ((bool)(-x) >= 0) fputs("unsigned ", fp); @@ -27392,15 +27508,15 @@ int main(void) _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:27395: \"$ac_link\"") >&5 +if { (eval echo "$as_me:27511: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:27398: \$? = $ac_status" >&5 + echo "$as_me:27514: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:27400: \"$ac_try\"") >&5 + { (eval echo "$as_me:27516: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:27403: \$? = $ac_status" >&5 + echo "$as_me:27519: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then cf_cv_type_of_bool=`cat cf_test.out` if test -z "$cf_cv_type_of_bool"; then @@ -27417,28 +27533,18 @@ fi rm -f cf_test.out fi -echo "$as_me:27420: result: $cf_cv_type_of_bool" >&5 +echo "$as_me:27536: result: $cf_cv_type_of_bool" >&5 echo "${ECHO_T}$cf_cv_type_of_bool" >&6 if test "$cf_cv_type_of_bool" = unknown ; then case .$NCURSES_BOOL in (.auto|.) NCURSES_BOOL=unsigned;; esac - { echo "$as_me:27427: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5 + { echo "$as_me:27543: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5 echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;} cf_cv_type_of_bool=$NCURSES_BOOL fi - else - echo "$as_me:27433: checking for fallback type of bool" >&5 -echo $ECHO_N "checking for fallback type of bool... $ECHO_C" >&6 - case "$host_cpu" in - (i?86) cf_cv_type_of_bool=char ;; - (*) cf_cv_type_of_bool=int ;; - esac - echo "$as_me:27439: result: $cf_cv_type_of_bool" >&5 -echo "${ECHO_T}$cf_cv_type_of_bool" >&6 - fi fi fi @@ -27448,11 +27554,11 @@ fi # specify the type of bool in a configure-script option and postpone # integration with the C++ compiler provided that the types are compatible. USE_CXX_BOOL=1 -if test "$cf_cv_cc_bool_type" = 1 +if test "$USE_BUILTIN_BOOL" = 1 then # oops: C has a bool. Unlikely, but C++ could differ. USE_CXX_BOOL=0 -elif test "$cf_cv_builtin_bool" = 0 +elif test "$cf_cv_builtin_bool" = no then # C++ has no bool USE_CXX_BOOL=0 @@ -27465,246 +27571,18 @@ if test -f "${srcdir}/Ada95/Makefile.in" ; then if test "$cf_with_ada" != "no" ; then if test "$with_libtool" != "no"; then - { echo "$as_me:27468: WARNING: libtool does not support Ada - disabling feature" >&5 + { echo "$as_me:27574: WARNING: libtool does not support Ada - disabling feature" >&5 echo "$as_me: WARNING: libtool does not support Ada - disabling feature" >&2;} cf_with_ada=no fi fi if test "$cf_with_ada" != "no" ; then - -for cf_prog_gnat in gnat gnatmake gprconfig gprbuild -do - -cf_upper_prog_gnat=`echo "${cf_prog_gnat}" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - unset ac_cv_path_cf_TEMP_gnat - unset cf_TEMP_gnat - # Extract the first word of "$cf_prog_gnat", so it can be a program name with args. -set dummy $cf_prog_gnat; ac_word=$2 -echo "$as_me:27485: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_cf_TEMP_gnat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $cf_TEMP_gnat in - [\\/]* | ?:[\\/]*) - ac_cv_path_cf_TEMP_gnat="$cf_TEMP_gnat" # Let the user override the test with a path. - ;; - *) - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - if $as_executable_p "$ac_dir/$ac_word"; then - ac_cv_path_cf_TEMP_gnat="$ac_dir/$ac_word" - echo "$as_me:27502: found $ac_dir/$ac_word" >&5 - break -fi -done - - test -z "$ac_cv_path_cf_TEMP_gnat" && ac_cv_path_cf_TEMP_gnat="no" - ;; -esac -fi -cf_TEMP_gnat=$ac_cv_path_cf_TEMP_gnat - -if test -n "$cf_TEMP_gnat"; then - echo "$as_me:27514: result: $cf_TEMP_gnat" >&5 -echo "${ECHO_T}$cf_TEMP_gnat" >&6 -else - echo "$as_me:27517: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - eval "cf_cv_PATH_$cf_upper_prog_gnat=$ac_cv_path_cf_TEMP_gnat" - - if test "x$cf_TEMP_gnat" != xno; then - unset cf_cv_gnat_version - unset cf_TEMP_gnat - -echo "$as_me:27527: checking for $cf_prog_gnat version" >&5 -echo $ECHO_N "checking for $cf_prog_gnat version... $ECHO_C" >&6 -if test "${cf_cv_gnat_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_gnat_version=`$cf_prog_gnat --version 2>&1 | \ - grep '[0-9].[0-9][0-9]*' |\ - sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'` - -fi -echo "$as_me:27538: result: $cf_cv_gnat_version" >&5 -echo "${ECHO_T}$cf_cv_gnat_version" >&6 -test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no -eval cf_TEMP_gnat=$cf_cv_gnat_version; unset cf_cv_gnat_version - - fi - eval "cf_cv_VERSION_$cf_upper_prog_gnat=$cf_TEMP_gnat" - - unset cf_TEMP_gnat - unset cf_cv_gnat_version - unset ac_cv_path_cf_TEMP_gnat -done - -if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then - cf_ada_make= - cf_cv_prog_gnat_correct=no -else - cf_ada_make=gnatmake - if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then - # gprconfig is newer than gnatmake; we can continue... - cf_ada_config="##" - else - rm -rf ./conftest* ./*~conftest* - if mkdir conftest.src - then - cf_ada_config="" - cd conftest.src - for cf_gprconfig in Ada C - do - echo "$as_me:27567: checking for gprconfig name for $cf_gprconfig" >&5 -echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6 - if test "$cf_gprconfig" = C - then - for cf_gprconfig_param in \ - "$cf_gprconfig,,,,GNATGCC" \ - "$cf_gprconfig,,,,GCC" \ - "$cf_gprconfig" - do - cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1` - test -n "$cf_gprconfig_value" && break - done - else - cf_gprconfig_param=$cf_gprconfig - cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1` - fi - if test -n "$cf_gprconfig_value" - then - eval "cf_ada_config_$cf_gprconfig=$cf_gprconfig_value" - echo "$as_me:27586: result: $cf_gprconfig_value" >&5 -echo "${ECHO_T}$cf_gprconfig_value" >&6 - else - echo "$as_me:27589: result: missing" >&5 -echo "${ECHO_T}missing" >&6 - cf_ada_config="#" - break - fi - done - cd .. - rm -rf ./conftest* ./*~conftest* - fi - fi - if test "x$cf_ada_config" != "x#" - then - -echo "$as_me:27602: checking for gnat version" >&5 -echo $ECHO_N "checking for gnat version... $ECHO_C" >&6 -if test "${cf_cv_gnat_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_gnat_version=`${cf_ada_make:-gnatmake} --version 2>&1 | \ - grep '[0-9].[0-9][0-9]*' |\ - sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'` - -fi -echo "$as_me:27613: result: $cf_cv_gnat_version" >&5 -echo "${ECHO_T}$cf_cv_gnat_version" >&6 -test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no - -case "$cf_cv_gnat_version" in -(3.1[1-9]*|3.[2-9]*|[4-9].*|[1-9][0-9].[0-9]*|20[0-9][0-9]) - cf_cv_prog_gnat_correct=yes - ;; -(*) - { echo "$as_me:27622: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5 -echo "$as_me: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;} - cf_cv_prog_gnat_correct=no - ;; -esac - - # Extract the first word of "m4", so it can be a program name with args. -set dummy m4; ac_word=$2 -echo "$as_me:27630: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_M4_exists+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$M4_exists"; then - ac_cv_prog_M4_exists="$M4_exists" # Let the user override the test. -else - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH" -for ac_dir in $ac_dummy; do - IFS=$ac_save_IFS - test -z "$ac_dir" && ac_dir=. - $as_executable_p "$ac_dir/$ac_word" || continue -ac_cv_prog_M4_exists="yes" -echo "$as_me:27645: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_M4_exists" && ac_cv_prog_M4_exists="no" -fi -fi -M4_exists=$ac_cv_prog_M4_exists -if test -n "$M4_exists"; then - echo "$as_me:27654: result: $M4_exists" >&5 -echo "${ECHO_T}$M4_exists" >&6 -else - echo "$as_me:27657: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "$ac_cv_prog_M4_exists" = no; then - cf_cv_prog_gnat_correct=no - { echo "$as_me:27663: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5 -echo "$as_me: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&2;} - fi - if test "$cf_cv_prog_gnat_correct" = yes; then - echo "$as_me:27667: checking if GNAT works" >&5 -echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6 - -rm -rf ./conftest* ./*~conftest* -cat >>conftest.ads <<CF_EOF -procedure conftest; -CF_EOF -cat >>conftest.adb <<CF_EOF -with Text_IO; -with GNAT.OS_Lib; -procedure conftest is -begin - Text_IO.Put ("Hello World"); - Text_IO.New_Line; - GNAT.OS_Lib.OS_Exit (0); -end conftest; -CF_EOF -if ( "$cf_ada_make" $ADAFLAGS conftest 1>&5 2>&1 ) ; then - if ( ./conftest 1>&5 2>&1 ) ; then - cf_cv_prog_gnat_correct=yes - else - cf_cv_prog_gnat_correct=no - fi -else - cf_cv_prog_gnat_correct=no -fi -rm -rf ./conftest* ./*~conftest* - - echo "$as_me:27695: result: $cf_cv_prog_gnat_correct" >&5 -echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6 - fi - else - cf_cv_prog_gnat_correct=no - fi -fi - if test "x$cf_cv_prog_gnat_correct" = xyes; then ADAFLAGS="$ADAFLAGS -gnatpn" - echo "$as_me:27707: checking optimization options for ADAFLAGS" >&5 + echo "$as_me:27585: checking optimization options for ADAFLAGS" >&5 echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6 case "$CFLAGS" in (*-g*) @@ -27721,10 +27599,10 @@ echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6 ;; esac - echo "$as_me:27724: result: $ADAFLAGS" >&5 + echo "$as_me:27602: result: $ADAFLAGS" >&5 echo "${ECHO_T}$ADAFLAGS" >&6 -echo "$as_me:27727: checking if GNATPREP supports -T option" >&5 +echo "$as_me:27605: checking if GNATPREP supports -T option" >&5 echo $ECHO_N "checking if GNATPREP supports -T option... $ECHO_C" >&6 if test "${cf_cv_gnatprep_opt_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -27734,11 +27612,11 @@ cf_cv_gnatprep_opt_t=no gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes fi -echo "$as_me:27737: result: $cf_cv_gnatprep_opt_t" >&5 +echo "$as_me:27615: result: $cf_cv_gnatprep_opt_t" >&5 echo "${ECHO_T}$cf_cv_gnatprep_opt_t" >&6 test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS" -echo "$as_me:27741: checking if GNAT supports generics" >&5 +echo "$as_me:27619: checking if GNAT supports generics" >&5 echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6 case "$cf_cv_gnat_version" in (3.1[1-9]*|3.[2-9]*|[4-9].*|[1-9][0-9].[0-9]*|20[0-9][0-9]) @@ -27748,7 +27626,7 @@ case "$cf_cv_gnat_version" in cf_gnat_generics=no ;; esac -echo "$as_me:27751: result: $cf_gnat_generics" >&5 +echo "$as_me:27629: result: $cf_gnat_generics" >&5 echo "${ECHO_T}$cf_gnat_generics" >&6 if test "$cf_gnat_generics" = yes @@ -27760,7 +27638,7 @@ else cf_generic_objects= fi -echo "$as_me:27763: checking if GNAT supports SIGINT" >&5 +echo "$as_me:27641: checking if GNAT supports SIGINT" >&5 echo $ECHO_N "checking if GNAT supports SIGINT... $ECHO_C" >&6 if test "${cf_cv_gnat_sigint+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -27808,7 +27686,7 @@ fi rm -rf ./conftest* ./*~conftest* fi -echo "$as_me:27811: result: $cf_cv_gnat_sigint" >&5 +echo "$as_me:27689: result: $cf_cv_gnat_sigint" >&5 echo "${ECHO_T}$cf_cv_gnat_sigint" >&6 if test "$cf_cv_gnat_sigint" = yes ; then @@ -27821,7 +27699,7 @@ cf_gnat_libraries=no cf_gnat_projects=no if test "$enable_gnat_projects" != no ; then -echo "$as_me:27824: checking if GNAT supports project files" >&5 +echo "$as_me:27702: checking if GNAT supports project files" >&5 echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6 case "$cf_cv_gnat_version" in (3.[0-9]*) @@ -27884,15 +27762,15 @@ CF_EOF esac ;; esac -echo "$as_me:27887: result: $cf_gnat_projects" >&5 +echo "$as_me:27765: result: $cf_gnat_projects" >&5 echo "${ECHO_T}$cf_gnat_projects" >&6 fi # enable_gnat_projects if test "$cf_gnat_projects" = yes then - echo "$as_me:27893: checking if GNAT supports libraries" >&5 + echo "$as_me:27771: checking if GNAT supports libraries" >&5 echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6 - echo "$as_me:27895: result: $cf_gnat_libraries" >&5 + echo "$as_me:27773: result: $cf_gnat_libraries" >&5 echo "${ECHO_T}$cf_gnat_libraries" >&6 fi @@ -27912,7 +27790,7 @@ then then USE_GNAT_MAKE_GPR="" else - { echo "$as_me:27915: WARNING: use old makefile rules since tools are missing" >&5 + { echo "$as_me:27793: WARNING: use old makefile rules since tools are missing" >&5 echo "$as_me: WARNING: use old makefile rules since tools are missing" >&2;} fi fi @@ -27924,7 +27802,7 @@ else USE_GNAT_LIBRARIES="#" fi -echo "$as_me:27927: checking for Ada95 compiler" >&5 +echo "$as_me:27805: checking for Ada95 compiler" >&5 echo $ECHO_N "checking for Ada95 compiler... $ECHO_C" >&6 # Check whether --with-ada-compiler or --without-ada-compiler was given. @@ -27935,12 +27813,12 @@ else cf_ada_compiler=gnatmake fi; -echo "$as_me:27938: result: $cf_ada_compiler" >&5 +echo "$as_me:27816: result: $cf_ada_compiler" >&5 echo "${ECHO_T}$cf_ada_compiler" >&6 cf_ada_package=terminal_interface -echo "$as_me:27943: checking for Ada95 include directory" >&5 +echo "$as_me:27821: checking for Ada95 include directory" >&5 echo $ECHO_N "checking for Ada95 include directory... $ECHO_C" >&6 # Check whether --with-ada-include or --without-ada-include was given. @@ -27957,26 +27835,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$withval" in -(.\$\(*\)*|.\'*\'*) +case "x$withval" in +(x\$\(*\)*|x\'*\'*) ;; -(..|./*|.\\*) +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX - ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval withval="$withval" - case ".$withval" in - (.NONE/*) + case "x$withval" in + (xNONE/*) withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:27979: error: expected a pathname, not \"$withval\"" >&5 + { { echo "$as_me:27855: error: expected a pathname, not \"$withval\"" >&5 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -27985,10 +27861,10 @@ esac fi eval ADA_INCLUDE="$withval" -echo "$as_me:27988: result: $ADA_INCLUDE" >&5 +echo "$as_me:27864: result: $ADA_INCLUDE" >&5 echo "${ECHO_T}$ADA_INCLUDE" >&6 -echo "$as_me:27991: checking for Ada95 object directory" >&5 +echo "$as_me:27867: checking for Ada95 object directory" >&5 echo $ECHO_N "checking for Ada95 object directory... $ECHO_C" >&6 # Check whether --with-ada-objects or --without-ada-objects was given. @@ -28005,26 +27881,24 @@ else cf_path_syntax="$ac_default_prefix" fi -case ".$withval" in -(.\$\(*\)*|.\'*\'*) - ;; -(..|./*|.\\*) +case "x$withval" in +(x\$\(*\)*|x\'*\'*) ;; -(.[a-zA-Z]:[\\/]*) # OS/2 EMX +(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) ;; -(.\$\{*prefix\}*|.\$\{*dir\}*) +(x\$\{*prefix\}*|x\$\{*dir\}*) eval withval="$withval" - case ".$withval" in - (.NONE/*) + case "x$withval" in + (xNONE/*) withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` ;; esac ;; -(.no|.NONE/*) +(xno|xNONE/*) withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` ;; (*) - { { echo "$as_me:28027: error: expected a pathname, not \"$withval\"" >&5 + { { echo "$as_me:27901: error: expected a pathname, not \"$withval\"" >&5 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} { (exit 1); exit 1; }; } ;; @@ -28033,10 +27907,10 @@ esac fi eval ADA_OBJECTS="$withval" -echo "$as_me:28036: result: $ADA_OBJECTS" >&5 +echo "$as_me:27910: result: $ADA_OBJECTS" >&5 echo "${ECHO_T}$ADA_OBJECTS" >&6 -echo "$as_me:28039: checking whether to build an Ada95 shared library" >&5 +echo "$as_me:27913: checking whether to build an Ada95 shared library" >&5 echo $ECHO_N "checking whether to build an Ada95 shared library... $ECHO_C" >&6 # Check whether --with-ada-sharedlib or --without-ada-sharedlib was given. @@ -28057,11 +27931,11 @@ then fi fi -echo "$as_me:28060: result: $with_ada_sharedlib" >&5 +echo "$as_me:27934: result: $with_ada_sharedlib" >&5 echo "${ECHO_T}$with_ada_sharedlib" >&6 if test "x$cf_ada_sharedlib_warn" != xno then - { echo "$as_me:28064: WARNING: disabling Ada95 shared library since GNAT projects are not supported" >&5 + { echo "$as_me:27938: WARNING: disabling Ada95 shared library since GNAT projects are not supported" >&5 echo "$as_me: WARNING: disabling Ada95 shared library since GNAT projects are not supported" >&2;} fi @@ -28079,7 +27953,7 @@ fi # allow the Ada binding to be renamed -echo "$as_me:28082: checking for Ada95 curses library name" >&5 +echo "$as_me:27956: checking for Ada95 curses library name" >&5 echo $ECHO_N "checking for Ada95 curses library name... $ECHO_C" >&6 # Check whether --with-ada-libname or --without-ada-libname was given. @@ -28095,7 +27969,7 @@ case "x$ADA_LIBNAME" in ;; esac -echo "$as_me:28098: result: $ADA_LIBNAME" >&5 +echo "$as_me:27972: result: $ADA_LIBNAME" >&5 echo "${ECHO_T}$ADA_LIBNAME" >&6 fi @@ -28106,13 +27980,13 @@ fi # do this "late" to avoid conflict with header-checks if test "x$with_widec" = xyes ; then - echo "$as_me:28109: checking for wchar_t" >&5 + echo "$as_me:27983: checking for wchar_t" >&5 echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6 if test "${ac_cv_type_wchar_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >"conftest.$ac_ext" <<_ACEOF -#line 28115 "configure" +#line 27989 "configure" #include "confdefs.h" $ac_includes_default int @@ -28127,16 +28001,16 @@ if (sizeof (wchar_t)) } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:28130: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:28004: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:28133: \$? = $ac_status" >&5 + echo "$as_me:28007: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:28136: \"$ac_try\"") >&5 + { (eval echo "$as_me:28010: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:28139: \$? = $ac_status" >&5 + echo "$as_me:28013: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_type_wchar_t=yes else @@ -28146,10 +28020,10 @@ ac_cv_type_wchar_t=no fi rm -f "conftest.$ac_objext" "conftest.$ac_ext" fi -echo "$as_me:28149: result: $ac_cv_type_wchar_t" >&5 +echo "$as_me:28023: result: $ac_cv_type_wchar_t" >&5 echo "${ECHO_T}$ac_cv_type_wchar_t" >&6 -echo "$as_me:28152: checking size of wchar_t" >&5 +echo "$as_me:28026: checking size of wchar_t" >&5 echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6 if test "${ac_cv_sizeof_wchar_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -28158,7 +28032,7 @@ else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >"conftest.$ac_ext" <<_ACEOF -#line 28161 "configure" +#line 28035 "configure" #include "confdefs.h" $ac_includes_default int @@ -28170,21 +28044,21 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) >= 0)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:28173: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:28047: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:28176: \$? = $ac_status" >&5 + echo "$as_me:28050: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:28179: \"$ac_try\"") >&5 + { (eval echo "$as_me:28053: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:28182: \$? = $ac_status" >&5 + echo "$as_me:28056: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=0 ac_mid=0 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 28187 "configure" +#line 28061 "configure" #include "confdefs.h" $ac_includes_default int @@ -28196,16 +28070,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:28199: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:28073: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:28202: \$? = $ac_status" >&5 + echo "$as_me:28076: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:28205: \"$ac_try\"") >&5 + { (eval echo "$as_me:28079: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:28208: \$? = $ac_status" >&5 + echo "$as_me:28082: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid; break else @@ -28221,7 +28095,7 @@ cat "conftest.$ac_ext" >&5 ac_hi=-1 ac_mid=-1 while :; do cat >"conftest.$ac_ext" <<_ACEOF -#line 28224 "configure" +#line 28098 "configure" #include "confdefs.h" $ac_includes_default int @@ -28233,16 +28107,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) >= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:28236: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:28110: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:28239: \$? = $ac_status" >&5 + echo "$as_me:28113: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:28242: \"$ac_try\"") >&5 + { (eval echo "$as_me:28116: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:28245: \$? = $ac_status" >&5 + echo "$as_me:28119: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_lo=$ac_mid; break else @@ -28258,7 +28132,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext" while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"` cat >"conftest.$ac_ext" <<_ACEOF -#line 28261 "configure" +#line 28135 "configure" #include "confdefs.h" $ac_includes_default int @@ -28270,16 +28144,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)] } _ACEOF rm -f "conftest.$ac_objext" -if { (eval echo "$as_me:28273: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:28147: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:28276: \$? = $ac_status" >&5 + echo "$as_me:28150: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest.$ac_objext"' - { (eval echo "$as_me:28279: \"$ac_try\"") >&5 + { (eval echo "$as_me:28153: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:28282: \$? = $ac_status" >&5 + echo "$as_me:28156: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_hi=$ac_mid else @@ -28292,12 +28166,12 @@ done ac_cv_sizeof_wchar_t=$ac_lo else if test "$cross_compiling" = yes; then - { { echo "$as_me:28295: error: cannot run test program while cross compiling" >&5 + { { echo "$as_me:28169: error: cannot run test program while cross compiling" >&5 echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >"conftest.$ac_ext" <<_ACEOF -#line 28300 "configure" +#line 28174 "configure" #include "confdefs.h" $ac_includes_default int @@ -28313,15 +28187,15 @@ fclose (f); } _ACEOF rm -f "conftest$ac_exeext" -if { (eval echo "$as_me:28316: \"$ac_link\"") >&5 +if { (eval echo "$as_me:28190: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:28319: \$? = $ac_status" >&5 + echo "$as_me:28193: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' - { (eval echo "$as_me:28321: \"$ac_try\"") >&5 + { (eval echo "$as_me:28195: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:28324: \$? = $ac_status" >&5 + echo "$as_me:28198: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then ac_cv_sizeof_wchar_t=`cat conftest.val` else @@ -28337,7 +28211,7 @@ else ac_cv_sizeof_wchar_t=0 fi fi -echo "$as_me:28340: result: $ac_cv_sizeof_wchar_t" >&5 +echo "$as_me:28214: result: $ac_cv_sizeof_wchar_t" >&5 echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6 cat >>confdefs.h <<EOF #define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t @@ -28350,7 +28224,7 @@ EOF then test -n "$verbose" && echo " test failed (assume 2)" 1>&6 -echo "${as_me:-configure}:28353: testing test failed (assume 2) ..." 1>&5 +echo "${as_me:-configure}:28227: testing test failed (assume 2) ..." 1>&5 sed /SIZEOF_WCHAR_T/d confdefs.h >confdefs.tmp mv confdefs.tmp confdefs.h @@ -28368,7 +28242,7 @@ fi ### chooses to split module lists into libraries. ### ### (see CF_LIB_RULES). -echo "$as_me:28371: checking for library subsets" >&5 +echo "$as_me:28245: checking for library subsets" >&5 echo $ECHO_N "checking for library subsets... $ECHO_C" >&6 LIB_SUBSETS= @@ -28398,18 +28272,21 @@ if test "$with_term_driver" != no ; then LIB_SUBSETS="${LIB_SUBSETS}+port_drivers" case "$cf_cv_system_name" in (*mingw32*|*mingw64*) - if test "x$with_exp_win32" = xyes ; then + if test "x$with_named_pipes" = xyes ; then LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32" else LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" fi CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER" ;; + (*msys*|*cygwin*) + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_msys2" + ;; (*) LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo" ;; esac -elif test "x$with_exp_win32" = xyes ; then +elif test "x$with_named_pipes" = xyes ; then case "$cf_cv_system_name" in (*mingw32*|*mingw64*) LIB_SUBSETS="${LIB_SUBSETS}+port_win32" @@ -28422,7 +28299,7 @@ fi test "x$with_widec" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar" test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs" -echo "$as_me:28425: result: $LIB_SUBSETS" >&5 +echo "$as_me:28302: result: $LIB_SUBSETS" >&5 echo "${ECHO_T}$LIB_SUBSETS" >&6 ### Construct the list of include-directories to be generated @@ -28453,7 +28330,7 @@ elif test "$includedir" != "/usr/include"; then fi ### Build up pieces for makefile rules -echo "$as_me:28456: checking default library suffix" >&5 +echo "$as_me:28333: checking default library suffix" >&5 echo $ECHO_N "checking default library suffix... $ECHO_C" >&6 case $DFT_LWR_MODEL in @@ -28464,10 +28341,10 @@ echo $ECHO_N "checking default library suffix... $ECHO_C" >&6 (shared) DFT_ARG_SUFFIX='' ;; esac test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}" -echo "$as_me:28467: result: $DFT_ARG_SUFFIX" >&5 +echo "$as_me:28344: result: $DFT_ARG_SUFFIX" >&5 echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6 -echo "$as_me:28470: checking default library-dependency suffix" >&5 +echo "$as_me:28347: checking default library-dependency suffix" >&5 echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6 case X$DFT_LWR_MODEL in @@ -28550,10 +28427,10 @@ echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6 DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}" DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}" fi -echo "$as_me:28553: result: $DFT_DEP_SUFFIX" >&5 +echo "$as_me:28430: result: $DFT_DEP_SUFFIX" >&5 echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6 -echo "$as_me:28556: checking default object directory" >&5 +echo "$as_me:28433: checking default object directory" >&5 echo $ECHO_N "checking default object directory... $ECHO_C" >&6 case $DFT_LWR_MODEL in @@ -28569,11 +28446,11 @@ echo $ECHO_N "checking default object directory... $ECHO_C" >&6 DFT_OBJ_SUBDIR='obj_s' ;; esac esac -echo "$as_me:28572: result: $DFT_OBJ_SUBDIR" >&5 +echo "$as_me:28449: result: $DFT_OBJ_SUBDIR" >&5 echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6 if test "x$cf_with_cxx" = xyes ; then -echo "$as_me:28576: checking c++ library-dependency suffix" >&5 +echo "$as_me:28453: checking c++ library-dependency suffix" >&5 echo $ECHO_N "checking c++ library-dependency suffix... $ECHO_C" >&6 if test "$with_libtool" != "no"; then # libtool thinks it can make c++ shared libraries (perhaps only g++) @@ -28666,7 +28543,7 @@ else fi fi -echo "$as_me:28669: result: $CXX_LIB_SUFFIX" >&5 +echo "$as_me:28546: result: $CXX_LIB_SUFFIX" >&5 echo "${ECHO_T}$CXX_LIB_SUFFIX" >&6 fi @@ -28694,7 +28571,7 @@ TINFO_LIST=`echo "$SHLIB_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'` fi USE_ARG_SUFFIX="${DFT_ARG_SUFFIX}${EXTRA_SUFFIX}" -USE_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}" +ABI_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}" USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}${cf_cv_abi_version} if test -n "$EXTRA_SUFFIX" && test "x$EXTRA_SUFFIX" != "x${cf_cv_abi_version}" then @@ -28705,7 +28582,7 @@ if test "$with_ticlib" != no ; then if test "x$with_ticlib" != xyes ; then TICS_NAME=$with_ticlib - TICS_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${USE_LIB_SUFFIX}//"`" + TICS_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${ABI_SUFFIX}//"`" TICS_ARG_SUFFIX="${with_ticlib}`echo "${USE_ARG_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TICS_DEP_SUFFIX="${with_ticlib}`echo "${DFT_DEP_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TICS_LIB_SUFFIX="${with_ticlib}" @@ -28713,7 +28590,7 @@ if test "$with_ticlib" != no ; then TICS_SUFFIX=${DFT_LIB_SUFFIX} TICS_ARG_SUFFIX="${TICS_NAME}${USE_ARG_SUFFIX}" TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}" - TICS_LIB_SUFFIX="${TICS_NAME}${USE_LIB_SUFFIX}" + TICS_LIB_SUFFIX="${TICS_NAME}${ABI_SUFFIX}" fi TICS_LDFLAGS="-L${LIB_DIR}" TICS_LIBS="-l${TICS_ARG_SUFFIX}" @@ -28727,7 +28604,7 @@ if test "$with_termlib" != no ; then if test "x$with_termlib" != xyes ; then TINFO_NAME=$with_termlib - TINFO_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${USE_LIB_SUFFIX}//"`" + TINFO_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${ABI_SUFFIX}//"`" TINFO_ARG_SUFFIX="${with_termlib}`echo "${USE_ARG_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TINFO_DEP_SUFFIX="${with_termlib}`echo "${DFT_DEP_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TINFO_LIB_SUFFIX="${with_termlib}" @@ -28735,7 +28612,7 @@ if test "$with_termlib" != no ; then TINFO_SUFFIX=${DFT_LIB_SUFFIX} TINFO_ARG_SUFFIX="${TINFO_NAME}${USE_ARG_SUFFIX}" TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}" - TINFO_LIB_SUFFIX="${TINFO_NAME}${USE_LIB_SUFFIX}" + TINFO_LIB_SUFFIX="${TINFO_NAME}${ABI_SUFFIX}" fi TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" @@ -28815,21 +28692,21 @@ if test "$GCC" = yes ; then esac else case "$cf_cv_system_name" in - (aix[4-7]*) # from ld manpage + (aix[4-7]*) # from ld man page LDFLAGS_STATIC=-bstatic LDFLAGS_SHARED=-bdynamic ;; - (hpux*) # from ld manpage for hpux10.20, hpux11.11 + (hpux*) # from ld man page for hpux10.20, hpux11.11 # We could also use just "archive" and "shared". LDFLAGS_STATIC=-Wl,-a,archive_shared LDFLAGS_SHARED=-Wl,-a,shared_archive ;; - (irix*) # from ld manpage IRIX64 + (irix*) # from ld man page IRIX64 LDFLAGS_STATIC=-Bstatic LDFLAGS_SHARED=-Bdynamic ;; - (osf[45]*) # from ld manpage osf4.0d, osf5.1 - # alternative "-oldstyle_liblookup" (not in cc manpage) + (osf[45]*) # from ld man page osf4.0d, osf5.1 + # alternative "-oldstyle_liblookup" (not in cc man page) LDFLAGS_STATIC=-noso LDFLAGS_SHARED=-so_archive ;; @@ -28842,21 +28719,21 @@ fi if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED" then - echo "$as_me:28845: checking if linker supports switching between static/dynamic" >&5 + echo "$as_me:28722: checking if linker supports switching between static/dynamic" >&5 echo $ECHO_N "checking if linker supports switching between static/dynamic... $ECHO_C" >&6 rm -f libconftest.a cat >conftest.$ac_ext <<EOF -#line 28850 "configure" +#line 28727 "configure" #include <stdio.h> int cf_ldflags_static(FILE *fp) { return fflush(fp); } EOF - if { (eval echo "$as_me:28854: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:28731: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:28857: \$? = $ac_status" >&5 + echo "$as_me:28734: \$? = $ac_status" >&5 (exit "$ac_status"); } ; then - ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&5 1>/dev/null + ( $AR $ARFLAGS libconftest.a conftest.$OBJEXT ) 2>&5 1>/dev/null ( eval $RANLIB libconftest.a ) 2>&5 >/dev/null fi rm -f conftest.* @@ -28865,10 +28742,10 @@ EOF LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS" cat >"conftest.$ac_ext" <<_ACEOF -#line 28868 "configure" +#line 28745 "configure" #include "confdefs.h" -#line 28871 "configure" +#line 28748 "configure" #include <stdio.h> int cf_ldflags_static(FILE *fp); @@ -28883,16 +28760,16 @@ main (void) } _ACEOF rm -f "conftest.$ac_objext" "conftest$ac_exeext" -if { (eval echo "$as_me:28886: \"$ac_link\"") >&5 +if { (eval echo "$as_me:28763: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:28889: \$? = $ac_status" >&5 + echo "$as_me:28766: \$? = $ac_status" >&5 (exit "$ac_status"); } && { ac_try='test -s "conftest$ac_exeext"' - { (eval echo "$as_me:28892: \"$ac_try\"") >&5 + { (eval echo "$as_me:28769: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:28895: \$? = $ac_status" >&5 + echo "$as_me:28772: \$? = $ac_status" >&5 (exit "$ac_status"); }; }; then # some linkers simply ignore the -dynamic @@ -28915,7 +28792,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" rm -f libconftest.* LIBS="$cf_save_LIBS" - echo "$as_me:28918: result: $cf_ldflags_static" >&5 + echo "$as_me:28795: result: $cf_ldflags_static" >&5 echo "${ECHO_T}$cf_ldflags_static" >&6 if test "$cf_ldflags_static" != yes @@ -28931,7 +28808,7 @@ fi ;; esac -echo "$as_me:28934: checking where we will install curses.h" >&5 +echo "$as_me:28811: checking where we will install curses.h" >&5 echo $ECHO_N "checking where we will install curses.h... $ECHO_C" >&6 includesubdir= @@ -28939,9 +28816,9 @@ if test "$with_overwrite" = no && \ { test "x$includedir" = 'x${prefix}/include' || \ test "x$includedir" = "x${prefix}/include"; } then - includesubdir="/ncurses${USE_LIB_SUFFIX}" + includesubdir="/ncurses${ABI_SUFFIX}" fi -echo "$as_me:28944: result: ${includedir}${includesubdir}" >&5 +echo "$as_me:28821: result: ${includedir}${includesubdir}" >&5 echo "${ECHO_T}${includedir}${includesubdir}" >&6 ### Resolve a conflict between normal and wide-curses by forcing applications @@ -28949,7 +28826,7 @@ echo "${ECHO_T}${includedir}${includesubdir}" >&6 if test "$with_overwrite" != no ; then if test "$NCURSES_LIBUTF8" = 1 ; then NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)' - { echo "$as_me:28952: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&5 + { echo "$as_me:28829: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&5 echo "$as_me: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&2;} fi fi @@ -28974,7 +28851,7 @@ EOF # pkgsrc uses these -echo "$as_me:28977: checking for desired basename for form library" >&5 +echo "$as_me:28854: checking for desired basename for form library" >&5 echo $ECHO_N "checking for desired basename for form library... $ECHO_C" >&6 # Check whether --with-form-libname or --without-form-libname was given. @@ -28994,10 +28871,10 @@ case "x$FORM_NAME" in ;; esac -echo "$as_me:28997: result: $FORM_NAME" >&5 +echo "$as_me:28874: result: $FORM_NAME" >&5 echo "${ECHO_T}$FORM_NAME" >&6 -echo "$as_me:29000: checking for desired basename for menu library" >&5 +echo "$as_me:28877: checking for desired basename for menu library" >&5 echo $ECHO_N "checking for desired basename for menu library... $ECHO_C" >&6 # Check whether --with-menu-libname or --without-menu-libname was given. @@ -29017,10 +28894,10 @@ case "x$MENU_NAME" in ;; esac -echo "$as_me:29020: result: $MENU_NAME" >&5 +echo "$as_me:28897: result: $MENU_NAME" >&5 echo "${ECHO_T}$MENU_NAME" >&6 -echo "$as_me:29023: checking for desired basename for panel library" >&5 +echo "$as_me:28900: checking for desired basename for panel library" >&5 echo $ECHO_N "checking for desired basename for panel library... $ECHO_C" >&6 # Check whether --with-panel-libname or --without-panel-libname was given. @@ -29040,10 +28917,10 @@ case "x$PANEL_NAME" in ;; esac -echo "$as_me:29043: result: $PANEL_NAME" >&5 +echo "$as_me:28920: result: $PANEL_NAME" >&5 echo "${ECHO_T}$PANEL_NAME" >&6 -echo "$as_me:29046: checking for desired basename for cxx library" >&5 +echo "$as_me:28923: checking for desired basename for cxx library" >&5 echo $ECHO_N "checking for desired basename for cxx library... $ECHO_C" >&6 # Check whether --with-cxx-libname or --without-cxx-libname was given. @@ -29063,13 +28940,13 @@ case "x$CXX_NAME" in ;; esac -echo "$as_me:29066: result: $CXX_NAME" >&5 +echo "$as_me:28943: result: $CXX_NAME" >&5 echo "${ECHO_T}$CXX_NAME" >&6 ### Construct the list of subdirectories for which we'll customize makefiles ### with the appropriate compile-rules. -echo "$as_me:29072: checking for src modules" >&5 +echo "$as_me:28949: checking for src modules" >&5 echo $ECHO_N "checking for src modules... $ECHO_C" >&6 # dependencies and linker-arguments for test-programs @@ -29128,7 +29005,7 @@ eval TEST_ROOT="\$${cf_map_lib_basename}_NAME" fi fi done -echo "$as_me:29131: result: $cf_cv_src_modules" >&5 +echo "$as_me:29008: result: $cf_cv_src_modules" >&5 echo "${ECHO_T}$cf_cv_src_modules" >&6 TEST_ARGS="-L${LIB_DIR} $TEST_ARGS" @@ -29241,6 +29118,12 @@ else HAVE_STDINT_H=0 fi +if test "x$ac_cv_header_sgtty_h" = xyes ; then + HAVE_SGTTY_H=1 +else + HAVE_SGTTY_H=0 +fi + if test "x$ac_cv_header_termio_h" = xyes ; then HAVE_TERMIO_H=1 else @@ -29253,6 +29136,665 @@ else HAVE_TERMIOS_H=0 fi +case "x${ac_cv_header_termios_h}${ac_cv_header_termio_h}${ac_cv_header_sgtty_h}${cf_cv_have_tcgetattr}" in +(*yes*) + ;; +(*) + case "$cf_cv_system_name" in + (*mingw32*|*mingw64*|*-msvc*) + ;; + (*) + { { echo "$as_me:29147: error: No termio/termios/sgtty found" >&5 +echo "$as_me: error: No termio/termios/sgtty found" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + ;; +esac + +############################################################################### + +# Extract the first word of "tbl", so it can be a program name with args. +set dummy tbl; ac_word=$2 +echo "$as_me:29159: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_NROFF_TBL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $NROFF_TBL in + [\\/]* | ?:[\\/]*) + ac_cv_path_NROFF_TBL="$NROFF_TBL" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_NROFF_TBL="$ac_dir/$ac_word" + echo "$as_me:29176: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +NROFF_TBL=$ac_cv_path_NROFF_TBL + +if test -n "$NROFF_TBL"; then + echo "$as_me:29187: result: $NROFF_TBL" >&5 +echo "${ECHO_T}$NROFF_TBL" >&6 +else + echo "$as_me:29190: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:29194: checking if $NROFF_TBL supports 'x' column modifier" >&5 +echo $ECHO_N "checking if $NROFF_TBL supports 'x' column modifier... $ECHO_C" >&6 +if test "${cf_cv_tbl_x_option_okay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes ; then + cf_cv_tbl_x_option_okay=unknown + else + cf_cv_tbl_x_option_okay=no + cat > conftest <<-CF_EOF + .TS + L. + table cell + .TE + CF_EOF + if $NROFF_TBL < conftest > /dev/null 2>&1 + then + cat > conftest <<-CF_EOF + .TS + Lx. + table cell + .TE + CF_EOF + if $NROFF_TBL < conftest > /dev/null 2>&1 + then + cf_cv_tbl_x_option_okay=yes + fi + else + { { echo "$as_me:29223: error: $NROFF_TBL not available." >&5 +echo "$as_me: error: $NROFF_TBL not available." >&2;} + { (exit 1); exit 1; }; } + fi + rm -f conftest + fi + +fi +echo "$as_me:29231: result: $cf_cv_tbl_x_option_okay" >&5 +echo "${ECHO_T}$cf_cv_tbl_x_option_okay" >&6 + +TBL_X_OPTION=$cf_cv_tbl_x_option_okay + +echo "$as_me:29236: checking format of man pages" >&5 +echo $ECHO_N "checking format of man pages... $ECHO_C" >&6 + +# Check whether --with-manpage-format or --without-manpage-format was given. +if test "${with_manpage_format+set}" = set; then + withval="$with_manpage_format" + MANPAGE_FORMAT=$withval +else + MANPAGE_FORMAT=unknown +fi; + +test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown +MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'` + +cf_unknown= + +case "$MANPAGE_FORMAT" in +(unknown) + if test -z "$MANPATH" ; then + MANPATH="/usr/man:/usr/share/man" + fi + + # look for the 'date' man page (it is most likely to be installed!) + MANPAGE_FORMAT= + cf_preform="no" + cf_catonly="yes" + cf_example="date" + + IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for cf_dir in $MANPATH; do + test -z "$cf_dir" && cf_dir=/usr/man + for cf_name in $cf_dir/man*/$cf_example.[01]* $cf_dir/cat*/$cf_example.[01]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example + do + cf_test=`echo "$cf_name" | sed -e 's/*//'` + if test "x$cf_test" = "x$cf_name" ; then + + case "$cf_name" in + (*.bz2) MANPAGE_FORMAT="$MANPAGE_FORMAT bzip2";; + (*.xz) MANPAGE_FORMAT="$MANPAGE_FORMAT xz";; + (*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";; + (*.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";; + (*.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";; + (*) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";; + esac + + case "$cf_name" in + ($cf_dir/man*) + cf_catonly=no + ;; + ($cf_dir/cat*) + cf_preform=yes + ;; + esac + break + fi + + # if we found a match in either man* or cat*, stop looking + if test -n "$MANPAGE_FORMAT" ; then + cf_found=no + test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted" + test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly" + case "$cf_name" in + ($cf_dir/cat*) + cf_found=yes + ;; + esac + test "$cf_found" = yes && break + fi + done + # only check the first directory in $MANPATH where we find man pages + if test -n "$MANPAGE_FORMAT" ; then + break + fi + done + # if we did not find the example, just assume it is normal + test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal + IFS="$ac_save_ifs" + ;; +(*) + for cf_option in $MANPAGE_FORMAT; do + case "$cf_option" in + (xz|bzip2|gzip|compress|BSDI|normal|formatted|catonly) + ;; + (*) + cf_unknown="$cf_unknown $cf_option" + ;; + esac + done + ;; +esac + +echo "$as_me:29327: result: $MANPAGE_FORMAT" >&5 +echo "${ECHO_T}$MANPAGE_FORMAT" >&6 +if test -n "$cf_unknown" ; then + { echo "$as_me:29330: WARNING: Unexpected man page format $cf_unknown" >&5 +echo "$as_me: WARNING: Unexpected man page format $cf_unknown" >&2;} +fi + +cf_manpage_format=no +cf_manpage_inboth=no +cf_manpage_so_strip= +cf_manpage_compress= +cf_manpage_coptions= + +for cf_item in $MANPAGE_FORMAT +do +case "$cf_item" in +(catonly) + cf_manpage_format=yes + cf_manpage_inboth=no + ;; +(formatted) + cf_manpage_format=yes + cf_manpage_inboth=yes + ;; +(compress) + cf_manpage_so_strip="Z" + cf_manpage_compress=compress + ;; +(gzip) + cf_manpage_so_strip="gz" + cf_manpage_compress=gzip + cf_manpage_coptions=-n + ;; +(bzip2) + cf_manpage_so_strip="bz2" + cf_manpage_compress=bzip2 + ;; +(xz) + cf_manpage_so_strip="xz" + cf_manpage_compress=xz + ;; +esac +done + +echo "$as_me:29371: checking for man page renaming" >&5 +echo $ECHO_N "checking for man page renaming... $ECHO_C" >&6 + +# Check whether --with-manpage-renames or --without-manpage-renames was given. +if test "${with_manpage_renames+set}" = set; then + withval="$with_manpage_renames" + MANPAGE_RENAMES=$withval +else + MANPAGE_RENAMES=yes +fi; + +case ".$MANPAGE_RENAMES" in +(.no) + ;; +(.|.yes) + # Debian 'man' program? + if test -f /etc/debian_version ; then + MANPAGE_RENAMES=man/man_db.renames + else + MANPAGE_RENAMES=no + fi + ;; +esac + +if test "$MANPAGE_RENAMES" = man/man_db.renames ; then + MANPAGE_RENAMES=`pwd`/$MANPAGE_RENAMES +elif test "$MANPAGE_RENAMES" = no ; then + : +elif test ! -f "$MANPAGE_RENAMES" ; then + { { echo "$as_me:29400: error: not a filename: $MANPAGE_RENAMES" >&5 +echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;} + { (exit 1); exit 1; }; } +fi + +echo "$as_me:29405: result: $MANPAGE_RENAMES" >&5 +echo "${ECHO_T}$MANPAGE_RENAMES" >&6 + +echo "$as_me:29408: checking if man page aliases will be installed" >&5 +echo $ECHO_N "checking if man page aliases will be installed... $ECHO_C" >&6 + +# Check whether --with-manpage-aliases or --without-manpage-aliases was given. +if test "${with_manpage_aliases+set}" = set; then + withval="$with_manpage_aliases" + MANPAGE_ALIASES=$withval +else + MANPAGE_ALIASES=yes +fi; + +echo "$as_me:29419: result: $MANPAGE_ALIASES" >&5 +echo "${ECHO_T}$MANPAGE_ALIASES" >&6 + +case "x$LN_S" in +(xln*) + cf_use_symlinks=yes + ;; +(*) + cf_use_symlinks=no + ;; +esac + +MANPAGE_SYMLINKS=no +if test "$MANPAGE_ALIASES" = yes ; then +echo "$as_me:29433: checking if man page symlinks should be used" >&5 +echo $ECHO_N "checking if man page symlinks should be used... $ECHO_C" >&6 + +# Check whether --with-manpage-symlinks or --without-manpage-symlinks was given. +if test "${with_manpage_symlinks+set}" = set; then + withval="$with_manpage_symlinks" + MANPAGE_SYMLINKS=$withval +else + MANPAGE_SYMLINKS=$cf_use_symlinks +fi; + +if test "$cf_use_symlinks" = no; then +if test "$MANPAGE_SYMLINKS" = yes ; then + { echo "$as_me:29446: WARNING: cannot make symlinks" >&5 +echo "$as_me: WARNING: cannot make symlinks" >&2;} + MANPAGE_SYMLINKS=no +fi +fi + +echo "$as_me:29452: result: $MANPAGE_SYMLINKS" >&5 +echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6 +fi + +echo "$as_me:29456: checking for man page tbl" >&5 +echo $ECHO_N "checking for man page tbl... $ECHO_C" >&6 + +# Check whether --with-manpage-tbl or --without-manpage-tbl was given. +if test "${with_manpage_tbl+set}" = set; then + withval="$with_manpage_tbl" + MANPAGE_TBL=$withval +else + MANPAGE_TBL=no +fi; + +echo "$as_me:29467: result: $MANPAGE_TBL" >&5 +echo "${ECHO_T}$MANPAGE_TBL" >&6 + +if test "$prefix" = "NONE" ; then + cf_prefix="$ac_default_prefix" +else + cf_prefix="$prefix" +fi + +test ! -d man && mkdir man + +cf_edit_man=./edit_man.sh +cf_man_alias=`pwd`/man_alias.sed + +cat >$cf_edit_man <<CF_EOF +#!$SHELL +# generated by "configure" from the CF_MAN_PAGES macro in "aclocal.m4" + +prefix="$cf_prefix" +datarootdir="$datarootdir" +datadir="$datadir" + +NCURSES_MAJOR="$NCURSES_MAJOR" +NCURSES_MINOR="$NCURSES_MINOR" +NCURSES_PATCH="$NCURSES_PATCH" + +NCURSES_OSPEED="$NCURSES_OSPEED" +TERMINFO="$TERMINFO" +TERMINFO_DIRS="$TERMINFO_DIRS" + +INSTALL="$INSTALL" +INSTALL_DATA="$INSTALL_DATA" + +transform="$program_transform_name" + +TMP=\${TMPDIR:=/tmp}/man\$\$ +trap "rm -f \$TMP; exit 1" 1 2 3 15 +trap "rm -f \$TMP" 0 + +form=\$1 +shift || exit 1 + +verb=\$1 +shift || exit 1 + +mandir=\$1 +shift || exit 1 + +srcdir=\$1 +top_srcdir=\$srcdir/.. +shift || exit 1 + +if test "\$form" = normal ; then + if test "$cf_manpage_format" = yes ; then + if test "$cf_manpage_inboth" = no ; then + $SHELL "\$0" format "\$verb" "\$mandir" "\$srcdir" "\$@" + exit $? + fi + fi + cf_subdir=\$mandir/man + cf_tables=$MANPAGE_TBL +else + cf_subdir=\$mandir/cat + cf_tables=yes +fi + +# process the list of source-files +for i in "\$@" ; do +case \$i in +(*.orig|*.rej) ;; +(*.[0-9]*) + section=\`expr "\$i" : '.*\\.\\([0-9]\\)[xm]*'\`; + if test "\$verb" = installing ; then + if test ! -d "\$cf_subdir\${section}" ; then + mkdir -p "\$cf_subdir\$section" + fi + fi + + # replace variables in man page + if test ! -f "$cf_man_alias" ; then +cat >>$cf_man_alias <<-CF_EOF2 + s,@DATADIR@,\$datadir,g + s,@TERMINFO@,\${TERMINFO:="no default value"},g + s,@TERMINFO_DIRS@,\${TERMINFO_DIRS:="no default value"},g + s,@NCURSES_MAJOR@,\${NCURSES_MAJOR:="no default value"},g + s,@NCURSES_MINOR@,\${NCURSES_MINOR:="no default value"},g + s,@NCURSES_PATCH@,\${NCURSES_PATCH:="no default value"},g + s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g +CF_EOF + + for cf_name in captoinfo clear infocmp infotocap reset tabs tic toe tput tset + do + cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + cf_name=`echo "$cf_name" | sed "$program_transform_name"` +cat >>$cf_edit_man <<-CF_EOF + s,@$cf_NAME@,$cf_name,g +CF_EOF + done + +cat >>$cf_edit_man <<CF_EOF +CF_EOF2 + echo "...made $cf_man_alias" + fi + + aliases= + cf_source=\`basename "\$i"\` + cf_full_alias=\$cf_source + test ! -f "\$cf_full_alias" && cf_full_alias="\$srcdir/\$cf_full_alias" + if test ! -f "\$cf_full_alias" ; then + echo ".. skipped \$cf_source" + continue + fi +CF_EOF + +if test "$MANPAGE_ALIASES" != no ; then +cat >>$cf_edit_man <<CF_EOF + nCurses=ignore.3x + cf_part_alias=\`echo \$cf_full_alias| sed -e 's,^.*/,,'\` + test "$with_curses_h" = yes && nCurses=ncurses.3x + aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$cf_full_alias" |sed -f "$cf_man_alias" | sort -u; test "\$cf_part_alias" = "\$nCurses" && echo curses\` +CF_EOF +fi + +if test "$MANPAGE_RENAMES" = no ; then +cat >>$cf_edit_man <<CF_EOF + # perform program transformations for section 1 man pages + if test \$section = 1 ; then + cf_target=\$cf_subdir\${section}/\`echo \$cf_source|sed "\${transform}"\` + else + cf_target=\$cf_subdir\${section}/\$cf_source + fi +CF_EOF +else +cat >>$cf_edit_man <<CF_EOF + cf_target=\`grep "^\$cf_source" $MANPAGE_RENAMES | $AWK '{print \$2}'\` + if test -z "\$cf_target" ; then + echo "? missing rename for \$cf_source" + cf_target="\$cf_source" + fi + cf_target="\$cf_subdir\${section}/\${cf_target}" + +CF_EOF +fi + +cat >>$cf_edit_man <<CF_EOF + sed -f "$cf_man_alias" \\ +CF_EOF + +if test "$MANPAGE_RENAMES" != no ; then +cat >>$cf_edit_man <<CF_EOF + < "\$i" | sed -f `pwd`/edit_man.sed >\$TMP +CF_EOF +else +cat >>$cf_edit_man <<CF_EOF + < "\$i" >\$TMP +CF_EOF +fi + +cat >>$cf_edit_man <<CF_EOF +if test $cf_cv_tbl_x_option_okay != yes ; then + # Remove column modifier 'x' from table descriptions if the + # system's tbl(1) doesn't support it. + sed -e '/^\.TS/,/\.$/s@x[.]@.@' \$TMP >\$TMP.unx + mv \$TMP.unx \$TMP +fi +CF_EOF + +cat >>$cf_edit_man <<CF_EOF +if test \$cf_tables = yes ; then + tbl \$TMP >\$TMP.out + mv \$TMP.out \$TMP +fi +CF_EOF + +if test "$with_overwrite" != yes ; then +cat >>$cf_edit_man <<CF_EOF + sed -e "/\\#[ ]*include/s,<curses.h,<ncurses$ABI_SUFFIX/curses.h," \ + -e "/\\#[ ]*include/s,<term.h,<ncurses$ABI_SUFFIX/term.h," \ + -e "/\\#[ ]*include/s,<form.h,<ncurses$ABI_SUFFIX/form.h," \ + -e "/\\#[ ]*include/s,<menu.h,<ncurses$ABI_SUFFIX/menu.h," \ + -e "/\\#[ ]*include/s,<panel.h,<ncurses$ABI_SUFFIX/panel.h," \ + -e "/\\#[ ]*include/s,<unctrl.h,<ncurses$ABI_SUFFIX/unctrl.h," \ + < \$TMP >\$TMP.out + mv \$TMP.out \$TMP +CF_EOF +fi + +if test "$with_curses_h" != yes ; then +cat >>$cf_edit_man <<CF_EOF + sed -e "/\\#[ ]*include/s,curses.h,ncurses.h," \ + < \$TMP >\$TMP.out + mv \$TMP.out \$TMP +CF_EOF +fi + +cat >>$cf_edit_man <<CF_EOF + if test "\$form" = format ; then + nroff -man \$TMP >\$TMP.out + mv \$TMP.out \$TMP + fi +CF_EOF + +if test -n "$cf_manpage_compress" ; then +cat >>$cf_edit_man <<CF_EOF + if test "\$verb" = installing ; then + if ( "$cf_manpage_compress" $cf_manpage_coptions -f \$TMP ) + then + mv \$TMP.$cf_manpage_so_strip \$TMP + fi + fi + cf_target="\$cf_target.$cf_manpage_so_strip" +CF_EOF +fi + +case "$MANPAGE_FORMAT" in +(*BSDI*) +cat >>$cf_edit_man <<CF_EOF + if test "\$form" = format ; then + # BSDI installs only .0 suffixes in the cat directories + cf_target="\`echo \$cf_target|sed -e 's/\\.[1-9]\\+[a-z]*/.0/'\`" + fi +CF_EOF + ;; +esac + +cat >>$cf_edit_man <<CF_EOF + suffix=\`basename "\$cf_target" | sed -e 's%^[^.]*%%'\` + extra_suffix= + if test -n "$EXTRA_SUFFIX" ; then + case \$cf_target in + (*${EXTRA_SUFFIX}\$suffix) + extra_suffix="$EXTRA_SUFFIX" + ;; + esac + fi + if test "\$verb" = installing ; then + echo "\$verb \$cf_target" + \$INSTALL_DATA \$TMP "\$cf_target" + test -d "\$cf_subdir\${section}" && + test -n "\$aliases" && ( + cd "\$cf_subdir\${section}" && ( + cf_source=\`echo "\$cf_target" |sed -e 's%^.*/\\([^/][^/]*/[^/][^/]*$\\)%\\1%'\` + test -n "$cf_manpage_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_manpage_so_strip\$%%'\` + cf_target=\`basename "\$cf_target"\` + for cf_alias in \$aliases + do + if test "\$section" = 1 ; then + cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\` + fi + cf_alias="\${cf_alias}\${extra_suffix}" + + if test "$MANPAGE_SYMLINKS" = yes ; then + if test -f "\$cf_alias\${suffix}" ; then + if ( cmp -s "\$cf_target" "\$cf_alias\${suffix}" ) + then + continue + fi + fi + echo ".. \$verb alias \$cf_alias\${suffix}" +CF_EOF +case "x$LN_S" in +(*-f) +cat >>$cf_edit_man <<CF_EOF + $LN_S "\$cf_target" "\$cf_alias\${suffix}" +CF_EOF + ;; +(*) +cat >>$cf_edit_man <<CF_EOF + rm -f "\$cf_alias\${suffix}" + $LN_S "\$cf_target" "\$cf_alias\${suffix}" +CF_EOF + ;; +esac +cat >>$cf_edit_man <<CF_EOF + elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then + echo ".so \$cf_source" >\$TMP +CF_EOF +if test -n "$cf_manpage_compress" ; then +cat >>$cf_edit_man <<CF_EOF + if test -n "$cf_manpage_so_strip" ; then + "$cf_manpage_compress" $cf_manpage_coptions -f \$TMP + mv \$TMP.$cf_manpage_so_strip \$TMP + fi +CF_EOF +fi +cat >>$cf_edit_man <<CF_EOF + echo ".. \$verb alias \$cf_alias\${suffix}" + rm -f "\$cf_alias\${suffix}" + \$INSTALL_DATA \$TMP "\$cf_alias\${suffix}" + fi + done + ) + ) + elif test "\$verb" = removing ; then + test -f "\$cf_target" && ( + echo "\$verb \$cf_target" + rm -f "\$cf_target" + ) + test -d "\$cf_subdir\${section}" && + test -n "\$aliases" && ( + cd "\$cf_subdir\${section}" && ( + for cf_alias in \$aliases + do + if test "\$section" = 1 ; then + cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\` + fi + cf_alias="\${cf_alias}\${extra_suffix}" + + echo ".. \$verb alias \$cf_alias\${suffix}" + rm -f "\$cf_alias\${suffix}" + done + ) + ) + else +# echo ".hy 0" + cat \$TMP + fi + ;; +esac +done + +if test "$cf_manpage_inboth" = yes ; then +if test "\$form" != format ; then + $SHELL "\$0" format "\$verb" "\$mandir" "\$srcdir" "\$@" +fi +fi + +exit 0 +CF_EOF +chmod 755 "$cf_edit_man" + ################################################################################ test "x$use_database" = xyes && \ SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in" @@ -29289,7 +29831,7 @@ case "$cf_cv_system_name" in (*-D_XOPEN_SOURCE_EXTENDED*) test -n "$verbose" && echo " moving _XOPEN_SOURCE_EXTENDED to work around g++ problem" 1>&6 -echo "${as_me:-configure}:29292: testing moving _XOPEN_SOURCE_EXTENDED to work around g++ problem ..." 1>&5 +echo "${as_me:-configure}:29834: testing moving _XOPEN_SOURCE_EXTENDED to work around g++ problem ..." 1>&5 CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED" CPPFLAGS=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'` @@ -29300,7 +29842,7 @@ esac # Help to automatically enable the extended curses features when using either # the *-config or the ".pc" files by adding defines. -echo "$as_me:29303: checking for defines to add to ncurses${USE_CFG_SUFFIX}${cf_config_suffix}-config script" >&5 +echo "$as_me:29845: checking for defines to add to ncurses${USE_CFG_SUFFIX}${cf_config_suffix}-config script" >&5 echo $ECHO_N "checking for defines to add to ncurses${USE_CFG_SUFFIX}${cf_config_suffix}-config script... $ECHO_C" >&6 PKG_CFLAGS= for cf_loop1 in $CPPFLAGS_after_XOPEN @@ -29316,9 +29858,20 @@ do done test "$cf_found" = no && PKG_CFLAGS="$PKG_CFLAGS $cf_loop1" done -echo "$as_me:29319: result: $PKG_CFLAGS" >&5 +echo "$as_me:29861: result: $PKG_CFLAGS" >&5 echo "${ECHO_T}$PKG_CFLAGS" >&6 +case "$cf_cv_system_name" in +(cygwin*|msys*|mingw32*|mingw64|os2*) + GLOB_FULLPATH_POSIX='/*' + GLOB_FULLPATH_OTHER='[a-zA-Z]:[\\/]*' + ;; +(*) + GLOB_FULLPATH_POSIX='/*' + GLOB_FULLPATH_OTHER=$GLOB_FULLPATH_POSIX + ;; +esac + # AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this. case "x$NCURSES_OSPEED" in (*short*) @@ -29377,7 +29930,7 @@ then cf_filter_syms=$cf_dft_filter_syms test -n "$verbose" && echo " will map symbols to ABI=$cf_cv_abi_default" 1>&6 -echo "${as_me:-configure}:29380: testing will map symbols to ABI=$cf_cv_abi_default ..." 1>&5 +echo "${as_me:-configure}:29933: testing will map symbols to ABI=$cf_cv_abi_default ..." 1>&5 fi @@ -29404,7 +29957,7 @@ fi # This is used for the *-config script and *.pc data files. -echo "$as_me:29407: checking for linker search path" >&5 +echo "$as_me:29960: checking for linker search path" >&5 echo $ECHO_N "checking for linker search path... $ECHO_C" >&6 if test "${cf_cv_ld_searchpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -29452,7 +30005,7 @@ then cf_pathlist="$cf_pathlist /lib /usr/lib" ;; (*) - { echo "$as_me:29455: WARNING: problem with Solaris architecture" >&5 + { echo "$as_me:30008: WARNING: problem with Solaris architecture" >&5 echo "$as_me: WARNING: problem with Solaris architecture" >&2;} ;; esac @@ -29493,13 +30046,17 @@ done test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib fi -echo "$as_me:29496: result: $cf_cv_ld_searchpath" >&5 +echo "$as_me:30049: result: $cf_cv_ld_searchpath" >&5 echo "${ECHO_T}$cf_cv_ld_searchpath" >&6 LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'` -ac_config_files="$ac_config_files include/MKterm.h.awk include/curses.head:include/curses.h.in include/ncurses_dll.h include/termcap.h include/unctrl.h man/man_db.renames $SUB_MAKEFILES Makefile" +ac_config_files="$ac_config_files include/MKterm.h.awk include/curses.head:include/curses.h.in include/ncurses_dll.h include/nc_win32.h include/termcap.h include/unctrl.h man/MKterminfo.tmp:man/MKterminfo.sh man/man_db.renames $SUB_MAKEFILES Makefile" + ac_config_commands="$ac_config_commands default" + +DEFS=-DHAVE_CONFIG_H + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -29579,7 +30136,7 @@ DEFS=-DHAVE_CONFIG_H : "${CONFIG_STATUS=./config.status}" ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:29582: creating $CONFIG_STATUS" >&5 +{ echo "$as_me:30139: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >"$CONFIG_STATUS" <<_ACEOF #! $SHELL @@ -29715,7 +30272,7 @@ EOF cat >>"$CONFIG_STATUS" <<EOF ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.52.20231210, +configured by $0, generated by GNU Autoconf 2.52.20250126, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 2003-2022,2023 Thomas E. Dickey @@ -29760,7 +30317,7 @@ cat >>"$CONFIG_STATUS" <<\EOF echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header - { { echo "$as_me:29763: error: ambiguous option: $1 + { { echo "$as_me:30320: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} @@ -29779,7 +30336,7 @@ Try \`$0 --help' for more information." >&2;} ac_need_defaults=false;; # This is an error. - -*) { { echo "$as_me:29782: error: unrecognized option: $1 + -*) { { echo "$as_me:30339: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} @@ -29798,7 +30355,7 @@ cat >&5 << _ACEOF ## Running config.status. ## ## ----------------------- ## -This file was extended by $as_me 2.52.20231210, executed with +This file was extended by $as_me 2.52.20250126, executed with CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS @@ -29825,6 +30382,8 @@ DFT_LWR_MODEL="$DFT_LWR_MODEL" ECHO_LD="$ECHO_LD" EXTRA_SUFFIX="$EXTRA_SUFFIX" FORM_NAME="$FORM_NAME" +GLOB_FULLPATH_OTHER="$GLOB_FULLPATH_OTHER" +GLOB_FULLPATH_POSIX="$GLOB_FULLPATH_POSIX" LDCONFIG="$LDCONFIG" LIBTOOL_VERSION="$LIBTOOL_VERSION" LIB_NAME="$LIB_NAME" @@ -29855,7 +30414,7 @@ TINFO_SUFFIX="$TINFO_SUFFIX" UNALTERED_SYMS="$UNALTERED_SYMS" USE_ARG_SUFFIX="$USE_ARG_SUFFIX" USE_CFG_SUFFIX="$USE_CFG_SUFFIX" -USE_LIB_SUFFIX="$USE_LIB_SUFFIX" +ABI_SUFFIX="$ABI_SUFFIX" USE_OLD_MAKERULES="$USE_OLD_MAKERULES" WILDCARD_SYMS="$WILDCARD_SYMS" WITH_CURSES_H="$with_curses_h" @@ -29902,14 +30461,16 @@ do "include/MKterm.h.awk" ) CONFIG_FILES="$CONFIG_FILES include/MKterm.h.awk" ;; "include/curses.head" ) CONFIG_FILES="$CONFIG_FILES include/curses.head:include/curses.h.in" ;; "include/ncurses_dll.h" ) CONFIG_FILES="$CONFIG_FILES include/ncurses_dll.h" ;; + "include/nc_win32.h" ) CONFIG_FILES="$CONFIG_FILES include/nc_win32.h" ;; "include/termcap.h" ) CONFIG_FILES="$CONFIG_FILES include/termcap.h" ;; "include/unctrl.h" ) CONFIG_FILES="$CONFIG_FILES include/unctrl.h" ;; + "man/MKterminfo.tmp" ) CONFIG_FILES="$CONFIG_FILES man/MKterminfo.tmp:man/MKterminfo.sh" ;; "man/man_db.renames" ) CONFIG_FILES="$CONFIG_FILES man/man_db.renames" ;; "$SUB_MAKEFILES" ) CONFIG_FILES="$CONFIG_FILES $SUB_MAKEFILES" ;; "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; "include/ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/ncurses_cfg.h:include/ncurses_cfg.hin" ;; - *) { { echo "$as_me:29912: error: invalid argument: $ac_config_target" >&5 + *) { { echo "$as_me:30473: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac @@ -30009,6 +30570,7 @@ s,@VERSION@,$VERSION,;t t s,@VERSION_MAJOR@,$VERSION_MAJOR,;t t s,@VERSION_MINOR@,$VERSION_MINOR,;t t s,@VERSION_PATCH@,$VERSION_PATCH,;t t +s,@PROGRAM@,$PROGRAM,;t t s,@PACKAGE@,$PACKAGE,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t @@ -30023,6 +30585,13 @@ s,@target_cpu@,$target_cpu,;t t s,@target_vendor@,$target_vendor,;t t s,@target_os@,$target_os,;t t s,@FGREP@,$FGREP,;t t +s,@cf_TEMP_gnat@,$cf_TEMP_gnat,;t t +s,@M4_exists@,$M4_exists,;t t +s,@cf_ada_make@,$cf_ada_make,;t t +s,@cf_ada_config@,$cf_ada_config,;t t +s,@cf_ada_config_Ada@,$cf_ada_config_Ada,;t t +s,@cf_ada_config_C@,$cf_ada_config_C,;t t +s,@cf_cv_path_gnatgcc@,$cf_cv_path_gnatgcc,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t @@ -30040,6 +30609,8 @@ s,@AWK@,$AWK,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@GLOB_FULLPATH_POSIX@,$GLOB_FULLPATH_POSIX,;t t +s,@GLOB_FULLPATH_OTHER@,$GLOB_FULLPATH_OTHER,;t t s,@LINT@,$LINT,;t t s,@LINT_OPTS@,$LINT_OPTS,;t t s,@LINT_LIBS@,$LINT_LIBS,;t t @@ -30057,7 +30628,6 @@ s,@CTAGS@,$CTAGS,;t t s,@ETAGS@,$ETAGS,;t t s,@MAKE_LOWER_TAGS@,$MAKE_LOWER_TAGS,;t t s,@MAKE_UPPER_TAGS@,$MAKE_UPPER_TAGS,;t t -s,@cf_cv_makeflags@,$cf_cv_makeflags,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@LD@,$LD,;t t @@ -30068,6 +30638,8 @@ s,@NM@,$NM,;t t s,@ac_ct_NM@,$ac_ct_NM,;t t s,@ARFLAGS@,$ARFLAGS,;t t s,@DESTDIR@,$DESTDIR,;t t +s,@SET_DESTDIR@,$SET_DESTDIR,;t t +s,@MERGE_PREFIX@,$MERGE_PREFIX,;t t s,@BUILD_CC@,$BUILD_CC,;t t s,@BUILD_CPP@,$BUILD_CPP,;t t s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t @@ -30120,6 +30692,7 @@ s,@EXPORT_SYMS@,$EXPORT_SYMS,;t t s,@RESULTING_SYMS@,$RESULTING_SYMS,;t t s,@VERSIONED_SYMS@,$VERSIONED_SYMS,;t t s,@WILDCARD_SYMS@,$WILDCARD_SYMS,;t t +s,@REQUIRE_PKG@,$REQUIRE_PKG,;t t s,@cf_ldd_prog@,$cf_ldd_prog,;t t s,@EXTRA_PKG_LDFLAGS@,$EXTRA_PKG_LDFLAGS,;t t s,@EXTRA_SUFFIX@,$EXTRA_SUFFIX,;t t @@ -30162,21 +30735,18 @@ s,@NCURSES_MMASK_T@,$NCURSES_MMASK_T,;t t s,@NCURSES_CCHARW_MAX@,$NCURSES_CCHARW_MAX,;t t s,@NCURSES_SBOOL@,$NCURSES_SBOOL,;t t s,@NCURSES_TPARM_ARG@,$NCURSES_TPARM_ARG,;t t -s,@cf_manpage_format@,$cf_manpage_format,;t t -s,@cf_manpage_inboth@,$cf_manpage_inboth,;t t -s,@cf_manpage_so_strip@,$cf_manpage_so_strip,;t t -s,@cf_manpage_compress@,$cf_manpage_compress,;t t -s,@cf_manpage_coptions@,$cf_manpage_coptions,;t t -s,@MANPAGE_RENAMES@,$MANPAGE_RENAMES,;t t s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t s,@GENERATED_EXT_FUNCS@,$GENERATED_EXT_FUNCS,;t t s,@NCURSES_SP_FUNCS@,$NCURSES_SP_FUNCS,;t t s,@GENERATED_SP_FUNCS@,$GENERATED_SP_FUNCS,;t t s,@NCURSES_CONST@,$NCURSES_CONST,;t t s,@NCURSES_EXT_COLORS@,$NCURSES_EXT_COLORS,;t t +s,@NCURSES_RGB_COLORS@,$NCURSES_RGB_COLORS,;t t s,@NCURSES_MOUSE_VERSION@,$NCURSES_MOUSE_VERSION,;t t s,@cf_cv_enable_sigwinch@,$cf_cv_enable_sigwinch,;t t s,@NCURSES_XNAMES@,$NCURSES_XNAMES,;t t +s,@USE_NAMED_PIPES@,$USE_NAMED_PIPES,;t t +s,@INTERNALS_HDR@,$INTERNALS_HDR,;t t s,@PTHREAD@,$PTHREAD,;t t s,@cf_cv_enable_reentrant@,$cf_cv_enable_reentrant,;t t s,@cf_cv_enable_opaque@,$cf_cv_enable_opaque,;t t @@ -30190,8 +30760,6 @@ s,@NCURSES_IMPEXP@,$NCURSES_IMPEXP,;t t s,@NCURSES_CXX_IMPEXP@,$NCURSES_CXX_IMPEXP,;t t s,@NCURSES_INTEROP_FUNCS@,$NCURSES_INTEROP_FUNCS,;t t s,@NCURSES_WGETCH_EVENTS@,$NCURSES_WGETCH_EVENTS,;t t -s,@EXP_WIN32_DRIVER@,$EXP_WIN32_DRIVER,;t t -s,@INTERNALS_HDR@,$INTERNALS_HDR,;t t s,@ECHO_LT@,$ECHO_LT,;t t s,@ECHO_LD@,$ECHO_LD,;t t s,@RULE_CC@,$RULE_CC,;t t @@ -30215,18 +30783,14 @@ s,@cf_cv_typeof_mmask_t@,$cf_cv_typeof_mmask_t,;t t s,@HAVE_VSSCANF@,$HAVE_VSSCANF,;t t s,@TEST_LIBS@,$TEST_LIBS,;t t s,@TEST_LIBS2@,$TEST_LIBS2,;t t +s,@USE_STDBOOL_H@,$USE_STDBOOL_H,;t t +s,@USE_BUILTIN_BOOL@,$USE_BUILTIN_BOOL,;t t s,@CXXCPP@,$CXXCPP,;t t s,@CXXLDFLAGS@,$CXXLDFLAGS,;t t s,@CXX_AR@,$CXX_AR,;t t s,@CXX_ARFLAGS@,$CXX_ARFLAGS,;t t s,@CXXLIBS@,$CXXLIBS,;t t s,@USE_CXX_BOOL@,$USE_CXX_BOOL,;t t -s,@cf_TEMP_gnat@,$cf_TEMP_gnat,;t t -s,@M4_exists@,$M4_exists,;t t -s,@cf_ada_make@,$cf_ada_make,;t t -s,@cf_ada_config@,$cf_ada_config,;t t -s,@cf_ada_config_Ada@,$cf_ada_config_Ada,;t t -s,@cf_ada_config_C@,$cf_ada_config_C,;t t s,@GNATPREP_OPTS@,$GNATPREP_OPTS,;t t s,@cf_compile_generics@,$cf_compile_generics,;t t s,@cf_generic_objects@,$cf_generic_objects,;t t @@ -30250,7 +30814,7 @@ s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t s,@CXX_LIB_SUFFIX@,$CXX_LIB_SUFFIX,;t t s,@USE_ARG_SUFFIX@,$USE_ARG_SUFFIX,;t t s,@USE_CFG_SUFFIX@,$USE_CFG_SUFFIX,;t t -s,@USE_LIB_SUFFIX@,$USE_LIB_SUFFIX,;t t +s,@ABI_SUFFIX@,$ABI_SUFFIX,;t t s,@TICS_ARG_SUFFIX@,$TICS_ARG_SUFFIX,;t t s,@TICS_DEP_SUFFIX@,$TICS_DEP_SUFFIX,;t t s,@TICS_LIB_SUFFIX@,$TICS_LIB_SUFFIX,;t t @@ -30283,8 +30847,17 @@ s,@DIRS_TO_MAKE@,$DIRS_TO_MAKE,;t t s,@NCURSES_SHLIB2@,$NCURSES_SHLIB2,;t t s,@HAVE_TCGETATTR@,$HAVE_TCGETATTR,;t t s,@HAVE_STDINT_H@,$HAVE_STDINT_H,;t t +s,@HAVE_SGTTY_H@,$HAVE_SGTTY_H,;t t s,@HAVE_TERMIO_H@,$HAVE_TERMIO_H,;t t s,@HAVE_TERMIOS_H@,$HAVE_TERMIOS_H,;t t +s,@NROFF_TBL@,$NROFF_TBL,;t t +s,@TBL_X_OPTION@,$TBL_X_OPTION,;t t +s,@cf_manpage_format@,$cf_manpage_format,;t t +s,@cf_manpage_inboth@,$cf_manpage_inboth,;t t +s,@cf_manpage_so_strip@,$cf_manpage_so_strip,;t t +s,@cf_manpage_compress@,$cf_manpage_compress,;t t +s,@cf_manpage_coptions@,$cf_manpage_coptions,;t t +s,@MANPAGE_RENAMES@,$MANPAGE_RENAMES,;t t s,@cross_compiling@,$cross_compiling,;t t s,@MAKE_TESTS@,$MAKE_TESTS,;t t s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t @@ -30325,14 +30898,14 @@ EOF # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat "$tmp"/subs.frag) >"$tmp"/subs-$ac_sed_frag.sed + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && sed -e 's/\\\\*$//g' -e 's/$/\\/' -e 's/;t t\\/;t t/' -e 't' -e '3,'$ac_max_sed_lines's/$/\\/' "$tmp"/subs.frag) >"$tmp"/subs-$ac_sed_frag.sed # It is possible to make a multiline substitution using escaped newlines. # Ensure that we do not split the substitution between script fragments. ac_BEG=$ac_end ac_END=`expr "$ac_end" + "$ac_max_sed_lines"` sed "1,${ac_BEG}d; ${ac_END}p; q" "$tmp"/subs.sed >"$tmp"/subs.next if test -s "$tmp"/subs.next; then - grep '^s,@[^@,][^@,]*@,.*\\$' "$tmp"/subs.next >"$tmp"/subs.edit + grep '^s,@[^@,][^@,]*@,.*$' "$tmp"/subs.next | grep -v '^s,@.*;t t$' >"$tmp"/subs.edit if test ! -s "$tmp"/subs.edit; then grep "^s,@[^@,][^@,]*@,.*,;t t$" "$tmp"/subs.next >"$tmp"/subs.edit if test ! -s "$tmp"/subs.edit; then @@ -30430,7 +31003,7 @@ done; } esac if test x"$ac_file" != x-; then - { echo "$as_me:30433: creating $ac_file" >&5 + { echo "$as_me:31006: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi @@ -30448,7 +31021,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo "$tmp"/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:30451: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:31024: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; @@ -30461,7 +31034,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo "$srcdir/$f" else # /dev/null tree - { { echo "$as_me:30464: error: cannot find input file: $f" >&5 + { { echo "$as_me:31037: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -30477,7 +31050,7 @@ cat >>"$CONFIG_STATUS" <<\EOF if test -n "$ac_seen"; then ac_used=`grep '@datarootdir@' "$ac_item"` if test -z "$ac_used"; then - { echo "$as_me:30480: WARNING: datarootdir was used implicitly but not set: + { echo "$as_me:31053: WARNING: datarootdir was used implicitly but not set: $ac_seen" >&5 echo "$as_me: WARNING: datarootdir was used implicitly but not set: $ac_seen" >&2;} @@ -30486,7 +31059,7 @@ $ac_seen" >&2;} fi ac_seen=`grep '${datarootdir}' "$ac_item"` if test -n "$ac_seen"; then - { echo "$as_me:30489: WARNING: datarootdir was used explicitly but not set: + { echo "$as_me:31062: WARNING: datarootdir was used explicitly but not set: $ac_seen" >&5 echo "$as_me: WARNING: datarootdir was used explicitly but not set: $ac_seen" >&2;} @@ -30531,7 +31104,7 @@ cat >>"$CONFIG_STATUS" <<\EOF ac_init=`$EGREP '[ ]*'$ac_name'[ ]*=' "$ac_file"` if test -z "$ac_init"; then ac_seen=`echo "$ac_seen" |sed -e 's,^,'"$ac_file"':,'` - { echo "$as_me:30534: WARNING: Variable $ac_name is used but was not set: + { echo "$as_me:31107: WARNING: Variable $ac_name is used but was not set: $ac_seen" >&5 echo "$as_me: WARNING: Variable $ac_name is used but was not set: $ac_seen" >&2;} @@ -30542,7 +31115,7 @@ $ac_seen" >&2;} $EGREP -n '@[A-Z_][A-Z_0-9]+@' "$ac_file" >>"$tmp"/out if test -s "$tmp"/out; then ac_seen=`sed -e 's,^,'"$ac_file"':,' < "$tmp"/out` - { echo "$as_me:30545: WARNING: Some variables may not be substituted: + { echo "$as_me:31118: WARNING: Some variables may not be substituted: $ac_seen" >&5 echo "$as_me: WARNING: Some variables may not be substituted: $ac_seen" >&2;} @@ -30591,7 +31164,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue * ) ac_file_in=$ac_file.in ;; esac - test x"$ac_file" != x- && { echo "$as_me:30594: creating $ac_file" >&5 + test x"$ac_file" != x- && { echo "$as_me:31167: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the @@ -30602,7 +31175,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo "$tmp"/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:30605: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:31178: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -30615,7 +31188,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo "$srcdir/$f" else # /dev/null tree - { { echo "$as_me:30618: error: cannot find input file: $f" >&5 + { { echo "$as_me:31191: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -30673,7 +31246,7 @@ cat >>"$CONFIG_STATUS" <<\EOF rm -f "$tmp"/in if test x"$ac_file" != x-; then if cmp -s "$ac_file" "$tmp/config.h" 2>/dev/null; then - { echo "$as_me:30676: $ac_file is unchanged" >&5 + { echo "$as_me:31249: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ @@ -30906,7 +31479,7 @@ eval cf_libname="\$${cf_map_lib_basename}_NAME" if test "$cf_item" = shared ; then if test -n "${LIB_SUFFIX}" then - cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${ABI_SUFFIX}"'//'` else cf_shared_suffix="$cf_suffix" fi @@ -30927,16 +31500,16 @@ eval cf_libname="\$${cf_map_lib_basename}_NAME" case "$cf_cv_system_name" in (darwin*) # "w", etc? - cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix" + cf_suffix="${ABI_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix" ;; (*) cf_suffix="$cf_suffix"'.${'$cf_version_name'}' ;; esac fi - if test -n "${USE_LIB_SUFFIX}" + if test -n "${ABI_SUFFIX}" then - cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${ABI_SUFFIX}"'//'` else cf_shared_suffix="$cf_suffix" fi @@ -30988,10 +31561,10 @@ eval cf_libname="\$${cf_map_lib_basename}_NAME" cf_add_lib= case "$cf_l_parts" in (*termlib*) - cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g` + cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${ABI_SUFFIX}%${TINFO_LIB_SUFFIX}%g` ;; (*ticlib*) - cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g` + cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${ABI_SUFFIX}%${TICS_LIB_SUFFIX}%g` ;; (*) break @@ -31060,7 +31633,7 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ (cygdll|msysdll|mingw|msvcdll) test "x$with_shared_cxx" = xno && test -n "$verbose" && echo " overriding CXX_MODEL to SHARED" 1>&6 -echo "${as_me:-configure}:31063: testing overriding CXX_MODEL to SHARED ..." 1>&5 +echo "${as_me:-configure}:31636: testing overriding CXX_MODEL to SHARED ..." 1>&5 with_shared_cxx=yes ;; @@ -31170,7 +31743,7 @@ echo "${as_me:-configure}:31063: testing overriding CXX_MODEL to SHARED ..." 1>& if test "$cf_dir" = ncurses ; then case "$cf_subset" in (*base*) - cf_libname=${cf_libname}$USE_LIB_SUFFIX + cf_libname=${cf_libname}$ABI_SUFFIX ;; (*termlib*) cf_libname=$TINFO_LIB_SUFFIX @@ -31185,18 +31758,18 @@ cf_map_lib_basename=`echo "cxx" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJ eval cf_libname="\$${cf_map_lib_basename}_NAME" - cf_libname=${cf_libname}$USE_LIB_SUFFIX + cf_libname=${cf_libname}$ABI_SUFFIX else cf_map_lib_basename=`echo "$cf_dir" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` eval cf_libname="\$${cf_map_lib_basename}_NAME" - cf_libname=${cf_libname}$USE_LIB_SUFFIX + cf_libname=${cf_libname}$ABI_SUFFIX fi if test -n "${USE_ARG_SUFFIX}" ; then - # undo $USE_LIB_SUFFIX add-on in CF_LIB_SUFFIX - cf_suffix=`echo "$cf_suffix" |sed -e "s%^${USE_LIB_SUFFIX}%%"` + # undo $ABI_SUFFIX add-on in CF_LIB_SUFFIX + cf_suffix=`echo "$cf_suffix" |sed -e "s%^${ABI_SUFFIX}%%"` fi # These dependencies really are for development, not @@ -31217,8 +31790,8 @@ eval cf_libname="\$${cf_map_lib_basename}_NAME" cf_dir_suffix= old_cf_suffix="$cf_suffix" if test "$cf_cv_shlib_version_infix" = yes ; then - if test -n "$USE_LIB_SUFFIX" ; then - case "$USE_LIB_SUFFIX" in + if test -n "$ABI_SUFFIX" ; then + case "$ABI_SUFFIX" in (tw*) cf_libname=`echo "$cf_libname" | sed 's/tw'$EXTRA_SUFFIX'$//'` cf_suffix=`echo "$cf_suffix" | sed 's/^tw'$EXTRA_SUFFIX'//'` @@ -31248,8 +31821,8 @@ eval cf_libname="\$${cf_map_lib_basename}_NAME" traces=$LIB_TRACING \ MODEL=$cf_ITEM \ CXX_MODEL=$CXX_MODEL \ + ABI_SUFFIX=$ABI_SUFFIX \ LIB_SUFFIX=$LIB_SUFFIX \ - USE_LIB_SUFFIX=$USE_LIB_SUFFIX \ make_phony="${cf_cv_make_PHONY:-no}" \ model=$cf_subdir \ prefix=$cf_prefix \ @@ -31427,7 +32000,7 @@ echo creating headers.sh cat >headers.sh <<CF_EOF #! $SHELL # This shell script is generated by the 'configure' script. It is invoked in a -# subdirectory of the build tree. It generates a sed-script in the parent +# subdirectory of the build tree. It generates a sed script in the parent # directory that is used to adjust includes for header files that reside in a # subdirectory of /usr/include, etc. PRG="" @@ -31446,7 +32019,7 @@ CF_EOF if test "$WITH_CURSES_H" = yes; then cat >>headers.sh <<CF_EOF case \$DST in -(/*/include/*) +($GLOB_FULLPATH_POSIX/include/*) END=\`basename \$DST\` for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\` do @@ -31463,7 +32036,7 @@ CF_EOF else cat >>headers.sh <<CF_EOF case \$DST in -(/*/include/*) +($GLOB_FULLPATH_POSIX/include/*) END=\`basename \$DST\` for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\` do @@ -31493,7 +32066,7 @@ test "\$NAME" = "curses.h" && NAME=ncurses.h CF_EOF fi cat >>headers.sh <<CF_EOF -# Just in case someone gzip'd manpages, remove the conflicting copy. +# Just in case someone gzip'd man pages, remove the conflicting copy. test -f \$DST/\$NAME.gz && rm -f \$DST/\$NAME.gz eval \$PRG \$TMPSRC \$DST/\$NAME @@ -31535,7 +32108,7 @@ CF_EOF done if test "$MANPAGE_RENAMES" != no ; then - # Construct a sed-script to perform renaming within man-pages + # Construct a sed script to perform renaming within man pages test -n "$verbose" && echo "creating edit_man.sed" test ! -d man && mkdir man FGREP="${FGREP-grep -F}" $SHELL "$srcdir/man/make_sed.sh" "$MANPAGE_RENAMES" >./edit_man.sed @@ -31575,4 +32148,5 @@ if test "$no_create" != yes; then # would make configure fail if this is the last instruction. "$ac_cs_success" || { (exit 1); exit 1; } fi + ${MAKE:-make} preinstall diff --git a/contrib/ncurses/configure.in b/contrib/ncurses/configure.in index 2d6836cb7190..ad79dc9a8a78 100644 --- a/contrib/ncurses/configure.in +++ b/contrib/ncurses/configure.in @@ -1,5 +1,5 @@ dnl*************************************************************************** -dnl Copyright 2018-2023,2024 Thomas E. Dickey * +dnl Copyright 2018-2024,2025 Thomas E. Dickey * dnl Copyright 1998-2017,2018 Free Software Foundation, Inc. * dnl * dnl Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,7 +29,7 @@ dnl*************************************************************************** dnl dnl Author: Thomas E. Dickey 1995-on dnl -dnl $Id: configure.in,v 1.779 2024/04/10 08:04:00 tom Exp $ +dnl $Id: configure.in,v 1.824 2025/12/27 00:12:13 tom Exp $ dnl Process this file with autoconf to produce a configure script. dnl dnl For additional information, see @@ -38,9 +38,10 @@ dnl https://invisible-island.net/autoconf/my-autoconf.html dnl dnl --------------------------------------------------------------------------- AC_PREREQ(2.52.20210101) -AC_REVISION($Revision: 1.779 $) -AC_INIT(ncurses/base/lib_initscr.c) -AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin) +AC_REVISION($Revision: 1.824 $) +AC_INIT +AC_CONFIG_SRCDIR([ncurses/base/lib_initscr.c]) +AC_CONFIG_HEADERS([include/ncurses_cfg.h:include/ncurses_cfg.hin]) AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this @@ -65,19 +66,7 @@ CF_ABI_DEFAULTS CF_WITH_ABI_ALTERED ### Checks for programs. -AC_ARG_WITH(ada, - [ --without-ada suppress check for Ada compiler, don't build demo], - [cf_with_ada=$withval], - [cf_with_ada=yes]) - -if test "x$cf_with_ada" = xyes -then - cf_prog_cc="gnatgcc gcc cc" -else - cf_prog_cc="gcc cc" -fi -CF_PROG_CC($cf_prog_cc) - +CF_WITH_ADA AC_PROG_CPP AC_PROG_GCC_TRADITIONAL CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS]) @@ -114,13 +103,13 @@ else save_CPPFLAGS="$CPPFLAGS" eval cf_includedir=${includedir} CPPFLAGS="$CPPFLAGS -I${cf_includedir}" - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <stdlib.h> #include <stdio.h> ], [ printf("Hello world!\n") - ], + ])], [cf_cxx_works=yes], [cf_cxx_works=no]) CPPFLAGS="$save_CPPFLAGS" @@ -268,7 +257,6 @@ fi AC_PROG_MAKE_SET CF_MAKE_PHONY CF_MAKE_TAGS -CF_MAKEFLAGS dnl These are standard among *NIX systems, but not when cross-compiling AC_CHECK_TOOL(RANLIB, ranlib, ':') @@ -277,20 +265,7 @@ AC_CHECK_TOOL(AR, ar, ar) AC_CHECK_TOOL(NM, nm, nm) CF_AR_FLAGS -dnl Special option for use by system-builders: the install-prefix is used to -dnl adjust the location into which the actual install is done, so that an -dnl archive can be built without modifying the host system's configuration. -AC_MSG_CHECKING(for an installation directory prefix) -AC_ARG_WITH(install-prefix, - [ --with-install-prefix=DESTDIR use DESTDIR as installation directory prefix], - [case "x$withval" in - (xyes|xno) - ;; - (*) DESTDIR="$withval" - ;; - esac]) -AC_MSG_RESULT([${DESTDIR:-(none)}]) -AC_SUBST(DESTDIR) +CF_INSTALL_PREFIX ############################################################################### CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:) @@ -474,13 +449,13 @@ for model in $cf_list_models ; do ;; (shared) if test "$CC_SHARED_OPTS" = "unknown"; then - AC_ERROR(Shared libraries are not supported in this version) + AC_MSG_ERROR(Shared libraries are not supported in this version) fi # workaround for inept transition to PIE vs PIC... AC_MSG_CHECKING(if current CFLAGS link properly) - AC_TRY_LINK( + AC_LINK_IFELSE([AC_LANG_PROGRAM( [#include <stdio.h>], - [printf("Hello work\\n");], + [printf("Hello work\\n");])], [cf_cflags_work=yes], [cf_cflags_work=no]) AC_MSG_RESULT($cf_cflags_work) @@ -683,42 +658,7 @@ AC_MSG_RESULT($with_xterm_new) WHICH_XTERM=$with_xterm_new AC_SUBST(WHICH_XTERM) -case $host_os in -(*linux-gnu|*cygwin|*mingw32|*msys) - want_xterm_kbs=DEL - ;; -(*) - want_xterm_kbs=BS - ;; -esac - -AC_MSG_CHECKING(if xterm backspace sends BS or DEL) -AC_ARG_WITH(xterm-kbs, - [[ --with-xterm-kbs[=XXX] specify if xterm backspace sends BS or DEL]], - [with_xterm_kbs=$withval], - [with_xterm_kbs=auto]) -case x$with_xterm_kbs in -(xyes|xno|xBS|xbs|x8) - with_xterm_kbs=BS - ;; -(xDEL|xdel|x127) - with_xterm_kbs=DEL - ;; -(xauto) - with_xterm_kbs=$want_xterm_kbs - ;; -(*) - with_xterm_kbs=$withval - ;; -esac -AC_MSG_RESULT($with_xterm_kbs) -XTERM_KBS=$with_xterm_kbs -AC_SUBST(XTERM_KBS) - -if test "x$with_xterm_kbs" != "x$want_xterm_kbs" -then - AC_MSG_WARN([expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs]) -fi +CF_WITH_XTERM_KBS MAKE_TERMINFO= if test "$use_database" = no ; then @@ -804,14 +744,14 @@ NCURSES_USE_TERMCAP=0 if test "x$with_termcap" != "xyes" ; then if test "$use_database" = no ; then if test -z "$with_fallback" ; then - AC_ERROR(You have disabled the database w/o specifying fallbacks) + AC_MSG_ERROR(You have disabled the database w/o specifying fallbacks) fi fi AC_DEFINE(PURE_TERMINFO,1,[Define to 1 if we should support only terminfo]) else if test "$with_ticlib" != no ; then - AC_ERROR(Options --with-ticlib and --enable-termcap cannot be combined) + AC_MSG_ERROR(Options --with-ticlib and --enable-termcap cannot be combined) fi NCURSES_USE_TERMCAP=1 @@ -852,6 +792,10 @@ AC_ARG_ENABLE(home-terminfo, AC_MSG_RESULT($with_home_terminfo) test "x$with_home_terminfo" = "xyes" && AC_DEFINE(USE_HOME_TERMINFO,1,[Define to 1 if $HOME/.terminfo feature is wanted]) +CF_CHECK_MULTIUSER + +if test "$cf_cv_multiuser" = yes; then + AC_MSG_CHECKING(if you want to permit root to use ncurses environment variables) AC_ARG_ENABLE(root-environ, [ --disable-root-environ restrict root use of ncurses environment variables], @@ -876,6 +820,14 @@ AC_ARG_ENABLE(setuid-environ, AC_MSG_RESULT($with_setuid_environ) test "x$with_setuid_environ" = xyes && AC_DEFINE(USE_SETUID_ENVIRON,1,[Define to 1 if setuid/setgid application is allowed to use ncurses environment]) +else + if test -n "$enable_root_environ$enable_root_access$enable_setuid_environ" + then + AC_MSG_WARN(ignoring options used only for multiuser systems) + fi + +fi # cf_cv_multiuser + ### Use option --enable-symlinks to make tic use symlinks, not hard links ### to reduce storage requirements for the terminfo database. CF_LINK_FUNCS @@ -977,7 +929,7 @@ if test "x$with_widec" = xyes ; then # with_overwrite=no NCURSES_CH_T=cchar_t - AC_CHECK_FUNCS(putwc btowc wctob wmemchr mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs) + AC_CHECK_FUNCS(putwc btowc wctob wmemchr mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs wcwidth) if test "x$ac_cv_func_putwc" != xyes ; then CF_UTF8_LIB if test "$cf_cv_utf8_lib" != no ; then @@ -1097,6 +1049,12 @@ CF_WITH_TYPE(mmask-t, NCURSES_MMASK_T, $cf_dft_mmask_t) +### option --enable-lp64 can give unexpected results +if test "$cf_cv_enable_lp64" = 1 ; then + test -n "$with_chtype" && test "$NCURSES_CHTYPE" != unsigned && AC_MSG_WARN(option --enable-lp64 overrides --with-chtype) + test -n "$with_mmask_t" && test "$NCURSES_MMASK_T" != unsigned && AC_MSG_WARN(option --enable-lp64 overrides --with-mmask-t) +fi + ### use option --with-ccharw-max to override CCHARW_MAX size AC_MSG_CHECKING(for size CCHARW_MAX) AC_ARG_WITH(ccharw-max, @@ -1137,9 +1095,6 @@ AC_MSG_RESULT($with_rcs_ids) test "x$with_rcs_ids" = xyes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 to compile-in RCS identifiers]) ############################################################################### -CF_MAN_PAGES([ captoinfo clear infocmp infotocap reset tabs tic toe tput tset ]) - -############################################################################### CF_HELP_MESSAGE(Extensions:) ### Note that some functions (such as const) are normally disabled anyway. @@ -1163,8 +1118,9 @@ if test "x$with_ext_funcs" = xyes ; then AC_DEFINE(HAVE_USE_WINDOW,1,[Define to 1 to enable use_window() function in test-programs]) AC_DEFINE(HAVE_WRESIZE,1,[Define to 1 to enable wresize() function in test-programs]) GENERATED_EXT_FUNCS=generated - test "x$with_ext_funcs" = xyes || cf_dft_ext_spfuncs=no else + cf_dft_ext_spfuncs=no + cf_dft_ext_colors=no NCURSES_EXT_FUNCS=0 GENERATED_EXT_FUNCS= fi @@ -1189,11 +1145,20 @@ fi AC_SUBST(NCURSES_SP_FUNCS) AC_SUBST(GENERATED_SP_FUNCS) +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*|*-msvc*) + cf_dft_term_driver=yes + ;; +(*) + cf_dft_term_driver=no + ;; +esac + AC_MSG_CHECKING(if you want to build with terminal-driver) AC_ARG_ENABLE(term-driver, [ --enable-term-driver enable terminal-driver], [with_term_driver=$enableval], - [with_term_driver=no]) + [with_term_driver=$cf_dft_term_driver]) AC_MSG_RESULT($with_term_driver) if test "x$with_term_driver" = xyes ; then AC_DEFINE(USE_TERM_DRIVER,1,[Define to 1 to enable terminal-driver]) @@ -1219,13 +1184,14 @@ fi AC_SUBST(NCURSES_CONST) ### use option --enable-ext-colors to turn on use of colors beyond 16. +NCURSES_EXT_COLORS=0 +NCURSES_RGB_COLORS=0 AC_MSG_CHECKING(if you want to use extended colors) AC_ARG_ENABLE(ext-colors, [ --enable-ext-colors compile for 256-color support], [with_ext_colors=$enableval], [with_ext_colors=$cf_dft_ext_colors]) AC_MSG_RESULT($with_ext_colors) -NCURSES_EXT_COLORS=0 if test "x$with_ext_colors" = xyes ; then if test "x$with_widec" != xyes ; then AC_MSG_WARN(This option applies only to wide-character library) @@ -1238,8 +1204,20 @@ if test "x$with_ext_colors" = xyes ; then AC_DEFINE(HAVE_INIT_EXTENDED_COLOR,1,[Define to 1 to enable init_extended_color() function in test-programs]) AC_DEFINE(HAVE_RESET_COLOR_PAIRS,1,[Define to 1 to enable reset_color_pairs() function in test-programs]) fi + ### use option --enable-rgb-color to extend support for direct-color + AC_MSG_CHECKING(if you want to extend support for direct color) + AC_ARG_ENABLE(rgb-color, + [ --enable-rgb-color compile for extended direct-color], + [with_rgb_color=$enableval], + [with_rgb_color=$cf_dft_rgb_color]) + AC_MSG_RESULT($with_rgb_color) + if test "x$with_rgb_color" = xyes ; then + NCURSES_RGB_COLORS=1 + AC_DEFINE(NCURSES_RGB_COLORS,1,[Define to 1 to compile for extended direct-color support]) + fi fi AC_SUBST(NCURSES_EXT_COLORS) +AC_SUBST(NCURSES_RGB_COLORS) ### use option --enable-ext-mouse to modify coding to support 5-button mice AC_MSG_CHECKING(if you want to use extended mouse encoding) @@ -1312,6 +1290,44 @@ fi AC_SUBST(NCURSES_XNAMES) ############################################################################## + +USE_NAMED_PIPES=0 +INTERNALS_HDR= + +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*|*-msvc*) + CF_CHECK_NAMED_PIPES + if test "$cf_cv_named_pipes" = yes; then + AC_MSG_CHECKING(if you want to use named pipes with -Windows driver) + AC_ARG_ENABLE(named-pipes, + [ --enable-named-pipes use named pipes with Windows driver], + [with_named_pipes=$enableval], + [with_named_pipes=no]) + AC_MSG_RESULT($with_named_pipes) + else + with_named_pipes=no + fi + if test "x$with_named_pipes" = xyes + then + AC_DEFINE(USE_NAMED_PIPES,1,[Define to 1 to use named pipes with win32 driver]) + USE_NAMED_PIPES=1 + fi + INTERNALS_HDR='../include/nc_win32.h' + # MinGW32 sets $WD to its directory. + if test -n "$WD" + then + if test -d "$WD" + then + AC_DEFINE(USE_DOS_PATHS,1,[Define to 1 to use DOS pathnames internally]) + fi + fi + ;; +esac + +AC_SUBST(USE_NAMED_PIPES) +AC_SUBST(INTERNALS_HDR) + +############################################################################## CF_HELP_MESSAGE(Reentrant Code:) CF_WITH_PTHREAD @@ -1588,6 +1604,11 @@ AC_MSG_RESULT($with_scroll_hints) test "x$with_scroll_hints" = xyes && AC_DEFINE(USE_SCROLL_HINTS,1,[Define to 1 to compile without scroll-hints code]) fi +case x$cf_cv_abi_default in +(x[[789]]) + NCURSES_WGETCH_EVENTS=0 + ;; +(*) AC_MSG_CHECKING(if you want wgetch-events code) AC_ARG_ENABLE(wgetch-events, [ --enable-wgetch-events compile with wgetch-events code], @@ -1600,33 +1621,16 @@ if test "x$with_wgetch_events" = xyes ; then else NCURSES_WGETCH_EVENTS=0 fi +esac AC_SUBST(NCURSES_WGETCH_EVENTS) case "$cf_cv_system_name" in (*mingw32*|*mingw64*|*-msvc*) - AC_MSG_CHECKING(if you want experimental-Windows driver) AC_ARG_ENABLE(exp-win32, - [ --enable-exp-win32 compile with experimental-Windows driver], - [with_exp_win32=$enableval], - [with_exp_win32=no]) - AC_MSG_RESULT($with_exp_win32) - if test "x$with_exp_win32" = xyes - then - AC_DEFINE(EXP_WIN32_DRIVER,1,[Define to 1 to compile with experimental win32 driver]) - EXP_WIN32_DRIVER=1 - INTERNALS_HDR='[$](INCDIR)/nc_win32.h' - else - INTERNALS_HDR='[$](INCDIR)/nc_mingw.h' - EXP_WIN32_DRIVER=0 - fi - ;; -(*) - EXP_WIN32_DRIVER=0 - INTERNALS_HDR= + [ --enable-exp-win32 obsolete option for Windows driver], + [AC_MSG_WARN(The --enable-exp-win32 option is obsolete)]) ;; esac -AC_SUBST(EXP_WIN32_DRIVER) -AC_SUBST(INTERNALS_HDR) ############################################################################### CF_HELP_MESSAGE(Testing/development Options:) @@ -1721,7 +1725,7 @@ AC_MSG_RESULT($cf_with_trace) if test "x$cf_with_trace" = xyes ; then LIB_TRACING=all ADA_TRACE=TRUE - CF_ADD_CFLAGS(-DTRACE) + AC_DEFINE(TRACE,1,[Define to 1 if we have support trace functions]) AC_DEFINE(HAVE__TRACEF,1,[Define to 1 if we have _tracef function]) else LIB_TRACING=DEBUG @@ -1736,7 +1740,7 @@ CF_DISABLE_GNAT_PROJECTS case "$cf_cv_system_name" in (*mingw32*|*mingw64*) # Note: WINVER may be a problem with Windows 10 - if test "x$with_exp_win32" = xyes ; then + if test "x$with_named_pipes" = xyes ; then CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN" else CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN" @@ -1756,13 +1760,16 @@ CF_REGEX dnl These are some other potentially nonportable headers. AC_CHECK_HEADERS( \ +alloca.h \ fcntl.h \ getopt.h \ limits.h \ locale.h \ +malloc.h \ math.h \ poll.h \ sys/auxv.h \ +sys/fsuid.h \ sys/ioctl.h \ sys/param.h \ sys/poll.h \ @@ -1786,7 +1793,7 @@ fi CF_SYS_TIME_SELECT ### checks for compiler characteristics -AC_LANG_C +AC_LANG([C]) AC_C_CONST CF_C_INLINE(NCURSES_INLINE,1200) CF_SIG_ATOMIC_T @@ -1893,8 +1900,12 @@ CF_FUNC_MEMMOVE CF_FUNC_POLL CF_MB_LEN_MAX CF_VA_COPY -AC_FUNC_VFORK +AC_FUNC_FORK([]) CF_FOPEN_BIN_R +CF_CHECK_TYPE2(cc_t,termios.h) +CF_CHECK_TYPE2(speed_t,termios.h) +CF_CHECK_TYPE2(tcflag_t,termios.h) +CF_CHECK_TYPE2(sigset_t,signal.h) # special check for test/ditto.c CF_FUNC_OPENPTY @@ -1921,10 +1932,18 @@ fi # Just in case, check if the C compiler has a bool type. CF_BOOL_DECL(cf_cv_cc_bool_type) +if test "$cf_cv_cc_bool_type" = yes; then + USE_BUILTIN_BOOL=1 +else + USE_BUILTIN_BOOL=0 +fi +AC_SUBST(USE_BUILTIN_BOOL) + +test "$cf_cv_header_stdbool_h" = yes && AC_DEFINE(USE_STDBOOL_H,1,[Define to 1 if we can include stdbool.h]) # Check for C++ compiler characteristics (and ensure that it's there!) if test -n "$CXX" ; then - AC_LANG_CPLUSPLUS + AC_LANG([C++]) CF_STDCPP_LIBRARY CF_PROG_CC_C_O(CXX,[$CXXFLAGS $CPPFLAGS]) @@ -1940,7 +1959,7 @@ if test -n "$CXX" ; then ;; esac - AC_CHECK_HEADERS(typeinfo) + AC_CHECK_HEADERS(new exception typeinfo) CF_CXX_IOSTREAM_NAMESPACE CF_BOOL_DECL CF_BOOL_SIZE @@ -1951,7 +1970,7 @@ if test -n "$CXX" ; then CF_CXX_AR_FLAGS else cf_cxx_library=no - cf_cv_builtin_bool=1 + cf_cv_builtin_bool=yes # Just because we are not configuring against C++ right now does not # mean that a user will not want to use C++. Some distributors disable @@ -1964,18 +1983,9 @@ else if test "$NCURSES_BOOL" != auto ; then cf_cv_type_of_bool=$NCURSES_BOOL - cf_cv_header_stdbool_h=0 + USE_STDBOOL_H=0 else - if test "$cf_cv_header_stdbool_h" = 1 ; then - CF_BOOL_SIZE - else - AC_MSG_CHECKING(for fallback type of bool) - case "$host_cpu" in - (i?86) cf_cv_type_of_bool=char ;; - (*) cf_cv_type_of_bool=int ;; - esac - AC_MSG_RESULT($cf_cv_type_of_bool) - fi + CF_BOOL_SIZE fi fi AC_SUBST(CXXLIBS) @@ -1986,11 +1996,11 @@ AC_SUBST(CXXLIBS) # specify the type of bool in a configure-script option and postpone # integration with the C++ compiler provided that the types are compatible. USE_CXX_BOOL=1 -if test "$cf_cv_cc_bool_type" = 1 +if test "$USE_BUILTIN_BOOL" = 1 then # oops: C has a bool. Unlikely, but C++ could differ. USE_CXX_BOOL=0 -elif test "$cf_cv_builtin_bool" = 0 +elif test "$cf_cv_builtin_bool" = no then # C++ has no bool USE_CXX_BOOL=0 @@ -2019,7 +2029,6 @@ dnl libtool -TD 20070714 dnl Check for availability of GNU Ada Translator (GNAT). dnl At the moment we support no other Ada compiler. if test "$cf_with_ada" != "no" ; then - CF_PROG_GNAT if test "x$cf_cv_prog_gnat_correct" = xyes; then CF_ADD_ADAFLAGS(-gnatpn) CF_FIXUP_ADAFLAGS @@ -2101,18 +2110,21 @@ if test "$with_term_driver" != no ; then LIB_SUBSETS="${LIB_SUBSETS}+port_drivers" case "$cf_cv_system_name" in (*mingw32*|*mingw64*) - if test "x$with_exp_win32" = xyes ; then + if test "x$with_named_pipes" = xyes ; then LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32" else LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" fi CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER" ;; + (*msys*|*cygwin*) + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_msys2" + ;; (*) LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo" ;; esac -elif test "x$with_exp_win32" = xyes ; then +elif test "x$with_named_pipes" = xyes ; then case "$cf_cv_system_name" in (*mingw32*|*mingw64*) LIB_SUBSETS="${LIB_SUBSETS}+port_win32" @@ -2180,7 +2192,7 @@ if test "x$with_dlsym" = xyes ; then fi USE_ARG_SUFFIX="${DFT_ARG_SUFFIX}${EXTRA_SUFFIX}" -USE_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}" +ABI_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}" USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}${cf_cv_abi_version} if test -n "$EXTRA_SUFFIX" && test "x$EXTRA_SUFFIX" != "x${cf_cv_abi_version}" then @@ -2188,13 +2200,13 @@ then fi AC_SUBST(USE_ARG_SUFFIX) AC_SUBST(USE_CFG_SUFFIX) -AC_SUBST(USE_LIB_SUFFIX) +AC_SUBST(ABI_SUFFIX) if test "$with_ticlib" != no ; then if test "x$with_ticlib" != xyes ; then TICS_NAME=$with_ticlib - TICS_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${USE_LIB_SUFFIX}//"`" + TICS_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${ABI_SUFFIX}//"`" TICS_ARG_SUFFIX="${with_ticlib}`echo "${USE_ARG_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TICS_DEP_SUFFIX="${with_ticlib}`echo "${DFT_DEP_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TICS_LIB_SUFFIX="${with_ticlib}" @@ -2202,7 +2214,7 @@ if test "$with_ticlib" != no ; then TICS_SUFFIX=${DFT_LIB_SUFFIX} TICS_ARG_SUFFIX="${TICS_NAME}${USE_ARG_SUFFIX}" TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}" - TICS_LIB_SUFFIX="${TICS_NAME}${USE_LIB_SUFFIX}" + TICS_LIB_SUFFIX="${TICS_NAME}${ABI_SUFFIX}" fi TICS_LDFLAGS="-L${LIB_DIR}" TICS_LIBS="-l${TICS_ARG_SUFFIX}" @@ -2221,7 +2233,7 @@ if test "$with_termlib" != no ; then if test "x$with_termlib" != xyes ; then TINFO_NAME=$with_termlib - TINFO_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${USE_LIB_SUFFIX}//"`" + TINFO_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${ABI_SUFFIX}//"`" TINFO_ARG_SUFFIX="${with_termlib}`echo "${USE_ARG_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TINFO_DEP_SUFFIX="${with_termlib}`echo "${DFT_DEP_SUFFIX}" |sed -e "s/^${LIB_SUFFIX}//"`" TINFO_LIB_SUFFIX="${with_termlib}" @@ -2229,7 +2241,7 @@ if test "$with_termlib" != no ; then TINFO_SUFFIX=${DFT_LIB_SUFFIX} TINFO_ARG_SUFFIX="${TINFO_NAME}${USE_ARG_SUFFIX}" TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}" - TINFO_LIB_SUFFIX="${TINFO_NAME}${USE_LIB_SUFFIX}" + TINFO_LIB_SUFFIX="${TINFO_NAME}${ABI_SUFFIX}" fi TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" @@ -2310,7 +2322,7 @@ if test "$with_overwrite" = no && \ { test "x$includedir" = 'x${prefix}/include' || \ test "x$includedir" = "x${prefix}/include"; } then - includesubdir="/ncurses${USE_LIB_SUFFIX}" + includesubdir="/ncurses${ABI_SUFFIX}" fi AC_MSG_RESULT(${includedir}${includesubdir}) @@ -2373,11 +2385,29 @@ AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}",[Define to 1 if machine has ample memory for tic]) ### Define substitutions for header files to avoid name-pollution -CF_SUBST_IF(["x$cf_cv_have_tcgetattr" = xyes], HAVE_TCGETATTR, 1, 0) -CF_SUBST_IF(["x$ac_cv_header_stdint_h" = xyes], HAVE_STDINT_H, 1, 0) -CF_SUBST_IF(["x$ac_cv_header_termio_h" = xyes], HAVE_TERMIO_H, 1, 0) +CF_SUBST_IF(["x$cf_cv_have_tcgetattr" = xyes], HAVE_TCGETATTR, 1, 0) +CF_SUBST_IF(["x$ac_cv_header_stdint_h" = xyes], HAVE_STDINT_H, 1, 0) +CF_SUBST_IF(["x$ac_cv_header_sgtty_h" = xyes], HAVE_SGTTY_H, 1, 0) +CF_SUBST_IF(["x$ac_cv_header_termio_h" = xyes], HAVE_TERMIO_H, 1, 0) CF_SUBST_IF(["x$ac_cv_header_termios_h" = xyes], HAVE_TERMIOS_H, 1, 0) +case "x${ac_cv_header_termios_h}${ac_cv_header_termio_h}${ac_cv_header_sgtty_h}${cf_cv_have_tcgetattr}" in +(*yes*) + ;; +(*) + case "$cf_cv_system_name" in + (*mingw32*|*mingw64*|*-msvc*) + ;; + (*) + AC_MSG_ERROR(No termio/termios/sgtty found) + ;; + esac + ;; +esac + +############################################################################### +CF_MAN_PAGES([ captoinfo clear infocmp infotocap reset tabs tic toe tput tset ]) + ################################################################################ test "x$use_database" = xyes && \ SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in" @@ -2443,6 +2473,7 @@ do done AC_MSG_RESULT($PKG_CFLAGS) AC_SUBST(PKG_CFLAGS) +CF_GLOB_FULLPATH # AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this. case "x$NCURSES_OSPEED" in @@ -2532,15 +2563,18 @@ AC_SUBST(PRIVATE_LIBS) # This is used for the *-config script and *.pc data files. CF_LD_SEARCHPATH -AC_OUTPUT( \ +AC_CONFIG_FILES([\ include/MKterm.h.awk \ include/curses.head:include/curses.h.in \ include/ncurses_dll.h \ + include/nc_win32.h \ include/termcap.h \ include/unctrl.h \ + man/MKterminfo.tmp:man/MKterminfo.sh \ man/man_db.renames \ $SUB_MAKEFILES \ - Makefile,[ + Makefile]) +AC_CONFIG_COMMANDS([default],[ if test "x$cf_with_tests" != xno ; then CF_PRG_RULES(["$srcdir/test/mk-test.awk" INSTALL=no ECHO_LINK="$ECHO_LD"], test) fi @@ -2564,6 +2598,8 @@ DFT_LWR_MODEL="$DFT_LWR_MODEL" ECHO_LD="$ECHO_LD" EXTRA_SUFFIX="$EXTRA_SUFFIX" FORM_NAME="$FORM_NAME" +GLOB_FULLPATH_OTHER="$GLOB_FULLPATH_OTHER" +GLOB_FULLPATH_POSIX="$GLOB_FULLPATH_POSIX" LDCONFIG="$LDCONFIG" LIBTOOL_VERSION="$LIBTOOL_VERSION" LIB_NAME="$LIB_NAME" @@ -2594,7 +2630,7 @@ TINFO_SUFFIX="$TINFO_SUFFIX" UNALTERED_SYMS="$UNALTERED_SYMS" USE_ARG_SUFFIX="$USE_ARG_SUFFIX" USE_CFG_SUFFIX="$USE_CFG_SUFFIX" -USE_LIB_SUFFIX="$USE_LIB_SUFFIX" +ABI_SUFFIX="$ABI_SUFFIX" USE_OLD_MAKERULES="$USE_OLD_MAKERULES" WILDCARD_SYMS="$WILDCARD_SYMS" WITH_CURSES_H="$with_curses_h" @@ -2631,5 +2667,7 @@ target="$target" verbose="$verbose" with_shared_cxx="$with_shared_cxx" -],cat)dnl +]) +AC_SETUP_DEFS([cat]) +AC_OUTPUT ${MAKE:-make} preinstall diff --git a/contrib/ncurses/dist.mk b/contrib/ncurses/dist.mk index 18484d8ca5c9..920d9415e63f 100644 --- a/contrib/ncurses/dist.mk +++ b/contrib/ncurses/dist.mk @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2018-2023,2024 Thomas E. Dickey # +# Copyright 2018-2024,2025 Thomas E. Dickey # # Copyright 1998-2017,2018 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -26,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: dist.mk,v 1.1610 2024/04/27 13:55:54 tom Exp $ +# $Id: dist.mk,v 1.1709 2025/12/30 20:31:32 tom Exp $ # Makefile for creating ncurses distributions. # # This only needs to be used directly as a makefile by developers, but @@ -37,8 +37,8 @@ SHELL = /bin/sh # These define the major/minor/patch versions of ncurses. NCURSES_MAJOR = 6 -NCURSES_MINOR = 5 -NCURSES_PATCH = 20240427 +NCURSES_MINOR = 6 +NCURSES_PATCH = 20251230 # We don't append the patch to the version, since this only applies to releases VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) @@ -93,11 +93,11 @@ doc/hackguide.doc: doc/html/hackguide.html # The distributed html files are formatted using # configure --without-manpage-renames # -# The edit_man.sed script is built as a side-effect of installing the manpages. +# The edit_man.sed script is built as a side effect of installing the man pages. # If that conflicts with the --without-manpage-renames, you can install those # in a different location using the --with-install-prefix option of the # configure script. -MANPROG = tbl | nroff -mandoc -rHY=0 -rLL=78n -rLT=78n -Tascii +MANPROG = tbl | nroff -c -mandoc -rHY=0 -rLL=78n -rLT=78n -Tascii manhtml: @for f in doc/html/man/*.html; do \ diff --git a/contrib/ncurses/doc/html/hackguide.html b/contrib/ncurses/doc/html/hackguide.html deleted file mode 100644 index 2b9445538dc8..000000000000 --- a/contrib/ncurses/doc/html/hackguide.html +++ /dev/null @@ -1,962 +0,0 @@ -<!-- - $Id: hackguide.html,v 1.36 2022/11/26 19:31:56 tom Exp $ - **************************************************************************** - * Copyright 2019-2020,2022 Thomas E. Dickey * - * Copyright 2000-2013,2017 Free Software Foundation, Inc. * - * * - * Permission is hereby granted, free of charge, to any person obtaining a * - * copy of this software and associated documentation files (the * - * "Software"), to deal in the Software without restriction, including * - * without limitation the rights to use, copy, modify, merge, publish, * - * distribute, distribute with modifications, sublicense, and/or sell * - * copies of the Software, and to permit persons to whom the Software is * - * furnished to do so, subject to the following conditions: * - * * - * The above copyright notice and this permission notice shall be included * - * in all copies or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * - * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * * - * Except as contained in this notice, the name(s) of the above copyright * - * holders shall not be used in advertising or otherwise to promote the * - * sale, use or other dealings in this Software without prior written * - * authorization. * - **************************************************************************** ---> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> -<html> -<head> - <meta name="generator" content= - "HTML Tidy for HTML5 for Linux version 5.6.0"> - <title>A Hacker's Guide to Ncurses Internals</title> - <link rel="author" href="mailto:bugs-ncurses@gnu.org"> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii"><!-- -This document is self-contained, *except* that there is one relative link to -the ncurses-intro.html document, expected to be in the same directory with -this one. ---> -</head> -<body> - <h1 class="no-header">A Hacker's Guide to NCURSES</h1> - - <h2>A Hacker's Guide to NCURSES</h2> - - <div class="nav"> - <h2>Contents</h2> - - <ul> - <li><a href="#abstract">Abstract</a></li> - - <li> - <a href="#objective">Objective of the Package</a> - <ul> - <li><a href="#whysvr4">Why System V Curses?</a></li> - - <li><a href="#extensions">How to Design Extensions</a></li> - </ul> - </li> - - <li><a href="#portability">Portability and Configuration</a></li> - - <li><a href="#documentation">Documentation Conventions</a></li> - - <li><a href="#bugtrack">How to Report Bugs</a></li> - - <li> - <a href="#ncurslib">A Tour of the Ncurses Library</a> - <ul> - <li><a href="#loverview">Library Overview</a></li> - - <li><a href="#engine">The Engine Room</a></li> - - <li><a href="#input">Keyboard Input</a></li> - - <li><a href="#mouse">Mouse Events</a></li> - - <li><a href="#output">Output and Screen Updating</a></li> - </ul> - </li> - - <li><a href="#fmnote">The Forms and Menu Libraries</a></li> - - <li> - <a href="#tic">A Tour of the Terminfo Compiler</a> - <ul> - <li><a href="#nonuse">Translation of - Non-<strong>use</strong> Capabilities</a></li> - - <li><a href="#uses">Use Capability Resolution</a></li> - - <li><a href="#translation">Source-Form Translation</a></li> - </ul> - </li> - - <li><a href="#utils">Other Utilities</a></li> - - <li><a href="#style">Style Tips for Developers</a></li> - - <li><a href="#port">Porting Hints</a></li> - </ul> - </div> - - <h2><a name="abstract" id="abstract">Abstract</a></h2> - - <p>This document is a hacker's tour of the - <strong>ncurses</strong> library and utilities. It discusses - design philosophy, implementation methods, and the conventions - used for coding and documentation. It is recommended reading for - anyone who is interested in porting, extending or improving the - package.</p> - - <h2><a name="objective" id="objective">Objective of the - Package</a></h2> - - <p>The objective of the <strong>ncurses</strong> package is to - provide a free software API for character-cell terminals and - terminal emulators with the following characteristics:</p> - - <ul> - <li>Source-compatible with historical curses implementations - (including the original BSD curses and System V curses.</li> - - <li>Conformant with the XSI Curses standard issued as part of - XPG4 by X/Open.</li> - - <li>High-quality — stable and reliable code, wide - portability, good packaging, superior documentation.</li> - - <li>Featureful — should eliminate as much of the drudgery - of C interface programming as possible, freeing programmers to - think at a higher level of design.</li> - </ul> - - <p>These objectives are in priority order. So, for example, - source compatibility with older version must trump featurefulness - — we cannot add features if it means breaking the portion - of the API corresponding to historical curses versions.</p> - - <h3><a name="whysvr4" id="whysvr4">Why System V Curses?</a></h3> - - <p>We used System V curses as a model, reverse-engineering their - API, in order to fulfill the first two objectives.</p> - - <p>System V curses implementations can support BSD curses - programs with just a recompilation, so by capturing the System V - API we also capture BSD's.</p> - - <p>More importantly for the future, the XSI Curses standard - issued by X/Open is explicitly and closely modeled on System V. - So conformance with System V took us most of the way to - base-level XSI conformance.</p> - - <h3><a name="extensions" id="extensions">How to Design - Extensions</a></h3> - - <p>The third objective (standards conformance) requires that it - be easy to condition source code using <strong>ncurses</strong> - so that the absence of nonstandard extensions does not break the - code.</p> - - <p>Accordingly, we have a policy of associating with each - nonstandard extension a feature macro, so that ncurses client - code can use this macro to condition in or out the code that - requires the <strong>ncurses</strong> extension.</p> - - <p>For example, there is a macro - <code>NCURSES_MOUSE_VERSION</code> which XSI Curses does not - define, but which is defined in the <strong>ncurses</strong> - library header. You can use this to condition the calls to the - mouse API calls.</p> - - <h2><a name="portability" id="portability">Portability and - Configuration</a></h2> - - <p>Code written for <strong>ncurses</strong> may assume an - ANSI-standard C compiler and POSIX-compatible OS interface. It - may also assume the presence of a System-V-compatible - <em>select(2)</em> call.</p> - - <p>We encourage (but do not require) developers to make the code - friendly to less-capable UNIX environments wherever possible.</p> - - <p>We encourage developers to support OS-specific optimizations - and methods not available under POSIX/ANSI, provided only - that:</p> - - <ul> - <li>All such code is properly conditioned so the build process - does not attempt to compile it under a plain ANSI/POSIX - environment.</li> - - <li>Adding such implementation methods does not introduce - incompatibilities in the <strong>ncurses</strong> API between - platforms.</li> - </ul> - - <p>We use GNU <code>autoconf(1)</code> as a tool to deal with - portability issues. The right way to leverage an OS-specific - feature is to modify the autoconf specification files - (configure.in and aclocal.m4) to set up a new feature macro, - which you then use to condition your code.</p> - - <h2><a name="documentation" id="documentation">Documentation - Conventions</a></h2> - - <p>There are three kinds of documentation associated with this - package. Each has a different preferred format:</p> - - <ul> - <li>Package-internal files (README, INSTALL, TO-DO etc.)</li> - - <li>Manual pages.</li> - - <li>Everything else (i.e., narrative documentation).</li> - </ul> - - <p>Our conventions are simple:</p> - - <ol> - <li><strong>Maintain package-internal files in plain - text.</strong> The expected viewer for them is <em>more(1)</em> or - an editor window; there is no point in elaborate mark-up.</li> - - <li><strong>Mark up manual pages in the man macros.</strong> - These have to be viewable through traditional <em>man(1)</em> - programs.</li> - - <li><strong>Write everything else in HTML.</strong> - </li> - </ol> - - <p>When in doubt, HTMLize a master and use <em>lynx(1)</em> to - generate plain ASCII (as we do for the announcement - document).</p> - - <p>The reason for choosing HTML is that it is (a) well-adapted - for on-line browsing through viewers that are everywhere; (b) - more easily readable as plain text than most other mark-ups, if - you do not have a viewer; and (c) carries enough information that - you can generate a nice-looking printed version from it. Also, of - course, it make exporting things like the announcement document - to WWW pretty trivial.</p> - - <h2><a name="bugtrack" id="bugtrack">How to Report Bugs</a></h2> - - <p>The <a name="bugreport" id="bugreport">reporting address for - bugs</a> is <a href= - "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>. This is a - majordomo list; to join, write to - <code>bug-ncurses-request@gnu.org</code> with a message - containing the line:</p> - - <pre class="code-block"> - subscribe <name>@<host.domain> -</pre> - <p>The <code>ncurses</code> code is maintained by a small group - of volunteers. While we try our best to fix bugs promptly, we - simply do not have a lot of hours to spend on elementary - hand-holding. We rely on intelligent cooperation from our users. - If you think you have found a bug in <code>ncurses</code>, there - are some steps you can take before contacting us that will help - get the bug fixed quickly.</p> - - <p>In order to use our bug-fixing time efficiently, we put people - who show us they have taken these steps at the head of our queue. - This means that if you do not, you will probably end up at the - tail end and have to wait a while.</p> - - <ol> - <li><p>Develop a recipe to reproduce the bug. - <p>Bugs we can reproduce are likely to be fixed very quickly, - often within days. The most effective single thing you can do - to get a quick fix is develop a way we can duplicate the bad - behavior — ideally, by giving us source for a small, - portable test program that breaks the library. (Even better - is a keystroke recipe using one of the test programs provided - with the distribution.)</p> - </li> - - <li><p>Try to reproduce the bug on a different terminal type. - <p>In our experience, most of the behaviors people report as - library bugs are actually due to subtle problems in terminal - descriptions. This is especially likely to be true if you are - using a traditional asynchronous terminal or PC-based - terminal emulator, rather than xterm or a UNIX console - entry.</p> - - <p>It is therefore extremely helpful if you can tell us - whether or not your problem reproduces on other terminal - types. Usually you will have both a console type and xterm - available; please tell us whether or not your bug reproduces - on both.</p> - - <p>If you have xterm available, it is also good to collect - xterm reports for different window sizes. This is especially - true if you normally use an unusual xterm window size — - a surprising number of the bugs we have seen are either - triggered or masked by these.</p> - </li> - - <li><p>Generate and examine a trace file for the broken behavior. - <p>Recompile your program with the debugging versions of the - libraries. Insert a <code>trace()</code> call with the - argument set to <code>TRACE_UPDATE</code>. (See <a href= - "ncurses-intro.html#debugging">"Writing Programs with - NCURSES"</a> for details on trace levels.) Reproduce your - bug, then look at the trace file to see what the library was - actually doing.</p> - - <p>Another frequent cause of apparent bugs is application - coding errors that cause the wrong things to be put on the - virtual screen. Looking at the virtual-screen dumps in the - trace file will tell you immediately if this is happening, - and save you from the possible embarrassment of being told - that the bug is in your code and is your problem rather than - ours.</p> - - <p>If the virtual-screen dumps look correct but the bug - persists, it is possible to crank up the trace level to give - more and more information about the library's update actions - and the control sequences it issues to perform them. The test - directory of the distribution contains a tool for digesting - these logs to make them less tedious to wade through.</p> - - <p>Often you will find terminfo problems at this stage by - noticing that the escape sequences put out for various - capabilities are wrong. If not, you are likely to learn - enough to be able to characterize any bug in the - screen-update logic quite exactly.</p> - </li> - - <li><p>Report details and symptoms, not just interpretations. - <p>If you do the preceding two steps, it is very likely that - you will discover the nature of the problem yourself and be - able to send us a fix. This will create happy feelings all - around and earn you good karma for the first time you run - into a bug you really cannot characterize and fix - yourself.</p> - - <p>If you are still stuck, at least you will know what to - tell us. Remember, we need details. If you guess about what - is safe to leave out, you are too likely to be wrong.</p> - - <p>If your bug produces a bad update, include a trace file. - Try to make the trace at the <em>least</em> voluminous level - that pins down the bug. Logs that have been through - tracemunch are OK, it does not throw away any information - (actually they are better than un-munched ones because they - are easier to read).</p> - - <p>If your bug produces a core-dump, please include a - symbolic stack trace generated by gdb(1) or your local - equivalent.</p> - - <p>Tell us about every terminal on which you have reproduced - the bug — and every terminal on which you cannot. - Ideally, send us terminfo sources for all of these (yours - might differ from ours).</p> - - <p>Include your ncurses version and your OS/machine type, of - course! You can find your ncurses version in the - <code>curses.h</code> file.</p> - </li> - </ol> - - <p>If your problem smells like a logic error or in cursor - movement or scrolling or a bad capability, there are a couple of - tiny test frames for the library algorithms in the progs - directory that may help you isolate it. These are not part of the - normal build, but do have their own make productions.</p> - - <p>The most important of these is <code>mvcur</code>, a test - frame for the cursor-movement optimization code. With this - program, you can see directly what control sequences will be - emitted for any given cursor movement or scroll/insert/delete - operations. If you think you have got a bad capability - identified, you can disable it and test again. The program is - command-driven and has on-line help.</p> - - <p>If you think the vertical-scroll optimization is broken, or - just want to understand how it works better, build - <code>hashmap</code> and read the header comments of - <code>hardscroll.c</code> and <code>hashmap.c</code>; then try it - out. You can also test the hardware-scrolling optimization - separately with <code>hardscroll</code>.</p> - - <h2><a name="ncurslib" id="ncurslib">A Tour of the Ncurses - Library</a></h2> - - <h3><a name="loverview" id="loverview">Library Overview</a></h3> - - <p>Most of the library is superstructure — fairly trivial - convenience interfaces to a small set of basic functions and data - structures used to manipulate the virtual screen (in particular, - none of this code does any I/O except through calls to more - fundamental modules described below). The files</p> - - <blockquote> - <code>lib_addch.c lib_bkgd.c lib_box.c lib_chgat.c lib_clear.c - lib_clearok.c lib_clrbot.c lib_clreol.c lib_colorset.c - lib_data.c lib_delch.c lib_delwin.c lib_echo.c lib_erase.c - lib_gen.c lib_getstr.c lib_hline.c lib_immedok.c lib_inchstr.c - lib_insch.c lib_insdel.c lib_insstr.c lib_instr.c - lib_isendwin.c lib_keyname.c lib_leaveok.c lib_move.c - lib_mvwin.c lib_overlay.c lib_pad.c lib_printw.c lib_redrawln.c - lib_scanw.c lib_screen.c lib_scroll.c lib_scrollok.c - lib_scrreg.c lib_set_term.c lib_slk.c lib_slkatr_set.c - lib_slkatrof.c lib_slkatron.c lib_slkatrset.c lib_slkattr.c - lib_slkclear.c lib_slkcolor.c lib_slkinit.c lib_slklab.c - lib_slkrefr.c lib_slkset.c lib_slktouch.c lib_touch.c - lib_unctrl.c lib_vline.c lib_wattroff.c lib_wattron.c - lib_window.c</code> - </blockquote> - - <p>are all in this category. They are very unlikely to need - change, barring bugs or some fundamental reorganization in the - underlying data structures.</p> - - <p>These files are used only for debugging support:</p> - - <blockquote> - <code>lib_trace.c lib_traceatr.c lib_tracebits.c lib_tracechr.c - lib_tracedmp.c lib_tracemse.c trace_buf.c</code> - </blockquote> - - <p>It is rather unlikely you will ever need to change these, - unless you want to introduce a new debug trace level for some - reason.</p> - - <p>There is another group of files that do direct I/O via - <em>tputs()</em>, computations on the terminal capabilities, or - queries to the OS environment, but nevertheless have only fairly - low complexity. These include:</p> - - <blockquote> - <code>lib_acs.c lib_beep.c lib_color.c lib_endwin.c - lib_initscr.c lib_longname.c lib_newterm.c lib_options.c - lib_termcap.c lib_ti.c lib_tparm.c lib_tputs.c lib_vidattr.c - read_entry.c.</code> - </blockquote> - - <p>They are likely to need revision only if ncurses is being - ported to an environment without an underlying terminfo - capability representation.</p> - - <p>These files have serious hooks into the tty driver and signal - facilities:</p> - - <blockquote> - <code>lib_kernel.c lib_baudrate.c lib_raw.c lib_tstp.c - lib_twait.c</code> - </blockquote> - - <p>If you run into porting snafus moving the package to another - UNIX, the problem is likely to be in one of these files. The file - <code>lib_print.c</code> uses sleep(2) and also falls in this - category.</p> - - <p>Almost all of the real work is done in the files</p> - - <blockquote> - <code>hardscroll.c hashmap.c lib_addch.c lib_doupdate.c - lib_getch.c lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c - lib_vidattr.c</code> - </blockquote> - - <p>Most of the algorithmic complexity in the library lives in - these files. If there is a real bug in <strong>ncurses</strong> - itself, it is probably here. We will tour some of these files in - detail below (see <a href="#engine">The Engine Room</a>).</p> - - <p>Finally, there is a group of files that is actually most of - the terminfo compiler. The reason this code lives in the - <strong>ncurses</strong> library is to support fallback to - /etc/termcap. These files include</p> - - <blockquote> - <code>alloc_entry.c captoinfo.c comp_captab.c comp_error.c - comp_hash.c comp_parse.c comp_scan.c parse_entry.c - read_termcap.c write_entry.c</code> - </blockquote> - - <p>We will discuss these in the compiler tour.</p> - - <h3><a name="engine" id="engine">The Engine Room</a></h3> - - <h4><a name="input" id="input">Keyboard Input</a></h4> - - <p>All <code>ncurses</code> input funnels through the function - <code>wgetch()</code>, defined in <code>lib_getch.c</code>. This - function is tricky; it has to poll for keyboard and mouse events - and do a running match of incoming input against the set of - defined special keys.</p> - - <p>The central data structure in this module is a FIFO queue, - used to match multiple-character input sequences against - special-key capabilities; also to implement pushback via - <code>ungetch()</code>.</p> - - <p>The <code>wgetch()</code> code distinguishes between function - key sequences and the same sequences typed manually by doing a - timed wait after each input character that could lead a function - key sequence. If the entire sequence takes less than 1 second, it - is assumed to have been generated by a function key press.</p> - - <p>Hackers bruised by previous encounters with variant - <code>select(2)</code> calls may find the code in - <code>lib_twait.c</code> interesting. It deals with the problem - that some BSD selects do not return a reliable time-left value. - The function <code>timed_wait()</code> effectively simulates a - System V select.</p> - - <h4><a name="mouse" id="mouse">Mouse Events</a></h4> - - <p>If the mouse interface is active, <code>wgetch()</code> polls - for mouse events each call, before it goes to the keyboard for - input. It is up to <code>lib_mouse.c</code> how the polling is - accomplished; it may vary for different devices.</p> - - <p>Under xterm, however, mouse event notifications come in via - the keyboard input stream. They are recognized by having the - <strong>kmous</strong> capability as a prefix. This is kind of - klugey, but trying to wire in recognition of a mouse key prefix - without going through the function-key machinery would be just - too painful, and this turns out to imply having the prefix - somewhere in the function-key capabilities at terminal-type - initialization.</p> - - <p>This kluge only works because <strong>kmous</strong> is not - actually used by any historic terminal type or curses - implementation we know of. Best guess is it is a relic of some - forgotten experiment in-house at Bell Labs that did not leave any - traces in the publicly-distributed System V terminfo files. If - System V or XPG4 ever gets serious about using it again, this - kluge may have to change.</p> - - <p>Here are some more details about mouse event handling:</p> - - <p>The <code>lib_mouse()</code> code is logically split into a - lower level that accepts event reports in a device-dependent - format and an upper level that parses mouse gestures and filters - events. The mediating data structure is a circular queue of event - structures.</p> - - <p>Functionally, the lower level's job is to pick up primitive - events and put them on the circular queue. This can happen in one - of two ways: either (a) <code>_nc_mouse_event()</code> detects a - series of incoming mouse reports and queues them, or (b) code in - <code>lib_getch.c</code> detects the <strong>kmous</strong> - prefix in the keyboard input stream and calls _nc_mouse_inline to - queue up a series of adjacent mouse reports.</p> - - <p>In either case, <code>_nc_mouse_parse()</code> should be - called after the series is accepted to parse the digested mouse - reports (low-level events) into a gesture (a high-level or - composite event).</p> - - <h4><a name="output" id="output">Output and Screen Updating</a></h4> - - <p>With the single exception of character echoes during a - <code>wgetnstr()</code> call (which simulates cooked-mode line - editing in an ncurses window), the library normally does all its - output at refresh time.</p> - - <p>The main job is to go from the current state of the screen (as - represented in the <code>curscr</code> window structure) to the - desired new state (as represented in the <code>newscr</code> - window structure), while doing as little I/O as possible.</p> - - <p>The brains of this operation are the modules - <code>hashmap.c</code>, <code>hardscroll.c</code> and - <code>lib_doupdate.c</code>; the latter two use - <code>lib_mvcur.c</code>. Essentially, what happens looks like - this:</p> - - <ul> - <li> - <p>The <code>hashmap.c</code> module tries to detect vertical - motion changes between the real and virtual screens. This - information is represented by the oldindex members in the - newscr structure. These are modified by vertical-motion and - clear operations, and both are re-initialized after each - update. To this change-journalling information, the hashmap - code adds deductions made using a modified Heckel algorithm - on hash values generated from the line contents.</p> - </li> - - <li> - <p>The <code>hardscroll.c</code> module computes an optimum - set of scroll, insertion, and deletion operations to make the - indices match. It calls <code>_nc_mvcur_scrolln()</code> in - <code>lib_mvcur.c</code> to do those motions.</p> - </li> - - <li> - <p>Then <code>lib_doupdate.c</code> goes to work. Its job is - to do line-by-line transformations of <code>curscr</code> - lines to <code>newscr</code> lines. Its main tool is the - routine <code>mvcur()</code> in <code>lib_mvcur.c</code>. - This routine does cursor-movement optimization, attempting to - get from given screen location A to given location B in the - fewest output characters possible.</p> - </li> - </ul> - - <p>If you want to work on screen optimizations, you should use - the fact that (in the trace-enabled version of the library) - enabling the <code>TRACE_TIMES</code> trace level causes a report - to be emitted after each screen update giving the elapsed time - and a count of characters emitted during the update. You can use - this to tell when an update optimization improves efficiency.</p> - - <p>In the trace-enabled version of the library, it is also - possible to disable and re-enable various optimizations at - runtime by tweaking the variable - <code>_nc_optimize_enable</code>. See the file - <code>include/curses.h.in</code> for mask values, near the - end.</p> - - <h2><a name="fmnote" id="fmnote">The Forms and Menu Libraries</a></h2> - - <p>The forms and menu libraries should work reliably in any - environment you can port ncurses to. The only portability issue - anywhere in them is what flavor of regular expressions the - built-in form field type TYPE_REGEXP will recognize.</p> - - <p>The configuration code prefers the POSIX regex facility, - modeled on System V's, but will settle for BSD regexps if the - former is not available.</p> - - <p>Historical note: the panels code was written primarily to - assist in porting u386mon 2.0 (comp.sources.misc v14i001-4) to - systems lacking panels support; u386mon 2.10 and beyond use it. - This version has been slightly cleaned up for - <code>ncurses</code>.</p> - - <h2><a name="tic" id="tic">A Tour of the Terminfo Compiler</a></h2> - - <p>The <strong>ncurses</strong> implementation of - <strong>tic</strong> is rather complex internally; it has to do a - trying combination of missions. This starts with the fact that, - in addition to its normal duty of compiling terminfo sources into - loadable terminfo binaries, it has to be able to handle termcap - syntax and compile that too into terminfo entries.</p> - - <p>The implementation therefore starts with a table-driven, - dual-mode lexical analyzer (in <code>comp_scan.c</code>). The - lexer chooses its mode (termcap or terminfo) based on the first - “,” or “:” it finds in each entry. The - lexer does all the work of recognizing capability names and - values; the grammar above it is trivial, just "parse entries till - you run out of file".</p> - - <h3><a name="nonuse" id="nonuse">Translation of - Non-<strong>use</strong> Capabilities</a></h3> - - <p>Translation of most things besides <strong>use</strong> - capabilities is pretty straightforward. The lexical analyzer's - tokenizer hands each capability name to a hash function, which - drives a table lookup. The table entry yields an index which is - used to look up the token type in another table, and controls - interpretation of the value.</p> - - <p>One possibly interesting aspect of the implementation is the - way the compiler tables are initialized. All the tables are - generated by various awk/sed/sh scripts from a master table - <code>include/Caps</code>; these scripts actually write C - initializers which are linked to the compiler. Furthermore, the - hash table is generated in the same way, so it doesn't have to be - generated at compiler startup time (another benefit of this - organization is that the hash table can be in shareable text - space).</p> - - <p>Thus, adding a new capability is usually pretty trivial, just - a matter of adding one line to the <code>include/Caps</code> - file. We will have more to say about this in the section on - <a href="#translation">Source-Form Translation</a>.</p> - - <h3><a name="uses" id="uses">Use Capability Resolution</a></h3> - - <p>The background problem that makes <strong>tic</strong> tricky - is not the capability translation itself, it is the resolution of - <strong>use</strong> capabilities. Older versions would not - handle forward <strong>use</strong> references for this reason - (that is, a using terminal always had to follow its use target in - the source file). By doing this, they got away with a simple - implementation tactic; compile everything as it blows by, then - resolve uses from compiled entries.</p> - - <p>This will not do for <strong>ncurses</strong>. The problem is - that that the whole compilation process has to be embeddable in - the <strong>ncurses</strong> library so that it can be called by - the startup code to translate termcap entries on the fly. The - embedded version cannot go promiscuously writing everything it - translates out to disk — for one thing, it will typically - be running with non-root permissions.</p> - - <p>So our <strong>tic</strong> is designed to parse an entire - terminfo file into a doubly-linked circular list of entry - structures in-core, and then do <strong>use</strong> resolution - in-memory before writing everything out. This design has other - advantages: it makes forward and back use-references equally easy - (so we get the latter for free), and it makes checking for name - collisions before they are written out easy to do.</p> - - <p>And this is exactly how the embedded version works. But the - stand-alone user-accessible version of <strong>tic</strong> - partly reverts to the historical strategy; it writes to disk (not - keeping in core) any entry with no <strong>use</strong> - references.</p> - - <p>This is strictly a core-economy kluge, implemented because the - terminfo master file is large enough that some core-poor systems - swap like crazy when you compile it all in memory...there have - been reports of this process taking <strong>three hours</strong>, - rather than the twenty seconds or less typical on the author's - development box.</p> - - <p>So. The executable <strong>tic</strong> passes the - entry-parser a hook that <em>immediately</em> writes out the - referenced entry if it has no use capabilities. The compiler main - loop refrains from adding the entry to the in-core list when this - hook fires. If some other entry later needs to reference an entry - that got written immediately, that is OK; the resolution code - will fetch it off disk when it cannot find it in core.</p> - - <p>Name collisions will still be detected, just not as cleanly. - The <code>write_entry()</code> code complains before overwriting - an entry that postdates the time of <strong>tic</strong>'s first - call to <code>write_entry()</code>, Thus it will complain about - overwriting entries newly made during the <strong>tic</strong> - run, but not about overwriting ones that predate it.</p> - - <h3><a name="translation" id="translation">Source-Form - Translation</a></h3> - - <p>Another use of <strong>tic</strong> is to do source - translation between various termcap and terminfo formats. There - are more variants out there than you might think; the ones we - know about are described in the <strong>captoinfo(1)</strong> - manual page.</p> - - <p>The translation output code (<code>dump_entry()</code> in - <code>ncurses/dump_entry.c</code>) is shared with the - <strong>infocmp(1)</strong> utility. It takes the same internal - representation used to generate the binary form and dumps it to - standard output in a specified format.</p> - - <p>The <code>include/Caps</code> file has a header comment - describing ways you can specify source translations for - nonstandard capabilities just by altering the master table. It is - possible to set up capability aliasing or tell the compiler to - plain ignore a given capability without writing any C code at - all.</p> - - <p>For circumstances where you need to do algorithmic - translation, there are functions in <code>parse_entry.c</code> - called after the parse of each entry that are specifically - intended to encapsulate such translations. This, for example, is - where the AIX <strong>box1</strong> capability get translated to - an <strong>acsc</strong> string.</p> - - <h2><a name="utils" id="utils">Other Utilities</a></h2> - - <p>The <strong>infocmp</strong> utility is just a wrapper around - the same entry-dumping code used by <strong>tic</strong> for - source translation. Perhaps the one interesting aspect of the - code is the use of a predicate function passed in to - <code>dump_entry()</code> to control which capabilities are - dumped. This is necessary in order to handle both the ordinary - De-compilation case and entry difference reporting.</p> - - <p>The <strong>tput</strong> and <strong>clear</strong> utilities - just do an entry load followed by a <code>tputs()</code> of a - selected capability.</p> - - <h2><a name="style" id="style">Style Tips for Developers</a></h2> - - <p>See the TO-DO file in the top-level directory of the source - distribution for additions that would be particularly useful.</p> - - <p>The prefix <code>_nc_</code> should be used on library public - functions that are not part of the curses API in order to prevent - pollution of the application namespace. If you have to add to or - modify the function prototypes in curses.h.in, read - ncurses/MKlib_gen.sh first so you can avoid breaking XSI - conformance. Please join the ncurses mailing list. See the - INSTALL file in the top level of the distribution for details on - the list.</p> - - <p>Look for the string <code>FIXME</code> in source files to tag - minor bugs and potential problems that could use fixing.</p> - - <p>Do not try to auto-detect OS features in the main body of the - C code. That is the job of the configuration system.</p> - - <p>To hold down complexity, do make your code data-driven. - Especially, if you can drive logic from a table filtered out of - <code>include/Caps</code>, do it. If you find you need to augment - the data in that file in order to generate the proper table, that - is still preferable to ad-hoc code — that is why the fifth - field (flags) is there.</p> - - <p>Have fun!</p> - - <h2><a name="port" id="port">Porting Hints</a></h2> - - <p>The following notes are intended to be a first step towards - DOS and Macintosh ports of the ncurses libraries.</p> - - <p>The following library modules are “pure curses”; - they operate only on the curses internal structures, do all - output through other curses calls (not including - <code>tputs()</code> and <code>putp()</code>) and do not call any - other UNIX routines such as signal(2) or the stdio library. Thus, - they should not need to be modified for single-terminal - ports.</p> - - <blockquote> - <code>lib_addch.c lib_addstr.c lib_bkgd.c lib_box.c lib_clear.c - lib_clrbot.c lib_clreol.c lib_delch.c lib_delwin.c lib_erase.c - lib_inchstr.c lib_insch.c lib_insdel.c lib_insstr.c - lib_keyname.c lib_move.c lib_mvwin.c lib_newwin.c lib_overlay.c - lib_pad.c lib_printw.c lib_refresh.c lib_scanw.c lib_scroll.c - lib_scrreg.c lib_set_term.c lib_touch.c lib_tparm.c lib_tputs.c - lib_unctrl.c lib_window.c panel.c</code> - </blockquote> - - <p>This module is pure curses, but calls outstr():</p> - - <blockquote> - <code>lib_getstr.c</code> - </blockquote> - - <p>These modules are pure curses, except that they use - <code>tputs()</code> and <code>putp()</code>:</p> - - <blockquote> - <code>lib_beep.c lib_color.c lib_endwin.c lib_options.c - lib_slk.c lib_vidattr.c</code> - </blockquote> - - <p>This modules assist in POSIX emulation on non-POSIX - systems:</p> - - <dl> - <dt>sigaction.c</dt> - - <dd>signal calls</dd> - </dl> - - <p>The following source files will not be needed for a - single-terminal-type port.</p> - - <blockquote> - <code>alloc_entry.c captoinfo.c clear.c comp_captab.c - comp_error.c comp_hash.c comp_main.c comp_parse.c comp_scan.c - dump_entry.c infocmp.c parse_entry.c read_entry.c tput.c - write_entry.c</code> - </blockquote> - - <p>The following modules will use - open()/read()/write()/close()/lseek() on files, but no other OS - calls.</p> - - <dl> - <dt>lib_screen.c</dt> - - <dd>used to read/write screen dumps</dd> - - <dt>lib_trace.c</dt> - - <dd>used to write trace data to the logfile</dd> - </dl> - - <p>Modules that would have to be modified for a port start - here:</p> - - <p>The following modules are “pure curses” but - contain assumptions inappropriate for a memory-mapped port.</p> - - <dl> - <dt>lib_longname.c</dt> - - <dd>assumes there may be multiple terminals</dd> - - <dt>lib_acs.c</dt> - - <dd>assumes acs_map as a double indirection</dd> - - <dt>lib_mvcur.c</dt> - - <dd>assumes cursor moves have variable cost</dd> - - <dt>lib_termcap.c</dt> - - <dd>assumes there may be multiple terminals</dd> - - <dt>lib_ti.c</dt> - - <dd>assumes there may be multiple terminals</dd> - </dl> - - <p>The following modules use UNIX-specific calls:</p> - - <dl> - <dt>lib_doupdate.c</dt> - - <dd>input checking</dd> - - <dt>lib_getch.c</dt> - - <dd>read()</dd> - - <dt>lib_initscr.c</dt> - - <dd>getenv()</dd> - - <dt>lib_newterm.c</dt> - - <dt>lib_baudrate.c</dt> - - <dt>lib_kernel.c</dt> - - <dd>various tty-manipulation and system calls</dd> - - <dt>lib_raw.c</dt> - - <dd>various tty-manipulation calls</dd> - - <dt>lib_setup.c</dt> - - <dd>various tty-manipulation calls</dd> - - <dt>lib_restart.c</dt> - - <dd>various tty-manipulation calls</dd> - - <dt>lib_tstp.c</dt> - - <dd>signal-manipulation calls</dd> - - <dt>lib_twait.c</dt> - - <dd>gettimeofday(), select().</dd> - </dl> - - <hr> - - <address> - Eric S. Raymond <esr@snark.thyrsus.com> - </address> - (Note: This is <em>not</em> the <a href="#bugtrack">bug - address</a>!) -</body> -</html> diff --git a/contrib/ncurses/doc/html/ncurses-intro.html b/contrib/ncurses/doc/html/ncurses-intro.html deleted file mode 100644 index 194850246fa6..000000000000 --- a/contrib/ncurses/doc/html/ncurses-intro.html +++ /dev/null @@ -1,3390 +0,0 @@ -<!-- - $Id: ncurses-intro.html,v 1.57 2022/11/26 19:33:46 tom Exp $ - **************************************************************************** - * Copyright 2019-2020,2022 Thomas E. Dickey * - * Copyright 2000-2013,2017 Free Software Foundation, Inc. * - * * - * Permission is hereby granted, free of charge, to any person obtaining a * - * copy of this software and associated documentation files (the * - * "Software"), to deal in the Software without restriction, including * - * without limitation the rights to use, copy, modify, merge, publish, * - * distribute, distribute with modifications, sublicense, and/or sell * - * copies of the Software, and to permit persons to whom the Software is * - * furnished to do so, subject to the following conditions: * - * * - * The above copyright notice and this permission notice shall be included * - * in all copies or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * - * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * * - * Except as contained in this notice, the name(s) of the above copyright * - * holders shall not be used in advertising or otherwise to promote the * - * sale, use or other dealings in this Software without prior written * - * authorization. * - **************************************************************************** ---> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> -<html> -<head> - <meta name="generator" content= - "HTML Tidy for HTML5 for Linux version 5.6.0"> - <title>Writing Programs with NCURSES</title> - <link rel="author" href="mailto:bugs-ncurses@gnu.org"> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii"> -</head> -<body> - <h1 class="no-header">Writing Programs with NCURSES</h1> - - <h2>Writing Programs with NCURSES</h2> - - <blockquote> - by Eric S. Raymond and Zeyd M. Ben-Halim<br> - updates since release 1.9.9e by Thomas Dickey - </blockquote> - - <div class="nav"> - <h2>Contents</h2> - - <ul> - <li> - <a href="#introduction">Introduction</a> - <ul> - <li><a href="#history">A Brief History of Curses</a></li> - - <li><a href="#scope">Scope of This Document</a></li> - - <li><a href="#terminology">Terminology</a></li> - </ul> - </li> - - <li> - <a href="#curses">The Curses Library</a> - <ul> - <li> - <a href="#overview">An Overview of Curses</a> - <ul> - <li><a href="#compiling">Compiling Programs using - Curses</a></li> - - <li><a href="#updating">Updating the Screen</a></li> - - <li><a href="#stdscr">Standard Windows and Function - Naming Conventions</a></li> - - <li><a href="#variables">Variables</a></li> - </ul> - </li> - - <li> - <a href="#using">Using the Library</a> - <ul> - <li><a href="#starting">Starting up</a></li> - - <li><a href="#output">Output</a></li> - - <li><a href="#input">Input</a></li> - - <li><a href="#formschars">Using Forms Characters</a></li> - - <li><a href="#attributes">Character Attributes and - Color</a></li> - - <li><a href="#mouse">Mouse Interfacing</a></li> - - <li><a href="#finishing">Finishing Up</a></li> - </ul> - </li> - - <li> - <a href="#functions">Function Descriptions</a> - <ul> - <li><a href="#init">Initialization and Wrapup</a></li> - - <li><a href="#flush">Causing Output to the - Terminal</a></li> - - <li><a href="#lowlevel">Low-Level Capability - Access</a></li> - - <li><a href="#debugging">Debugging</a></li> - </ul> - </li> - - <li> - <a href="#hints">Hints, Tips, and Tricks</a> - <ul> - <li><a href="#caution">Some Notes of Caution</a></li> - - <li><a href="#leaving">Temporarily Leaving ncurses - Mode</a></li> - - <li><a href="#xterm">Using <code>ncurses</code> under - <code>xterm</code></a></li> - - <li><a href="#screens">Handling Multiple Terminal - Screens</a></li> - - <li><a href="#testing">Testing for Terminal - Capabilities</a></li> - - <li><a href="#tuning">Tuning for Speed</a></li> - - <li><a href="#special">Special Features of - <code>ncurses</code></a></li> - </ul> - </li> - - <li> - <a href="#compat">Compatibility with Older Versions</a> - <ul> - <li><a href="#refbug">Refresh of Overlapping - Windows</a></li> - - <li><a href="#backbug">Background Erase</a></li> - </ul> - </li> - - <li><a href="#xsifuncs">XSI Curses Conformance</a></li> - </ul> - </li> - - <li> - <a href="#panels">The Panels Library</a> - <ul> - <li><a href="#pcompile">Compiling With the Panels - Library</a></li> - - <li><a href="#poverview">Overview of Panels</a></li> - - <li><a href="#pstdscr">Panels, Input, and the Standard - Screen</a></li> - - <li><a href="#hiding">Hiding Panels</a></li> - - <li><a href="#pmisc">Miscellaneous Other Facilities</a></li> - </ul> - </li> - - <li> - <a href="#menu">The Menu Library</a> - <ul> - <li><a href="#mcompile">Compiling with the menu - Library</a></li> - - <li><a href="#moverview">Overview of Menus</a></li> - - <li><a href="#mselect">Selecting items</a></li> - - <li><a href="#mdisplay">Menu Display</a></li> - - <li><a href="#mwindows">Menu Windows</a></li> - - <li><a href="#minput">Processing Menu Input</a></li> - - <li><a href="#mmisc">Miscellaneous Other Features</a></li> - </ul> - </li> - - <li> - <a href="#form">The Forms Library</a> - <ul> - <li><a href="#fcompile">Compiling with the forms - Library</a></li> - - <li><a href="#foverview">Overview of Forms</a></li> - - <li><a href="#fcreate">Creating and Freeing Fields and - Forms</a></li> - - <li> - <a href="#fattributes">Fetching and Changing Field - Attributes</a> - <ul> - <li><a href="#fsizes">Fetching Size and Location - Data</a></li> - - <li><a href="#flocation">Changing the Field - Location</a></li> - - <li><a href="#fjust">The Justification Attribute</a></li> - - <li><a href="#fdispatts">Field Display Attributes</a></li> - - <li><a href="#foptions">Field Option Bits</a></li> - - <li><a href="#fstatus">Field Status</a></li> - - <li><a href="#fuser">Field User Pointer</a></li> - </ul> - </li> - - <li><a href="#fdynamic">Variable-Sized Fields</a></li> - - <li> - <a href="#fvalidation">Field Validation</a> - <ul> - <li><a href="#ftype_alpha">TYPE_ALPHA</a></li> - - <li><a href="#ftype_alnum">TYPE_ALNUM</a></li> - - <li><a href="#ftype_enum">TYPE_ENUM</a></li> - - <li><a href="#ftype_integer">TYPE_INTEGER</a></li> - - <li><a href="#ftype_numeric">TYPE_NUMERIC</a></li> - - <li><a href="#ftype_regexp">TYPE_REGEXP</a></li> - </ul> - </li> - - <li><a href="#fbuffer">Direct Field Buffer - Manipulation</a></li> - - <li><a href="#formattrs">Attributes of Forms</a></li> - - <li><a href="#fdisplay">Control of Form Display</a></li> - - <li> - <a href="#fdriver">Input Processing in the Forms - Driver</a> - <ul> - <li><a href="#fpage">Page Navigation Requests</a></li> - - <li><a href="#ffield">Inter-Field Navigation - Requests</a></li> - - <li><a href="#fifield">Intra-Field Navigation - Requests</a></li> - - <li><a href="#fscroll">Scrolling Requests</a></li> - - <li><a href="#fedit">Field Editing Requests</a></li> - - <li><a href="#forder">Order Requests</a></li> - - <li><a href="#fappcmds">Application Commands</a></li> - </ul> - </li> - - <li><a href="#fhooks">Field Change Hooks</a></li> - - <li><a href="#ffocus">Field Change Commands</a></li> - - <li><a href="#frmoptions">Form Options</a></li> - - <li> - <a href="#fcustom">Custom Validation Types</a> - <ul> - <li><a href="#flinktypes">Union Types</a></li> - - <li><a href="#fnewtypes">New Field Types</a></li> - - <li><a href="#fcheckargs">Validation Function - Arguments</a></li> - - <li><a href="#fcustorder">Order Functions For Custom - Types</a></li> - - <li><a href="#fcustprobs">Avoiding Problems</a></li> - </ul> - </li> - </ul> - </li> - </ul> - </div> - - <hr> - - <h2><a name="introduction" id="introduction">Introduction</a></h2> - - <p>This document is an introduction to programming with - <code>curses</code>. It is not an exhaustive reference for the - curses Application Programming Interface (API); that role is - filled by the <code>curses</code> manual pages. Rather, it is - intended to help C programmers ease into using the package.</p> - - <p>This document is aimed at C applications programmers not yet - specifically familiar with ncurses. If you are already an - experienced <code>curses</code> programmer, you should - nevertheless read the sections on <a href="#mouse">Mouse - Interfacing</a>, <a href="#debugging">Debugging</a>, <a href= - "#compat">Compatibility with Older Versions</a>, and <a href= - "#hints">Hints, Tips, and Tricks</a>. These will bring you up to - speed on the special features and quirks of the - <code>ncurses</code> implementation. If you are not so - experienced, keep reading.</p> - - <p>The <code>curses</code> package is a subroutine library for - terminal-independent screen-painting and input-event handling - which presents a high level screen model to the programmer, - hiding differences between terminal types and doing automatic - optimization of output to change one screen full of text into - another. <code>Curses</code> uses terminfo, which is a database - format that can describe the capabilities of thousands of - different terminals.</p> - - <p>The <code>curses</code> API may seem something of an archaism - on UNIX desktops increasingly dominated by X, Motif, and Tcl/Tk. - Nevertheless, UNIX still supports tty lines and X supports - <em>xterm(1)</em>; the <code>curses</code> API has the advantage - of (a) back-portability to character-cell terminals, and (b) - simplicity. For an application that does not require bit-mapped - graphics and multiple fonts, an interface implementation using - <code>curses</code> will typically be a great deal simpler and - less expensive than one using an X toolkit.</p> - - <h3><a name="history" id="history">A Brief History of Curses</a></h3> - - <p>Historically, the first ancestor of <code>curses</code> was - the routines written to provide screen-handling for the - <code>vi</code> editor; these used the <code>termcap</code> - database facility (both released in 3BSD) for describing terminal - capabilities. These routines were abstracted into a documented - library and first released with the early BSD UNIX versions. All - of this work was done by students at the University of California - (Berkeley campus). The curses library was first published in - 4.0BSD, a year after 3BSD (i.e., late 1980).</p> - - <p>After graduation, one of those students went to work at - AT&T Bell Labs, and made an improved <code>termcap</code> - library called <code>terminfo</code> (i.e., - “libterm”), and adapted the curses library to use - this. That was subsequently released in System V Release 2 (early - 1984). Thereafter, other developers added to the curses and - terminfo libraries. For instance, a student at Cornell University - wrote an improved terminfo library as well as a tool - (<code>tic</code>) to compile the terminal descriptions. As a - general rule, AT&T did not identify the developers in the - source-code or documentation; the <code>tic</code> and - <code>infocmp</code> programs are the exceptions.</p> - - <p>System V Release 3 (System III UNIX) from Bell Labs featured a - rewritten and much-improved <code>curses</code> library, along - with the <code>tic</code> program (late 1986).</p> - - <p>To recap, terminfo is based on Berkeley's termcap database, - but contains a number of improvements and extensions. - Parameterized capabilities strings were introduced, making it - possible to describe multiple video attributes, and colors and to - handle far more unusual terminals than possible with termcap. In - the later AT&T System V releases, <code>curses</code> evolved - to use more facilities and offer more capabilities, going far - beyond BSD curses in power and flexibility.</p> - - <h3><a name="scope" id="scope">Scope of This Document</a></h3> - - <p>This document describes <code>ncurses</code>, a free - implementation of the System V <code>curses</code> API with some - clearly marked extensions. It includes the following System V - curses features:</p> - - <ul> - <li>Support for multiple screen highlights (BSD curses could - only handle one “standout” highlight, usually - reverse-video).</li> - - <li>Support for line- and box-drawing using forms - characters.</li> - - <li>Recognition of function keys on input.</li> - - <li>Color support.</li> - - <li>Support for pads (windows of larger than screen size on - which the screen or a subwindow defines a viewport).</li> - </ul> - - <p>Also, this package makes use of the insert and delete line and - character features of terminals so equipped, and determines how - to optimally use these features with no help from the programmer. - It allows arbitrary combinations of video attributes to be - displayed, even on terminals that leave “magic - cookies” on the screen to mark changes in attributes.</p> - - <p>The <code>ncurses</code> package can also capture and use - event reports from a mouse in some environments (notably, xterm - under the X window system). This document includes tips for using - the mouse.</p> - - <p>The <code>ncurses</code> package was originated by Pavel - Curtis. The original maintainer of this package is <a href= - "mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</a> - <zmbenhal@netcom.com>. <a href= - "mailto:esr@snark.thyrsus.com">Eric S. Raymond</a> - <esr@snark.thyrsus.com> wrote many of the new features in - versions after 1.8.1 and wrote most of this introduction. - Jürgen Pfeifer wrote all of the menu and forms code as well - as the <a href="http://www.adahome.com">Ada95</a> binding. - Ongoing work is being done by <a href= - "mailto:dickey@invisible-island.net">Thomas Dickey</a> - (maintainer). Contact the current maintainers at <a href= - "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.</p> - - <p>This document also describes the <a href="#panels">panels</a> - extension library, similarly modeled on the SVr4 panels facility. - This library allows you to associate backing store with each of a - stack or deck of overlapping windows, and provides operations for - moving windows around in the stack that change their visibility - in the natural way (handling window overlaps).</p> - - <p>Finally, this document describes in detail the <a href= - "#menu">menus</a> and <a href="#form">forms</a> extension - libraries, also cloned from System V, which support easy - construction and sequences of menus and fill-in forms.</p> - - <h3><a name="terminology" id="terminology">Terminology</a></h3> - - <p>In this document, the following terminology is used with - reasonable consistency:</p> - - <dl> - <dt>window</dt> - - <dd>A data structure describing a sub-rectangle of the screen - (possibly the entire screen). You can write to a window as - though it were a miniature screen, scrolling independently of - other windows on the physical screen.</dd> - - <dt>screens</dt> - - <dd>A subset of windows which are as large as the terminal - screen, i.e., they start at the upper left hand corner and - encompass the lower right hand corner. One of these, - <code>stdscr</code>, is automatically provided for the - programmer.</dd> - - <dt>terminal screen</dt> - - <dd>The package's idea of what the terminal display currently - looks like, i.e., what the user sees now. This is a special - screen.</dd> - </dl> - - <h2><a name="curses" id="curses">The Curses Library</a></h2> - - <h3><a name="overview" id="overview">An Overview of Curses</a></h3> - - <h4><a name="compiling" id="compiling">Compiling Programs using - Curses</a></h4> - - <p>In order to use the library, it is necessary to have certain - types and variables defined. Therefore, the programmer must have - a line:</p> - - <pre class="code-block"> - #include <curses.h> -</pre> - <p>at the top of the program source. The screen package uses the - Standard I/O library, so <code><curses.h></code> includes - <code><stdio.h></code>. <code><curses.h></code> also - includes <code><termios.h></code>, - <code><termio.h></code>, or <code><sgtty.h></code> - depending on your system. It is redundant (but harmless) for the - programmer to do these includes, too. In linking with - <code>curses</code> you need to have <code>-lncurses</code> in - your LDFLAGS or on the command line. There is no need for any - other libraries.</p> - - <h4><a name="updating" id="updating">Updating the Screen</a></h4> - - <p>In order to update the screen optimally, it is necessary for - the routines to know what the screen currently looks like and - what the programmer wants it to look like next. For this purpose, - a data type (structure) named WINDOW is defined which describes a - window image to the routines, including its starting position on - the screen (the (y, x) coordinates of the upper left hand corner) - and its size. One of these (called <code>curscr</code>, for - current screen) is a screen image of what the terminal currently - looks like. Another screen (called <code>stdscr</code>, for - standard screen) is provided by default to make changes on.</p> - - <p>A window is a purely internal representation. It is used to - build and store a potential image of a portion of the terminal. - It does not bear any necessary relation to what is really on the - terminal screen; it is more like a scratchpad or write - buffer.</p> - - <p>To make the section of physical screen corresponding to a - window reflect the contents of the window structure, the routine - <code>refresh()</code> (or <code>wrefresh()</code> if the window - is not <code>stdscr</code>) is called.</p> - - <p>A given physical screen section may be within the scope of any - number of overlapping windows. Also, changes can be made to - windows in any order, without regard to motion efficiency. Then, - at will, the programmer can effectively say “make it look - like this,” and let the package implementation determine - the most efficient way to repaint the screen.</p> - - <h4><a name="stdscr" id="stdscr">Standard Windows and Function - Naming Conventions</a></h4> - - <p>As hinted above, the routines can use several windows, but two - are automatically given: <code>curscr</code>, which knows what - the terminal looks like, and <code>stdscr</code>, which is what - the programmer wants the terminal to look like next. The user - should never actually access <code>curscr</code> directly. - Changes should be made to through the API, and then the routine - <code>refresh()</code> (or <code>wrefresh()</code>) called.</p> - - <p>Many functions are defined to use <code>stdscr</code> as a - default screen. For example, to add a character to - <code>stdscr</code>, one calls <code>addch()</code> with the - desired character as argument. To write to a different window. - use the routine <code>waddch()</code> (for - <strong>w</strong>indow-specific addch()) is provided. This - convention of prepending function names with a “w” - when they are to be applied to specific windows is consistent. - The only routines which do not follow it are those for which a - window must always be specified.</p> - - <p>In order to move the current (y, x) coordinates from one point - to another, the routines <code>move()</code> and - <code>wmove()</code> are provided. However, it is often desirable - to first move and then perform some I/O operation. In order to - avoid clumsiness, most I/O routines can be preceded by the prefix - “mv” and the desired (y, x) coordinates prepended to - the arguments to the function. For example, the calls</p> - - <pre class="code-block"> - move(y, x); - addch(ch); -</pre> - <p>can be replaced by</p> - - <pre class="code-block"> - mvaddch(y, x, ch); -</pre> - <p>and</p> - - <pre class="code-block"> - wmove(win, y, x); - waddch(win, ch); -</pre> - <p>can be replaced by</p> - - <pre class="code-block"> - mvwaddch(win, y, x, ch); -</pre> - <p>Note that the window description pointer (win) comes before - the added (y, x) coordinates. If a function requires a window - pointer, it is always the first parameter passed.</p> - - <h4><a name="variables" id="variables">Variables</a></h4> - - <p>The <code>curses</code> library sets some variables describing - the terminal capabilities.</p> - - <pre class="code-block"> - type name description - ------------------------------------------------------------------ - int LINES number of lines on the terminal - int COLS number of columns on the terminal -</pre> - <p>The <code>curses.h</code> also introduces some - <code>#define</code> constants and types of general - usefulness:</p> - - <dl> - <dt><code>bool</code> - </dt> - - <dd>boolean type, actually a “char” (e.g., - <code>bool doneit;</code>)</dd> - - <dt><code>TRUE</code> - </dt> - - <dd>boolean “true” flag (1).</dd> - - <dt><code>FALSE</code> - </dt> - - <dd>boolean “false” flag (0).</dd> - - <dt><code>ERR</code> - </dt> - - <dd>error flag returned by routines on a failure (-1).</dd> - - <dt><code>OK</code> - </dt> - - <dd>error flag returned by routines when things go right.</dd> - </dl> - - <h3><a name="using" id="using">Using the Library</a></h3> - - <p>Now we describe how to actually use the screen package. In it, - we assume all updating, reading, etc. is applied to - <code>stdscr</code>. These instructions will work on any window, - providing you change the function names and parameters as - mentioned above.</p> - - <p>Here is a sample program to motivate the discussion:</p> - - <pre class="code-block"> -#include <stdlib.h> -#include <curses.h> -#include <signal.h> - -static void finish(int sig); - -int -main(int argc, char *argv[]) -{ - int num = 0; - - /* initialize your non-curses data structures here */ - - (void) signal(SIGINT, finish); /* arrange interrupts to terminate */ - - (void) initscr(); /* initialize the curses library */ - keypad(stdscr, TRUE); /* enable keyboard mapping */ - (void) nonl(); /* tell curses not to do NL->CR/NL on output */ - (void) cbreak(); /* take input chars one at a time, no wait for \n */ - (void) echo(); /* echo input - in color */ - - if (has_colors()) - { - start_color(); - - /* - * Simple color assignment, often all we need. Color pair 0 cannot - * be redefined. This example uses the same value for the color - * pair as for the foreground color, though of course that is not - * necessary: - */ - init_pair(1, COLOR_RED, COLOR_BLACK); - init_pair(2, COLOR_GREEN, COLOR_BLACK); - init_pair(3, COLOR_YELLOW, COLOR_BLACK); - init_pair(4, COLOR_BLUE, COLOR_BLACK); - init_pair(5, COLOR_CYAN, COLOR_BLACK); - init_pair(6, COLOR_MAGENTA, COLOR_BLACK); - init_pair(7, COLOR_WHITE, COLOR_BLACK); - } - - for (;;) - { - int c = getch(); /* refresh, accept single keystroke of input */ - attrset(COLOR_PAIR(num % 8)); - num++; - - /* process the command keystroke */ - } - - finish(0); /* we are done */ -} - -static void finish(int sig) -{ - endwin(); - - /* do your non-curses wrapup here */ - - exit(0); -} -</pre> - <h4><a name="starting" id="starting">Starting up</a></h4> - - <p>In order to use the screen package, the routines must know - about terminal characteristics, and the space for - <code>curscr</code> and <code>stdscr</code> must be allocated. - These function <code>initscr()</code> does both these things. - Since it must allocate space for the windows, it can overflow - memory when attempting to do so. On the rare occasions this - happens, <code>initscr()</code> will terminate the program with - an error message. <code>initscr()</code> must always be called - before any of the routines which affect windows are used. If it - is not, the program will core dump as soon as either - <code>curscr</code> or <code>stdscr</code> are referenced. - However, it is usually best to wait to call it until after you - are sure you will need it, like after checking for startup - errors. Terminal status changing routines like <code>nl()</code> - and <code>cbreak()</code> should be called after - <code>initscr()</code>.</p> - - <p>Once the screen windows have been allocated, you can set them - up for your program. If you want to, say, allow a screen to - scroll, use <code>scrollok()</code>. If you want the cursor to be - left in place after the last change, use <code>leaveok()</code>. - If this is not done, <code>refresh()</code> will move the cursor - to the window's current (y, x) coordinates after updating it.</p> - - <p>You can create new windows of your own using the functions - <code>newwin()</code>, <code>derwin()</code>, and - <code>subwin()</code>. The routine <code>delwin()</code> will - allow you to get rid of old windows. All the options described - above can be applied to any window.</p> - - <h4><a name="output" id="output">Output</a></h4> - - <p>Now that we have set things up, we will want to actually - update the terminal. The basic functions used to change what will - go on a window are <code>addch()</code> and <code>move()</code>. - <code>addch()</code> adds a character at the current (y, x) - coordinates. <code>move()</code> changes the current (y, x) - coordinates to whatever you want them to be. It returns - <code>ERR</code> if you try to move off the window. As mentioned - above, you can combine the two into <code>mvaddch()</code> to do - both things at once.</p> - - <p>The other output functions, such as <code>addstr()</code> and - <code>printw()</code>, all call <code>addch()</code> to add - characters to the window.</p> - - <p>After you have put on the window what you want there, when you - want the portion of the terminal covered by the window to be made - to look like it, you must call <code>refresh()</code>. In order - to optimize finding changes, <code>refresh()</code> assumes that - any part of the window not changed since the last - <code>refresh()</code> of that window has not been changed on the - terminal, i.e., that you have not refreshed a portion of the - terminal with an overlapping window. If this is not the case, the - routine <code>touchwin()</code> is provided to make it look like - the entire window has been changed, thus making - <code>refresh()</code> check the whole subsection of the terminal - for changes.</p> - - <p>If you call <code>wrefresh()</code> with <code>curscr</code> - as its argument, it will make the screen look like - <code>curscr</code> thinks it looks like. This is useful for - implementing a command which would redraw the screen in case it - get messed up.</p> - - <h4><a name="input" id="input">Input</a></h4> - - <p>The complementary function to <code>addch()</code> is - <code>getch()</code> which, if echo is set, will call - <code>addch()</code> to echo the character. Since the screen - package needs to know what is on the terminal at all times, if - characters are to be echoed, the tty must be in raw or cbreak - mode. Since initially the terminal has echoing enabled and is in - ordinary “cooked” mode, one or the other has to - changed before calling <code>getch()</code>; otherwise, the - program's output will be unpredictable.</p> - - <p>When you need to accept line-oriented input in a window, the - functions <code>wgetstr()</code> and friends are available. There - is even a <code>wscanw()</code> function that can do - <code>scanf()</code>(3)-style multi-field parsing on window - input. These pseudo-line-oriented functions turn on echoing while - they execute.</p> - - <p>The example code above uses the call <code>keypad(stdscr, - TRUE)</code> to enable support for function-key mapping. With - this feature, the <code>getch()</code> code watches the input - stream for character sequences that correspond to arrow and - function keys. These sequences are returned as pseudo-character - values. The <code>#define</code> values returned are listed in - the <code>curses.h</code> The mapping from sequences to - <code>#define</code> values is determined by <code>key_</code> - capabilities in the terminal's terminfo entry.</p> - - <h4><a name="formschars" id="formschars">Using Forms - Characters</a></h4> - - <p>The <code>addch()</code> function (and some others, including - <code>box()</code> and <code>border()</code>) can accept some - pseudo-character arguments which are specially defined by - <code>ncurses</code>. These are <code>#define</code> values set - up in the <code>curses.h</code> header; see there for a complete - list (look for the prefix <code>ACS_</code>).</p> - - <p>The most useful of the ACS defines are the forms-drawing - characters. You can use these to draw boxes and simple graphs on - the screen. If the terminal does not have such characters, - <code>curses.h</code> will map them to a recognizable (though - ugly) set of ASCII defaults.</p> - - <h4><a name="attributes" id="attributes">Character Attributes and - Color</a></h4> - - <p>The <code>ncurses</code> package supports screen highlights - including standout, reverse-video, underline, and blink. It also - supports color, which is treated as another kind of - highlight.</p> - - <p>Highlights are encoded, internally, as high bits of the - pseudo-character type (<code>chtype</code>) that - <code>curses.h</code> uses to represent the contents of a screen - cell. See the <code>curses.h</code> header file for a complete - list of highlight mask values (look for the prefix - <code>A_</code>).</p> - - <p>There are two ways to make highlights. One is to logical-or - the value of the highlights you want into the character argument - of an <code>addch()</code> call, or any other output call that - takes a <code>chtype</code> argument.</p> - - <p>The other is to set the current-highlight value. This is - <em>logical-OR</em>ed with any highlight you specify the first - way. You do this with the functions <code>attron()</code>, - <code>attroff()</code>, and <code>attrset()</code>; see the - manual pages for details. Color is a special kind of highlight. - The package actually thinks in terms of color pairs, combinations - of foreground and background colors. The sample code above sets - up eight color pairs, all of the guaranteed-available colors on - black. Note that each color pair is, in effect, given the name of - its foreground color. Any other range of eight non-conflicting - values could have been used as the first arguments of the - <code>init_pair()</code> values.</p> - - <p>Once you have done an <code>init_pair()</code> that creates - color-pair N, you can use <code>COLOR_PAIR(N)</code> as a - highlight that invokes that particular color combination. Note - that <code>COLOR_PAIR(N)</code>, for constant N, is itself a - compile-time constant and can be used in initializers.</p> - - <h4><a name="mouse" id="mouse">Mouse Interfacing</a></h4> - - <p>The <code>ncurses</code> library also provides a mouse - interface.</p> - - <blockquote> - <strong>NOTE:</strong> this facility is specific to - <code>ncurses</code>, it is not part of either the XSI Curses - standard, nor of System V Release 4, nor BSD curses. System V - Release 4 curses contains code with similar interface - definitions, however it is not documented. Other than by - disassembling the library, we have no way to determine exactly - how that mouse code works. Thus, we recommend that you wrap - mouse-related code in an #ifdef using the feature macro - NCURSES_MOUSE_VERSION so it will not be compiled and linked on - non-ncurses systems. - </blockquote> - - <p>Presently, mouse event reporting works in the following - environments:</p> - - <ul> - <li>xterm and similar programs such as rxvt.</li> - - <li>Linux console, when configured with <code>gpm</code>(1), - Alessandro Rubini's mouse server.</li> - - <li>FreeBSD sysmouse (console)</li> - - <li>OS/2 EMX</li> - </ul> - - <p>The mouse interface is very simple. To activate it, you use - the function <code>mousemask()</code>, passing it as first - argument a bit-mask that specifies what kinds of events you want - your program to be able to see. It will return the bit-mask of - events that actually become visible, which may differ from the - argument if the mouse device is not capable of reporting some of - the event types you specify.</p> - - <p>Once the mouse is active, your application's command loop - should watch for a return value of <code>KEY_MOUSE</code> from - <code>wgetch()</code>. When you see this, a mouse event report - has been queued. To pick it off the queue, use the function - <code>getmouse()</code> (you must do this before the next - <code>wgetch()</code>, otherwise another mouse event might come - in and make the first one inaccessible).</p> - - <p>Each call to <code>getmouse()</code> fills a structure (the - address of which you will pass it) with mouse event data. The - event data includes zero-origin, screen-relative character-cell - coordinates of the mouse pointer. It also includes an event mask. - Bits in this mask will be set, corresponding to the event type - being reported.</p> - - <p>The mouse structure contains two additional fields which may - be significant in the future as ncurses interfaces to new kinds - of pointing device. In addition to x and y coordinates, there is - a slot for a z coordinate; this might be useful with - touch-screens that can return a pressure or duration parameter. - There is also a device ID field, which could be used to - distinguish between multiple pointing devices.</p> - - <p>The class of visible events may be changed at any time via - <code>mousemask()</code>. Events that can be reported include - presses, releases, single-, double- and triple-clicks (you can - set the maximum button-down time for clicks). If you do not make - clicks visible, they will be reported as press-release pairs. In - some environments, the event mask may include bits reporting the - state of shift, alt, and ctrl keys on the keyboard during the - event.</p> - - <p>A function to check whether a mouse event fell within a given - window is also supplied. You can use this to see whether a given - window should consider a mouse event relevant to it.</p> - - <p>Because mouse event reporting will not be available in all - environments, it would be unwise to build <code>ncurses</code> - applications that <em>require</em> the use of a mouse. Rather, - you should use the mouse as a shortcut for point-and-shoot - commands your application would normally accept from the - keyboard. Two of the test games in the <code>ncurses</code> - distribution (<code>bs</code> and <code>knight</code>) contain - code that illustrates how this can be done.</p> - - <p>See the manual page <code>curs_mouse(3X)</code> for full - details of the mouse-interface functions.</p> - - <h4><a name="finishing" id="finishing">Finishing Up</a></h4> - - <p>In order to clean up after the <code>ncurses</code> routines, - the routine <code>endwin()</code> is provided. It restores tty - modes to what they were when <code>initscr()</code> was first - called, and moves the cursor down to the lower-left corner. Thus, - anytime after the call to initscr, <code>endwin()</code> should - be called before exiting.</p> - - <h3><a name="functions" id="functions">Function Descriptions</a></h3> - - <p>We describe the detailed behavior of some important curses - functions here, as a supplement to the manual page - descriptions.</p> - - <h4><a name="init" id="init">Initialization and Wrapup</a></h4> - - <dl> - <dt><code>initscr()</code> - </dt> - - <dd>The first function called should almost always be - <code>initscr()</code>. This will determine the terminal type - and initialize curses data structures. <code>initscr()</code> - also arranges that the first call to <code>refresh()</code> - will clear the screen. If an error occurs a message is written - to standard error and the program exits. Otherwise it returns a - pointer to stdscr. A few functions may be called before initscr - (<code>slk_init()</code>, <code>filter()</code>, - <code>ripoffline()</code>, <code>use_env()</code>, and, if you - are using multiple terminals, <code>newterm()</code>.)</dd> - - <dt><code>endwin()</code> - </dt> - - <dd>Your program should always call <code>endwin()</code> - before exiting or shelling out of the program. This function - will restore tty modes, move the cursor to the lower left - corner of the screen, reset the terminal into the proper - non-visual mode. Calling <code>refresh()</code> or - <code>doupdate()</code> after a temporary escape from the - program will restore the ncurses screen from before the - escape.</dd> - - <dt><code>newterm(type, ofp, ifp)</code> - </dt> - - <dd>A program which outputs to more than one terminal should - use <code>newterm()</code> instead of <code>initscr()</code>. - <code>newterm()</code> should be called once for each terminal. - It returns a variable of type <code>SCREEN *</code> which - should be saved as a reference to that terminal. (NOTE: a - SCREEN variable is not a <em>screen</em> in the sense we are - describing in this introduction, but a collection of parameters - used to assist in optimizing the display.) The arguments are - the type of the terminal (a string) and <code>FILE</code> - pointers for the output and input of the terminal. If type is - NULL then the environment variable <code>$TERM</code> is used. - <code>endwin()</code> should called once at wrapup time for - each terminal opened using this function.</dd> - - <dt><code>set_term(new)</code> - </dt> - - <dd>This function is used to switch to a different terminal - previously opened by <code>newterm()</code>. The screen - reference for the new terminal is passed as the parameter. The - previous terminal is returned by the function. All other calls - affect only the current terminal.</dd> - - <dt><code>delscreen(sp)</code> - </dt> - - <dd>The inverse of <code>newterm()</code>; deallocates the data - structures associated with a given <code>SCREEN</code> - reference.</dd> - </dl> - - <h4><a name="flush" id="flush">Causing Output to the Terminal</a></h4> - - <dl> - <dt><code>refresh()</code> and <code>wrefresh(win)</code></dt> - - <dd>These functions must be called to actually get any output - on the terminal, as other routines merely manipulate data - structures. <code>wrefresh()</code> copies the named window to - the physical terminal screen, taking into account what is - already there in order to do optimizations. - <code>refresh()</code> does a refresh of <code>stdscr</code>. - Unless <code>leaveok()</code> has been enabled, the physical - cursor of the terminal is left at the location of the window's - cursor.</dd> - - <dt><code>doupdate()</code> and - <code>wnoutrefresh(win)</code></dt> - - <dd>These two functions allow multiple updates with more - efficiency than wrefresh. To use them, it is important to - understand how curses works. In addition to all the window - structures, curses keeps two data structures representing the - terminal screen: a physical screen, describing what is actually - on the screen, and a virtual screen, describing what the - programmer wants to have on the screen. wrefresh works by first - copying the named window to the virtual screen - (<code>wnoutrefresh()</code>), and then calling the routine to - update the screen (<code>doupdate()</code>). If the programmer - wishes to output several windows at once, a series of calls to - <code>wrefresh</code> will result in alternating calls to - <code>wnoutrefresh()</code> and <code>doupdate()</code>, - causing several bursts of output to the screen. By calling - <code>wnoutrefresh()</code> for each window, it is then - possible to call <code>doupdate()</code> once, resulting in - only one burst of output, with fewer total characters - transmitted (this also avoids a visually annoying flicker at - each update).</dd> - </dl> - - <h4><a name="lowlevel" id="lowlevel">Low-Level Capability - Access</a></h4> - - <dl> - <dt><code>setupterm(term, filenum, errret)</code> - </dt> - - <dd> - This routine is called to initialize a terminal's - description, without setting up the curses screen structures - or changing the tty-driver mode bits. <code>term</code> is - the character string representing the name of the terminal - being used. <code>filenum</code> is the UNIX file descriptor - of the terminal to be used for output. <code>errret</code> is - a pointer to an integer, in which a success or failure - indication is returned. The values returned can be 1 (all is - well), 0 (no such terminal), or -1 (some problem locating the - terminfo database). - <p>The value of <code>term</code> can be given as NULL, which - will cause the value of <code>TERM</code> in the environment - to be used. The <code>errret</code> pointer can also be given - as NULL, meaning no error code is wanted. If - <code>errret</code> is defaulted, and something goes wrong, - <code>setupterm()</code> will print an appropriate error - message and exit, rather than returning. Thus, a simple - program can call setupterm(0, 1, 0) and not worry about - initialization errors.</p> - - <p>After the call to <code>setupterm()</code>, the global - variable <code>cur_term</code> is set to point to the current - structure of terminal capabilities. By calling - <code>setupterm()</code> for each terminal, and saving and - restoring <code>cur_term</code>, it is possible for a program - to use two or more terminals at once. - <code>Setupterm()</code> also stores the names section of the - terminal description in the global character array - <code>ttytype[]</code>. Subsequent calls to - <code>setupterm()</code> will overwrite this array, so you - will have to save it yourself if need be.</p> - </dd> - </dl> - - <h4><a name="debugging" id="debugging">Debugging</a></h4> - - <blockquote> - <strong>NOTE:</strong> These functions are not part of the - standard curses API! - </blockquote> - - <dl> - <dt><code>trace()</code> - </dt> - - <dd>This function can be used to explicitly set a trace level. - If the trace level is nonzero, execution of your program will - generate a file called “trace” in the current - working directory containing a report on the library's actions. - Higher trace levels enable more detailed (and verbose) - reporting -- see comments attached to <code>TRACE_</code> - defines in the <code>curses.h</code> file for details. (It is - also possible to set a trace level by assigning a trace level - value to the environment variable - <code>NCURSES_TRACE</code>).</dd> - - <dt><code>_tracef()</code> - </dt> - - <dd>This function can be used to output your own debugging - information. It is only available only if you link with - -lncurses_g. It can be used the same way as - <code>printf()</code>, only it outputs a newline after the end - of arguments. The output goes to a file called - <code>trace</code> in the current directory.</dd> - </dl> - - <p>Trace logs can be difficult to interpret due to the sheer - volume of data dumped in them. There is a script called - <strong>tracemunch</strong> included with the - <code>ncurses</code> distribution that can alleviate this problem - somewhat; it compacts long sequences of similar operations into - more succinct single-line pseudo-operations. These pseudo-ops can - be distinguished by the fact that they are named in capital - letters.</p> - - <h3><a name="hints" id="hints">Hints, Tips, and Tricks</a></h3> - - <p>The <code>ncurses</code> manual pages are a complete reference - for this library. In the remainder of this document, we discuss - various useful methods that may not be obvious from the manual - page descriptions.</p> - - <h4><a name="caution" id="caution">Some Notes of Caution</a></h4> - - <p>If you find yourself thinking you need to use - <code>noraw()</code> or <code>nocbreak()</code>, think again and - move carefully. It is probably better design to use - <code>getstr()</code> or one of its relatives to simulate cooked - mode. The <code>noraw()</code> and <code>nocbreak()</code> - functions try to restore cooked mode, but they may end up - clobbering some control bits set before you started your - application. Also, they have always been poorly documented, and - are likely to hurt your application's usability with other curses - libraries.</p> - - <p>Bear in mind that <code>refresh()</code> is a synonym for - <code>wrefresh(stdscr)</code>. Do not try to mix use of - <code>stdscr</code> with use of windows declared by - <code>newwin()</code>; a <code>refresh()</code> call will blow - them off the screen. The right way to handle this is to use - <code>subwin()</code>, or not touch <code>stdscr</code> at all - and tile your screen with declared windows which you then - <code>wnoutrefresh()</code> somewhere in your program event loop, - with a single <code>doupdate()</code> call to trigger actual - repainting.</p> - - <p>You are much less likely to run into problems if you design - your screen layouts to use tiled rather than overlapping windows. - Historically, curses support for overlapping windows has been - weak, fragile, and poorly documented. The <code>ncurses</code> - library is not yet an exception to this rule.</p> - - <p>There is a panels library included in the <code>ncurses</code> - distribution that does a pretty good job of strengthening the - overlapping-windows facilities.</p> - - <p>Try to avoid using the global variables LINES and COLS. Use - <code>getmaxyx()</code> on the <code>stdscr</code> context - instead. Reason: your code may be ported to run in an environment - with window resizes, in which case several screens could be open - with different sizes.</p> - - <h4><a name="leaving" id="leaving">Temporarily Leaving NCURSES - Mode</a></h4> - - <p>Sometimes you will want to write a program that spends most of - its time in screen mode, but occasionally returns to ordinary - “cooked” mode. A common reason for this is to support - shell-out. This behavior is simple to arrange in - <code>ncurses</code>.</p> - - <p>To leave <code>ncurses</code> mode, call <code>endwin()</code> - as you would if you were intending to terminate the program. This - will take the screen back to cooked mode; you can do your - shell-out. When you want to return to <code>ncurses</code> mode, - simply call <code>refresh()</code> or <code>doupdate()</code>. - This will repaint the screen.</p> - - <p>There is a boolean function, <code>isendwin()</code>, which - code can use to test whether <code>ncurses</code> screen mode is - active. It returns <code>TRUE</code> in the interval between an - <code>endwin()</code> call and the following - <code>refresh()</code>, <code>FALSE</code> otherwise.</p> - - <p>Here is some sample code for shellout:</p> - - <pre class="code-block"> - addstr("Shelling out..."); - def_prog_mode(); /* save current tty modes */ - endwin(); /* restore original tty modes */ - system("sh"); /* run shell */ - addstr("returned.\n"); /* prepare return message */ - refresh(); /* restore save modes, repaint screen */ -</pre> - <h4><a name="xterm" id="xterm">Using NCURSES under XTERM</a></h4> - - <p>A resize operation in X sends <code>SIGWINCH</code> to the - application running under xterm. The easiest way to handle - <code>SIGWINCH</code> is to do an <code>endwin</code>, followed - by an <code>refresh</code> and a screen repaint you code - yourself. The <code>refresh</code> will pick up the new screen - size from the xterm's environment.</p> - - <p>That is the standard way, of course (it even works with some - vendor's curses implementations). Its drawback is that it clears - the screen to reinitialize the display, and does not resize - subwindows which must be shrunk. <code>Ncurses</code> provides an - extension which works better, the <code>resizeterm</code> - function. That function ensures that all windows are limited to - the new screen dimensions, and pads <code>stdscr</code> with - blanks if the screen is larger.</p> - - <p>The <code>ncurses</code> library provides a SIGWINCH signal - handler, which pushes a <code>KEY_RESIZE</code> via the wgetch() - calls. When <code>ncurses</code> returns that code, it calls - <code>resizeterm</code> to update the size of the standard - screen's window, repainting that (filling with blanks or - truncating as needed). It also resizes other windows, but its - effect may be less satisfactory because it cannot know how you - want the screen re-painted. You will usually have to write - special-purpose code to handle <code>KEY_RESIZE</code> - yourself.</p> - - <h4><a name="screens" id="screens">Handling Multiple Terminal - Screens</a></h4> - - <p>The <code>initscr()</code> function actually calls a function - named <code>newterm()</code> to do most of its work. If you are - writing a program that opens multiple terminals, use - <code>newterm()</code> directly.</p> - - <p>For each call, you will have to specify a terminal type and a - pair of file pointers; each call will return a screen reference, - and <code>stdscr</code> will be set to the last one allocated. - You will switch between screens with the <code>set_term</code> - call. Note that you will also have to call - <code>def_shell_mode</code> and <code>def_prog_mode</code> on - each tty yourself.</p> - - <h4><a name="testing" id="testing">Testing for Terminal - Capabilities</a></h4> - - <p>Sometimes you may want to write programs that test for the - presence of various capabilities before deciding whether to go - into <code>ncurses</code> mode. An easy way to do this is to call - <code>setupterm()</code>, then use the functions - <code>tigetflag()</code>, <code>tigetnum()</code>, and - <code>tigetstr()</code> to do your testing.</p> - - <p>A particularly useful case of this often comes up when you - want to test whether a given terminal type should be treated as - “smart” (cursor-addressable) or “stupid”. - The right way to test this is to see if the return value of - <code>tigetstr("cup")</code> is non-NULL. Alternatively, you can - include the <code>term.h</code> file and test the value of the - macro <code>cursor_address</code>.</p> - - <h4><a name="tuning" id="tuning">Tuning for Speed</a></h4> - - <p>Use the <code>addchstr()</code> family of functions for fast - screen-painting of text when you know the text does not contain - any control characters. Try to make attribute changes infrequent - on your screens. Do not use the <code>immedok()</code> - option!</p> - - <h4><a name="special" id="special">Special Features of - NCURSES</a></h4> - - <p>The <code>wresize()</code> function allows you to resize a - window in place. The associated <code>resizeterm()</code> - function simplifies the construction of <a href= - "#xterm">SIGWINCH</a> handlers, for resizing all windows.</p> - - <p>The <code>define_key()</code> function allows you to define at - runtime function-key control sequences which are not in the - terminal description. The <code>keyok()</code> function allows - you to temporarily enable or disable interpretation of any - function-key control sequence.</p> - - <p>The <code>use_default_colors()</code> function allows you to - construct applications which can use the terminal's default - foreground and background colors as an additional "default" - color. Several terminal emulators support this feature, which is - based on ISO 6429.</p> - - <p>Ncurses supports up 16 colors, unlike SVr4 curses which - defines only 8. While most terminals which provide color allow - only 8 colors, about a quarter (including XFree86 xterm) support - 16 colors.</p> - - <h3><a name="compat" id="compat">Compatibility with Older - Versions</a></h3> - - <p>Despite our best efforts, there are some differences between - <code>ncurses</code> and the (undocumented!) behavior of older - curses implementations. These arise from ambiguities or omissions - in the documentation of the API.</p> - - <h4><a name="refbug" id="refbug">Refresh of Overlapping - Windows</a></h4> - - <p>If you define two windows A and B that overlap, and then - alternately scribble on and refresh them, the changes made to the - overlapping region under historic <code>curses</code> versions - were often not documented precisely.</p> - - <p>To understand why this is a problem, remember that screen - updates are calculated between two representations of the - <em>entire</em> display. The documentation says that when you - refresh a window, it is first copied to the virtual screen, and - then changes are calculated to update the physical screen (and - applied to the terminal). But "copied to" is not very specific, - and subtle differences in how copying works can produce different - behaviors in the case where two overlapping windows are each - being refreshed at unpredictable intervals.</p> - - <p>What happens to the overlapping region depends on what - <code>wnoutrefresh()</code> does with its argument -- what - portions of the argument window it copies to the virtual screen. - Some implementations do "change copy", copying down only - locations in the window that have changed (or been marked changed - with <code>wtouchln()</code> and friends). Some implementations - do "entire copy", copying <em>all</em> window locations to the - virtual screen whether or not they have changed.</p> - - <p>The <code>ncurses</code> library itself has not always been - consistent on this score. Due to a bug, versions 1.8.7 to 1.9.8a - did entire copy. Versions 1.8.6 and older, and versions 1.9.9 and - newer, do change copy.</p> - - <p>For most commercial curses implementations, it is not - documented and not known for sure (at least not to the - <code>ncurses</code> maintainers) whether they do change copy or - entire copy. We know that System V release 3 curses has logic in - it that looks like an attempt to do change copy, but the - surrounding logic and data representations are sufficiently - complex, and our knowledge sufficiently indirect, that it is hard - to know whether this is reliable. It is not clear what the SVr4 - documentation and XSI standard intend. The XSI Curses standard - barely mentions wnoutrefresh(); the SVr4 documents seem to be - describing entire-copy, but it is possible with some effort and - straining to read them the other way.</p> - - <p>It might therefore be unwise to rely on either behavior in - programs that might have to be linked with other curses - implementations. Instead, you can do an explicit - <code>touchwin()</code> before the <code>wnoutrefresh()</code> - call to guarantee an entire-contents copy anywhere.</p> - - <p>The really clean way to handle this is to use the panels - library. If, when you want a screen update, you do - <code>update_panels()</code>, it will do all the necessary - <code>wnoutrefresh()</code> calls for whatever panel stacking - order you have defined. Then you can do one - <code>doupdate()</code> and there will be a <em>single</em> burst - of physical I/O that will do all your updates.</p> - - <h4><a name="backbug" id="backbug">Background Erase</a></h4> - - <p>If you have been using a very old versions of - <code>ncurses</code> (1.8.7 or older) you may be surprised by the - behavior of the erase functions. In older versions, erased areas - of a window were filled with a blank modified by the window's - current attribute (as set by <strong>wattrset()</strong>, - <strong>wattron()</strong>, <strong>wattroff()</strong> and - friends).</p> - - <p>In newer versions, this is not so. Instead, the attribute of - erased blanks is normal unless and until it is modified by the - functions <code>bkgdset()</code> or <code>wbkgdset()</code>.</p> - - <p>This change in behavior conforms <code>ncurses</code> to - System V Release 4 and the XSI Curses standard.</p> - - <h3><a name="xsifuncs" id="xsifuncs">XSI Curses Conformance</a></h3> - - <p>The <code>ncurses</code> library is intended to be base-level - conformant with the XSI Curses standard from X/Open. Many - extended-level features (in fact, almost all features not - directly concerned with wide characters and internationalization) - are also supported.</p> - - <p>One effect of XSI conformance is the change in behavior - described under <a href="#backbug">"Background Erase -- - Compatibility with Old Versions"</a>.</p> - - <p>Also, <code>ncurses</code> 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 <code>#undef</code>.</p> - - <h2><a name="panels" id="panels">The Panels Library</a></h2> - - <p>The <code>ncurses</code> library by itself provides good - support for screen displays in which the windows are tiled - (non-overlapping). In the more general case that windows may - overlap, you have to use a series of <code>wnoutrefresh()</code> - calls followed by a <code>doupdate()</code>, and be careful about - the order you do the window refreshes in. It has to be - bottom-upwards, otherwise parts of windows that should be - obscured will show through.</p> - - <p>When your interface design is such that windows may dive - deeper into the visibility stack or pop to the top at runtime, - the resulting book-keeping can be tedious and difficult to get - right. Hence the panels library.</p> - - <p>The <code>panel</code> library first appeared in AT&T - System V. The version documented here is the <code>panel</code> - code distributed with <code>ncurses</code>.</p> - - <h3><a name="pcompile" id="pcompile">Compiling With the Panels - Library</a></h3> - - <p>Your panels-using modules must import the panels library - declarations with</p> - - <pre class="code-block"> - #include <panel.h> -</pre> - <p>and must be linked explicitly with the panels library using an - <code>-lpanel</code> argument. Note that they must also link the - <code>ncurses</code> library with <code>-lncurses</code>. Many - linkers are two-pass and will accept either order, but it is - still good practice to put <code>-lpanel</code> first and - <code>-lncurses</code> second.</p> - - <h3><a name="poverview" id="poverview">Overview of Panels</a></h3> - - <p>A panel object is a window that is implicitly treated as part - of a <dfn>deck</dfn> including all other panel objects. The deck - has an implicit bottom-to-top visibility order. The panels - library includes an update function (analogous to - <code>refresh()</code>) that displays all panels in the deck in - the proper order to resolve overlaps. The standard window, - <code>stdscr</code>, is considered below all panels.</p> - - <p>Details on the panels functions are available in the man - pages. We will just hit the highlights here.</p> - - <p>You create a panel from a window by calling - <code>new_panel()</code> on a window pointer. It then becomes the - top of the deck. The panel's window is available as the value of - <code>panel_window()</code> called with the panel pointer as - argument.</p> - - <p>You can delete a panel (removing it from the deck) with - <code>del_panel</code>. This will not deallocate the associated - window; you have to do that yourself. You can replace a panel's - window with a different window by calling - <code>replace_window</code>. The new window may be of different - size; the panel code will re-compute all overlaps. This operation - does not change the panel's position in the deck.</p> - - <p>To move a panel's window, use <code>move_panel()</code>. The - <code>mvwin()</code> function on the panel's window is not - sufficient because it does not update the panels library's - representation of where the windows are. This operation leaves - the panel's depth, contents, and size unchanged.</p> - - <p>Two functions (<code>top_panel()</code>, - <code>bottom_panel()</code>) are provided for rearranging the - deck. The first pops its argument window to the top of the deck; - the second sends it to the bottom. Either operation leaves the - panel's screen location, contents, and size unchanged.</p> - - <p>The function <code>update_panels()</code> does all the - <code>wnoutrefresh()</code> calls needed to prepare for - <code>doupdate()</code> (which you must call yourself, - afterwards).</p> - - <p>Typically, you will want to call <code>update_panels()</code> - and <code>doupdate()</code> just before accepting command input, - once in each cycle of interaction with the user. If you call - <code>update_panels()</code> after each and every panel write, - you will generate a lot of unnecessary refresh activity and - screen flicker.</p> - - <h3><a name="pstdscr" id="pstdscr">Panels, Input, and the - Standard Screen</a></h3> - - <p>You should not mix <code>wnoutrefresh()</code> or - <code>wrefresh()</code> operations with panels code; this will - work only if the argument window is either in the top panel or - unobscured by any other panels.</p> - - <p>The <code>stsdcr</code> window is a special case. It is - considered below all panels. Because changes to panels may - obscure parts of <code>stdscr</code>, though, you should call - <code>update_panels()</code> before <code>doupdate()</code> even - when you only change <code>stdscr</code>.</p> - - <p>Note that <code>wgetch</code> automatically calls - <code>wrefresh</code>. Therefore, before requesting input from a - panel window, you need to be sure that the panel is totally - unobscured.</p> - - <p>There is presently no way to display changes to one obscured - panel without repainting all panels.</p> - - <h3><a name="hiding" id="hiding">Hiding Panels</a></h3> - - <p>It is possible to remove a panel from the deck temporarily; - use <code>hide_panel</code> for this. Use - <code>show_panel()</code> to render it visible again. The - predicate function <code>panel_hidden</code> tests whether or not - a panel is hidden.</p> - - <p>The <code>panel_update</code> code ignores hidden panels. You - cannot do <code>top_panel()</code> or <code>bottom_panel</code> - on a hidden panel(). Other panels operations are applicable.</p> - - <h3><a name="pmisc" id="pmisc">Miscellaneous Other Facilities</a></h3> - - <p>It is possible to navigate the deck using the functions - <code>panel_above()</code> and <code>panel_below</code>. Handed a - panel pointer, they return the panel above or below that panel. - Handed <code>NULL</code>, they return the bottom-most or top-most - panel.</p> - - <p>Every panel has an associated user pointer, not used by the - panel code, to which you can attach application data. See the man - page documentation of <code>set_panel_userptr()</code> and - <code>panel_userptr</code> for details.</p> - - <h2><a name="menu" id="menu">The Menu Library</a></h2> - - <p>A menu is a screen display that assists the user to choose - some subset of a given set of items. The <code>menu</code> - library is a curses extension that supports easy programming of - menu hierarchies with a uniform but flexible interface.</p> - - <p>The <code>menu</code> library first appeared in AT&T - System V. The version documented here is the <code>menu</code> - code distributed with <code>ncurses</code>.</p> - - <h3><a name="mcompile" id="mcompile">Compiling With the menu - Library</a></h3> - - <p>Your menu-using modules must import the menu library - declarations with</p> - - <pre class="code-block"> - #include <menu.h> -</pre> - <p>and must be linked explicitly with the menus library using an - <code>-lmenu</code> argument. Note that they must also link the - <code>ncurses</code> library with <code>-lncurses</code>. Many - linkers are two-pass and will accept either order, but it is - still good practice to put <code>-lmenu</code> first and - <code>-lncurses</code> second.</p> - - <h3><a name="moverview" id="moverview">Overview of Menus</a></h3> - - <p>The menus created by this library consist of collections of - <dfn>items</dfn> including a name string part and a description - string part. To make menus, you create groups of these items and - connect them with menu frame objects.</p> - - <p>The menu can then by <dfn>posted</dfn>, that is written to an - associated window. Actually, each menu has two associated - windows; a containing window in which the programmer can scribble - titles or borders, and a subwindow in which the menu items proper - are displayed. If this subwindow is too small to display all the - items, it will be a scrollable viewport on the collection of - items.</p> - - <p>A menu may also be <dfn>unposted</dfn> (that is, undisplayed), - and finally freed to make the storage associated with it and its - items available for re-use.</p> - - <p>The general flow of control of a menu program looks like - this:</p> - - <ol> - <li>Initialize <code>curses</code>.</li> - - <li>Create the menu items, using <code>new_item()</code>.</li> - - <li>Create the menu using <code>new_menu()</code>.</li> - - <li>Post the menu using <code>post_menu()</code>.</li> - - <li>Refresh the screen.</li> - - <li>Process user requests via an input loop.</li> - - <li>Unpost the menu using <code>unpost_menu()</code>.</li> - - <li>Free the menu, using <code>free_menu()</code>.</li> - - <li>Free the items using <code>free_item()</code>.</li> - - <li>Terminate <code>curses</code>.</li> - </ol> - - <h3><a name="mselect" id="mselect">Selecting items</a></h3> - - <p>Menus may be multi-valued or (the default) single-valued (see - the manual page <code>menu_opts(3x)</code> to see how to change - the default). Both types always have a <dfn>current - item</dfn>.</p> - - <p>From a single-valued menu you can read the selected value - simply by looking at the current item. From a multi-valued menu, - you get the selected set by looping through the items applying - the <code>item_value()</code> predicate function. Your - menu-processing code can use the function - <code>set_item_value()</code> to flag the items in the select - set.</p> - - <p>Menu items can be made unselectable using - <code>set_item_opts()</code> or <code>item_opts_off()</code> with - the <code>O_SELECTABLE</code> argument. This is the only option - so far defined for menus, but it is good practice to code as - though other option bits might be on.</p> - - <h3><a name="mdisplay" id="mdisplay">Menu Display</a></h3> - - <p>The menu library calculates a minimum display size for your - window, based on the following variables:</p> - - <ul> - <li>The number and maximum length of the menu items</li> - - <li>Whether the O_ROWMAJOR option is enabled</li> - - <li>Whether display of descriptions is enabled</li> - - <li>Whatever menu format may have been set by the - programmer</li> - - <li>The length of the menu mark string used for highlighting - selected items</li> - </ul> - - <p>The function <code>set_menu_format()</code> allows you to set - the maximum size of the viewport or <dfn>menu page</dfn> that - will be used to display menu items. You can retrieve any format - associated with a menu with <code>menu_format()</code>. The - default format is rows=16, columns=1.</p> - - <p>The actual menu page may be smaller than the format size. This - depends on the item number and size and whether O_ROWMAJOR is on. - This option (on by default) causes menu items to be displayed in - a “raster-scan” pattern, so that if more than one - item will fit horizontally the first couple of items are - side-by-side in the top row. The alternative is column-major - display, which tries to put the first several items in the first - column.</p> - - <p>As mentioned above, a menu format not large enough to allow - all items to fit on-screen will result in a menu display that is - vertically scrollable.</p> - - <p>You can scroll it with requests to the menu driver, which will - be described in the section on <a href="#minput">menu input - handling</a>.</p> - - <p>Each menu has a <dfn>mark string</dfn> used to visually tag - selected items; see the <code>menu_mark(3x)</code> manual page - for details. The mark string length also influences the menu page - size.</p> - - <p>The function <code>scale_menu()</code> returns the minimum - display size that the menu code computes from all these factors. - There are other menu display attributes including a select - attribute, an attribute for selectable items, an attribute for - unselectable items, and a pad character used to separate item - name text from description text. These have reasonable defaults - which the library allows you to change (see the - <code>menu_attribs(3x)</code> manual page.</p> - - <h3><a name="mwindows" id="mwindows">Menu Windows</a></h3> - - <p>Each menu has, as mentioned previously, a pair of associated - windows. Both these windows are painted when the menu is posted - and erased when the menu is unposted.</p> - - <p>The outer or frame window is not otherwise touched by the menu - routines. It exists so the programmer can associate a title, a - border, or perhaps help text with the menu and have it properly - refreshed or erased at post/unpost time. The inner window or - <dfn>subwindow</dfn> is where the current menu page is - displayed.</p> - - <p>By default, both windows are <code>stdscr</code>. You can set - them with the functions in <code>menu_win(3x)</code>.</p> - - <p>When you call <code>post_menu()</code>, you write the menu to - its subwindow. When you call <code>unpost_menu()</code>, you - erase the subwindow, However, neither of these actually modifies - the screen. To do that, call <code>wrefresh()</code> or some - equivalent.</p> - - <h3><a name="minput" id="minput">Processing Menu Input</a></h3> - - <p>The main loop of your menu-processing code should call - <code>menu_driver()</code> repeatedly. The first argument of this - routine is a menu pointer; the second is a menu command code. You - should write an input-fetching routine that maps input characters - to menu command codes, and pass its output to - <code>menu_driver()</code>. The menu command codes are fully - documented in <code>menu_driver(3x)</code>.</p> - - <p>The simplest group of command codes is - <code>REQ_NEXT_ITEM</code>, <code>REQ_PREV_ITEM</code>, - <code>REQ_FIRST_ITEM</code>, <code>REQ_LAST_ITEM</code>, - <code>REQ_UP_ITEM</code>, <code>REQ_DOWN_ITEM</code>, - <code>REQ_LEFT_ITEM</code>, <code>REQ_RIGHT_ITEM</code>. These - change the currently selected item. These requests may cause - scrolling of the menu page if it only partially displayed.</p> - - <p>There are explicit requests for scrolling which also change - the current item (because the select location does not change, - but the item there does). These are <code>REQ_SCR_DLINE</code>, - <code>REQ_SCR_ULINE</code>, <code>REQ_SCR_DPAGE</code>, and - <code>REQ_SCR_UPAGE</code>.</p> - - <p>The <code>REQ_TOGGLE_ITEM</code> selects or deselects the - current item. It is for use in multi-valued menus; if you use it - with <code>O_ONEVALUE</code> on, you will get an error return - (<code>E_REQUEST_DENIED</code>).</p> - - <p>Each menu has an associated pattern buffer. The - <code>menu_driver()</code> logic tries to accumulate printable - ASCII characters passed in in that buffer; when it matches a - prefix of an item name, that item (or the next matching item) is - selected. If appending a character yields no new match, that - character is deleted from the pattern buffer, and - <code>menu_driver()</code> returns <code>E_NO_MATCH</code>.</p> - - <p>Some requests change the pattern buffer directly: - <code>REQ_CLEAR_PATTERN</code>, <code>REQ_BACK_PATTERN</code>, - <code>REQ_NEXT_MATCH</code>, <code>REQ_PREV_MATCH</code>. The - latter two are useful when pattern buffer input matches more than - one item in a multi-valued menu.</p> - - <p>Each successful scroll or item navigation request clears the - pattern buffer. It is also possible to set the pattern buffer - explicitly with <code>set_menu_pattern()</code>.</p> - - <p>Finally, menu driver requests above the constant - <code>MAX_COMMAND</code> are considered application-specific - commands. The <code>menu_driver()</code> code ignores them and - returns <code>E_UNKNOWN_COMMAND</code>.</p> - - <h3><a name="mmisc" id="mmisc">Miscellaneous Other Features</a></h3> - - <p>Various menu options can affect the processing and visual - appearance and input processing of menus. See <code>menu_opts(3x) - for details.</code></p> - - <p>It is possible to change the current item from application - code; this is useful if you want to write your own navigation - requests. It is also possible to explicitly set the top row of - the menu display. See <code>mitem_current(3x)</code>. If your - application needs to change the menu subwindow cursor for any - reason, <code>pos_menu_cursor()</code> will restore it to the - correct location for continuing menu driver processing.</p> - - <p>It is possible to set hooks to be called at menu - initialization and wrapup time, and whenever the selected item - changes. See <code>menu_hook(3x)</code>.</p> - - <p>Each item, and each menu, has an associated user pointer on - which you can hang application data. See - <code>mitem_userptr(3x)</code> and - <code>menu_userptr(3x)</code>.</p> - - <h2><a name="form" id="form">The Forms Library</a></h2> - - <p>The <code>form</code> library is a curses extension that - supports easy programming of on-screen forms for data entry and - program control.</p> - - <p>The <code>form</code> library first appeared in AT&T - System V. The version documented here is the <code>form</code> - code distributed with <code>ncurses</code>.</p> - - <h3><a name="fcompile" id="fcompile">Compiling With the form - Library</a></h3> - - <p>Your form-using modules must import the form library - declarations with</p> - - <pre class="code-block"> - #include <form.h> -</pre> - <p>and must be linked explicitly with the forms library using an - <code>-lform</code> argument. Note that they must also link the - <code>ncurses</code> library with <code>-lncurses</code>. Many - linkers are two-pass and will accept either order, but it is - still good practice to put <code>-lform</code> first and - <code>-lncurses</code> second.</p> - - <h3><a name="foverview" id="foverview">Overview of Forms</a></h3> - - <p>A form is a collection of fields; each field may be either a - label (explanatory text) or a data-entry location. Long forms may - be segmented into pages; each entry to a new page clears the - screen.</p> - - <p>To make forms, you create groups of fields and connect them - with form frame objects; the form library makes this relatively - simple.</p> - - <p>Once defined, a form can be <dfn>posted</dfn>, that is written - to an associated window. Actually, each form has two associated - windows; a containing window in which the programmer can scribble - titles or borders, and a subwindow in which the form fields - proper are displayed.</p> - - <p>As the form user fills out the posted form, navigation and - editing keys support movement between fields, editing keys - support modifying field, and plain text adds to or changes data - in a current field. The form library allows you (the forms - designer) to bind each navigation and editing key to any - keystroke accepted by <code>curses</code> Fields may have - validation conditions on them, so that they check input data for - type and value. The form library supplies a rich set of - pre-defined field types, and makes it relatively easy to define - new ones.</p> - - <p>Once its transaction is completed (or aborted), a form may be - <dfn>unposted</dfn> (that is, undisplayed), and finally freed to - make the storage associated with it and its items available for - re-use.</p> - - <p>The general flow of control of a form program looks like - this:</p> - - <ol> - <li>Initialize <code>curses</code>.</li> - - <li>Create the form fields, using - <code>new_field()</code>.</li> - - <li>Create the form using <code>new_form()</code>.</li> - - <li>Post the form using <code>post_form()</code>.</li> - - <li>Refresh the screen.</li> - - <li>Process user requests via an input loop.</li> - - <li>Unpost the form using <code>unpost_form()</code>.</li> - - <li>Free the form, using <code>free_form()</code>.</li> - - <li>Free the fields using <code>free_field()</code>.</li> - - <li>Terminate <code>curses</code>.</li> - </ol> - - <p>Note that this looks much like a menu program; the form - library handles tasks which are in many ways similar, and its - interface was obviously designed to resemble that of the <a href= - "#menu">menu library</a> wherever possible.</p> - - <p>In forms programs, however, the “process user - requests” is somewhat more complicated than for menus. - Besides menu-like navigation operations, the menu driver loop has - to support field editing and data validation.</p> - - <h3><a name="fcreate" id="fcreate">Creating and Freeing Fields - and Forms</a></h3> - - <p>The basic function for creating fields is - <code>new_field()</code>:</p> - - <pre class="code-block"> -FIELD *new_field(int height, int width, /* new field size */ - int top, int left, /* upper left corner */ - int offscreen, /* number of offscreen rows */ - int nbuf); /* number of working buffers */ -</pre> - <p>Menu items always occupy a single row, but forms fields may - have multiple rows. So <code>new_field()</code> requires you to - specify a width and height (the first two arguments, which mist - both be greater than zero).</p> - - <p>You must also specify the location of the field's upper left - corner on the screen (the third and fourth arguments, which must - be zero or greater). Note that these coordinates are relative to - the form subwindow, which will coincide with <code>stdscr</code> - by default but need not be <code>stdscr</code> if you have done - an explicit <code>set_form_win()</code> call.</p> - - <p>The fifth argument allows you to specify a number of - off-screen rows. If this is zero, the entire field will always be - displayed. If it is nonzero, the form will be scrollable, with - only one screen-full (initially the top part) displayed at any - given time. If you make a field dynamic and grow it so it will no - longer fit on the screen, the form will become scrollable even if - the <code>offscreen</code> argument was initially zero.</p> - - <p>The forms library allocates one working buffer per field; the - size of each buffer is <code>((height + offscreen)*width + - 1</code>, one character for each position in the field plus a NUL - terminator. The sixth argument is the number of additional data - buffers to allocate for the field; your application can use them - for its own purposes.</p> - - <pre class="code-block"> -FIELD *dup_field(FIELD *field, /* field to copy */ - int top, int left); /* location of new copy */ -</pre> - <p>The function <code>dup_field()</code> duplicates an existing - field at a new location. Size and buffering information are - copied; some attribute flags and status bits are not (see the - <code>form_field_new(3X)</code> for details).</p> - - <pre class="code-block"> -FIELD *link_field(FIELD *field, /* field to copy */ - int top, int left); /* location of new copy */ -</pre> - <p>The function <code>link_field()</code> also duplicates an - existing field at a new location. The difference from - <code>dup_field()</code> is that it arranges for the new field's - buffer to be shared with the old one.</p> - - <p>Besides the obvious use in making a field editable from two - different form pages, linked fields give you a way to hack in - dynamic labels. If you declare several fields linked to an - original, and then make them inactive, changes from the original - will still be propagated to the linked fields.</p> - - <p>As with duplicated fields, linked fields have attribute bits - separate from the original.</p> - - <p>As you might guess, all these field-allocations return - <code>NULL</code> if the field allocation is not possible due to - an out-of-memory error or out-of-bounds arguments.</p> - - <p>To connect fields to a form, use</p> - - <pre class="code-block"> -FORM *new_form(FIELD **fields); -</pre> - <p>This function expects to see a NULL-terminated array of field - pointers. Said fields are connected to a newly-allocated form - object; its address is returned (or else NULL if the allocation - fails).</p> - - <p>Note that <code>new_field()</code> does <em>not</em> copy the - pointer array into private storage; if you modify the contents of - the pointer array during forms processing, all manner of bizarre - things might happen. Also note that any given field may only be - connected to one form.</p> - - <p>The functions <code>free_field()</code> and - <code>free_form</code> are available to free field and form - objects. It is an error to attempt to free a field connected to a - form, but not vice-versa; thus, you will generally free your form - objects first.</p> - - <h3><a name="fattributes" id="fattributes">Fetching and Changing - Field Attributes</a></h3> - - <p>Each form field has a number of location and size attributes - associated with it. There are other field attributes used to - control display and editing of the field. Some (for example, the - <code>O_STATIC</code> bit) involve sufficient complications to be - covered in sections of their own later on. We cover the functions - used to get and set several basic attributes here.</p> - - <p>When a field is created, the attributes not specified by the - <code>new_field</code> function are copied from an invisible - system default field. In attribute-setting and -fetching - functions, the argument NULL is taken to mean this field. Changes - to it persist as defaults until your forms application - terminates.</p> - - <h4><a name="fsizes" id="fsizes">Fetching Size and Location - Data</a></h4> - - <p>You can retrieve field sizes and locations through:</p> - - <pre class="code-block"> -int field_info(FIELD *field, /* field from which to fetch */ - int *height, *int width, /* field size */ - int *top, int *left, /* upper left corner */ - int *offscreen, /* number of offscreen rows */ - int *nbuf); /* number of working buffers */ -</pre> - <p>This function is a sort of inverse of - <code>new_field()</code>; instead of setting size and location - attributes of a new field, it fetches them from an existing - one.</p> - - <h4><a name="flocation" id="flocation">Changing the Field - Location</a></h4> - - <p>It is possible to move a field's location on the screen:</p> - - <pre class="code-block"> -int move_field(FIELD *field, /* field to alter */ - int top, int left); /* new upper-left corner */ -</pre> - <p>You can, of course. query the current location through - <code>field_info()</code>.</p> - - <h4><a name="fjust" id="fjust">The Justification Attribute</a></h4> - - <p>One-line fields may be unjustified, justified right, justified - left, or centered. Here is how you manipulate this attribute:</p> - - <pre class="code-block"> -int set_field_just(FIELD *field, /* field to alter */ - int justmode); /* mode to set */ - -int field_just(FIELD *field); /* fetch mode of field */ -</pre> - <p>The mode values accepted and returned by this functions are - preprocessor macros <code>NO_JUSTIFICATION</code>, - <code>JUSTIFY_RIGHT</code>, <code>JUSTIFY_LEFT</code>, or - <code>JUSTIFY_CENTER</code>.</p> - - <h4><a name="fdispatts" id="fdispatts">Field Display - Attributes</a></h4> - - <p>For each field, you can set a foreground attribute for entered - characters, a background attribute for the entire field, and a - pad character for the unfilled portion of the field. You can also - control pagination of the form.</p> - - <p>This group of four field attributes controls the visual - appearance of the field on the screen, without affecting in any - way the data in the field buffer.</p> - - <pre class="code-block"> -int set_field_fore(FIELD *field, /* field to alter */ - chtype attr); /* attribute to set */ - -chtype field_fore(FIELD *field); /* field to query */ - -int set_field_back(FIELD *field, /* field to alter */ - chtype attr); /* attribute to set */ - -chtype field_back(FIELD *field); /* field to query */ - -int set_field_pad(FIELD *field, /* field to alter */ - int pad); /* pad character to set */ - -chtype field_pad(FIELD *field); - -int set_new_page(FIELD *field, /* field to alter */ - int flag); /* TRUE to force new page */ - -chtype new_page(FIELD *field); /* field to query */ -</pre> - <p>The attributes set and returned by the first four functions - are normal <code>curses(3x)</code> display attribute values - (<code>A_STANDOUT</code>, <code>A_BOLD</code>, - <code>A_REVERSE</code> etc). The page bit of a field controls - whether it is displayed at the start of a new form screen.</p> - - <h4><a name="foptions" id="foptions">Field Option Bits</a></h4> - - <p>There is also a large collection of field option bits you can - set to control various aspects of forms processing. You can - manipulate them with these functions:</p> - - <pre class="code-block"> -int set_field_opts(FIELD *field, /* field to alter */ - int attr); /* attribute to set */ - -int field_opts_on(FIELD *field, /* field to alter */ - int attr); /* attributes to turn on */ - -int field_opts_off(FIELD *field, /* field to alter */ - int attr); /* attributes to turn off */ - -int field_opts(FIELD *field); /* field to query */ -</pre> - <p>By default, all options are on. Here are the available option - bits:</p> - - <dl> - <dt>O_VISIBLE</dt> - - <dd>Controls whether the field is visible on the screen. Can be - used during form processing to hide or pop up fields depending - on the value of parent fields.</dd> - - <dt>O_ACTIVE</dt> - - <dd>Controls whether the field is active during forms - processing (i.e. visited by form navigation keys). Can be used - to make labels or derived fields with buffer values alterable - by the forms application, not the user.</dd> - - <dt>O_PUBLIC</dt> - - <dd>Controls whether data is displayed during field entry. If - this option is turned off on a field, the library will accept - and edit data in that field, but it will not be displayed and - the visible field cursor will not move. You can turn off the - O_PUBLIC bit to define password fields.</dd> - - <dt>O_EDIT</dt> - - <dd>Controls whether the field's data can be modified. When - this option is off, all editing requests except - <code>REQ_PREV_CHOICE</code> and <code>REQ_NEXT_CHOICE</code> - will fail. Such read-only fields may be useful for help - messages.</dd> - - <dt>O_WRAP</dt> - - <dd>Controls word-wrapping in multi-line fields. Normally, when - any character of a (blank-separated) word reaches the end of - the current line, the entire word is wrapped to the next line - (assuming there is one). When this option is off, the word will - be split across the line break.</dd> - - <dt>O_BLANK</dt> - - <dd>Controls field blanking. When this option is on, entering a - character at the first field position erases the entire field - (except for the just-entered character).</dd> - - <dt>O_AUTOSKIP</dt> - - <dd>Controls automatic skip to next field when this one fills. - Normally, when the forms user tries to type more data into a - field than will fit, the editing location jumps to next field. - When this option is off, the user's cursor will hang at the end - of the field. This option is ignored in dynamic fields that - have not reached their size limit.</dd> - - <dt>O_NULLOK</dt> - - <dd>Controls whether <a href="#fvalidation">validation</a> is - applied to blank fields. Normally, it is not; the user can - leave a field blank without invoking the usual validation check - on exit. If this option is off on a field, exit from it will - invoke a validation check.</dd> - - <dt>O_PASSOK</dt> - - <dd>Controls whether validation occurs on every exit, or only - after the field is modified. Normally the latter is true. - Setting O_PASSOK may be useful if your field's validation - function may change during forms processing.</dd> - - <dt>O_STATIC</dt> - - <dd>Controls whether the field is fixed to its initial - dimensions. If you turn this off, the field becomes <a href= - "#fdynamic">dynamic</a> and will stretch to fit entered - data.</dd> - </dl> - - <p>A field's options cannot be changed while the field is - currently selected. However, options may be changed on posted - fields that are not current.</p> - - <p>The option values are bit-masks and can be composed with - logical-or in the obvious way.</p> - - <h3><a name="fstatus" id="fstatus">Field Status</a></h3> - - <p>Every field has a status flag, which is set to FALSE when the - field is created and TRUE when the value in field buffer 0 - changes. This flag can be queried and set directly:</p> - - <pre class="code-block"> -int set_field_status(FIELD *field, /* field to alter */ - int status); /* mode to set */ - -int field_status(FIELD *field); /* fetch mode of field */ -</pre> - <p>Setting this flag under program control can be useful if you - use the same form repeatedly, looking for modified fields each - time.</p> - - <p>Calling <code>field_status()</code> on a field not currently - selected for input will return a correct value. Calling - <code>field_status()</code> on a field that is currently selected - for input may not necessarily give a correct field status value, - because entered data is not necessarily copied to buffer zero - before the exit validation check. To guarantee that the returned - status value reflects reality, call <code>field_status()</code> - either (1) in the field's exit validation check routine, (2) from - the field's or form's initialization or termination hooks, or (3) - just after a <code>REQ_VALIDATION</code> request has been - processed by the forms driver.</p> - - <h3><a name="fuser" id="fuser">Field User Pointer</a></h3> - - <p>Each field structure contains one character pointer slot that - is not used by the forms library. It is intended to be used by - applications to store private per-field data. You can manipulate - it with:</p> - - <pre class="code-block"> -int set_field_userptr(FIELD *field, /* field to alter */ - char *userptr); /* mode to set */ - -char *field_userptr(FIELD *field); /* fetch mode of field */ -</pre>(Properly, this user pointer field ought to have <code>(void -*)</code> type. The <code>(char *)</code> type is retained for -System V compatibility.) - <p>It is valid to set the user pointer of the default field (with - a <code>set_field_userptr()</code> call passed a NULL field - pointer.) When a new field is created, the default-field user - pointer is copied to initialize the new field's user pointer.</p> - - <h3><a name="fdynamic" id="fdynamic">Variable-Sized Fields</a></h3> - - <p>Normally, a field is fixed at the size specified for it at - creation time. If, however, you turn off its O_STATIC bit, it - becomes <dfn>dynamic</dfn> and will automatically resize itself - to accommodate data as it is entered. If the field has extra - buffers associated with it, they will grow right along with the - main input buffer.</p> - - <p>A one-line dynamic field will have a fixed height (1) but - variable width, scrolling horizontally to display data within the - field area as originally dimensioned and located. A multi-line - dynamic field will have a fixed width, but variable height - (number of rows), scrolling vertically to display data within the - field area as originally dimensioned and located.</p> - - <p>Normally, a dynamic field is allowed to grow without limit. - But it is possible to set an upper limit on the size of a dynamic - field. You do it with this function:</p> - - <pre class="code-block"> -int set_max_field(FIELD *field, /* field to alter (may not be NULL) */ - int max_size); /* upper limit on field size */ -</pre> - <p>If the field is one-line, <code>max_size</code> is taken to be - a column size limit; if it is multi-line, it is taken to be a - line size limit. To disable any limit, use an argument of zero. - The growth limit can be changed whether or not the O_STATIC bit - is on, but has no effect until it is.</p> - - <p>The following properties of a field change when it becomes - dynamic:</p> - - <ul> - <li>If there is no growth limit, there is no final position of - the field; therefore <code>O_AUTOSKIP</code> and - <code>O_NL_OVERLOAD</code> are ignored.</li> - - <li>Field justification will be ignored (though whatever - justification is set up will be retained internally and can be - queried).</li> - - <li>The <code>dup_field()</code> and <code>link_field()</code> - calls copy dynamic-buffer sizes. If the <code>O_STATIC</code> - option is set on one of a collection of links, buffer resizing - will occur only when the field is edited through that - link.</li> - - <li>The call <code>field_info()</code> will retrieve the - original static size of the field; use - <code>dynamic_field_info()</code> to get the actual dynamic - size.</li> - </ul> - - <h3><a name="fvalidation" id="fvalidation">Field Validation</a></h3> - - <p>By default, a field will accept any data that will fit in its - input buffer. However, it is possible to attach a validation type - to a field. If you do this, any attempt to leave the field while - it contains data that does not match the validation type will - fail. Some validation types also have a character-validity check - for each time a character is entered in the field.</p> - - <p>A field's validation check (if any) is not called when - <code>set_field_buffer()</code> modifies the input buffer, nor - when that buffer is changed through a linked field.</p> - - <p>The <code>form</code> library provides a rich set of - pre-defined validation types, and gives you the capability to - define custom ones of your own. You can examine and change field - validation attributes with the following functions:</p> - - <pre class="code-block"> -int set_field_type(FIELD *field, /* field to alter */ - FIELDTYPE *ftype, /* type to associate */ - ...); /* additional arguments*/ - -FIELDTYPE *field_type(FIELD *field); /* field to query */ -</pre> - <p>The validation type of a field is considered an attribute of - the field. As with other field attributes, Also, doing - <code>set_field_type()</code> with a <code>NULL</code> field - default will change the system default for validation of - newly-created fields.</p> - - <p>Here are the pre-defined validation types:</p> - - <h4><a name="ftype_alpha" id="ftype_alpha">TYPE_ALPHA</a></h4> - - <p>This field type accepts alphabetic data; no blanks, no digits, - no special characters (this is checked at character-entry time). - It is set up with:</p> - - <pre class="code-block"> -int set_field_type(FIELD *field, /* field to alter */ - TYPE_ALPHA, /* type to associate */ - int width); /* maximum width of field */ -</pre> - <p>The <code>width</code> argument sets a minimum width of data. - Typically you will want to set this to the field width; if it is - greater than the field width, the validation check will always - fail. A minimum width of zero makes field completion - optional.</p> - - <h4><a name="ftype_alnum" id="ftype_alnum">TYPE_ALNUM</a></h4> - - <p>This field type accepts alphabetic data and digits; no blanks, - no special characters (this is checked at character-entry time). - It is set up with:</p> - - <pre class="code-block"> -int set_field_type(FIELD *field, /* field to alter */ - TYPE_ALNUM, /* type to associate */ - int width); /* maximum width of field */ -</pre> - <p>The <code>width</code> argument sets a minimum width of data. - As with TYPE_ALPHA, typically you will want to set this to the - field width; if it is greater than the field width, the - validation check will always fail. A minimum width of zero makes - field completion optional.</p> - - <h4><a name="ftype_enum" id="ftype_enum">TYPE_ENUM</a></h4> - - <p>This type allows you to restrict a field's values to be among - a specified set of string values (for example, the two-letter - postal codes for U.S. states). It is set up with:</p> - - <pre class="code-block"> -int set_field_type(FIELD *field, /* field to alter */ - TYPE_ENUM, /* type to associate */ - char **valuelist; /* list of possible values */ - int checkcase; /* case-sensitive? */ - int checkunique); /* must specify uniquely? */ -</pre> - <p>The <code>valuelist</code> parameter must point at a - NULL-terminated list of valid strings. The <code>checkcase</code> - argument, if true, makes comparison with the string - case-sensitive.</p> - - <p>When the user exits a TYPE_ENUM field, the validation - procedure tries to complete the data in the buffer to a valid - entry. If a complete choice string has been entered, it is of - course valid. But it is also possible to enter a prefix of a - valid string and have it completed for you.</p> - - <p>By default, if you enter such a prefix and it matches more - than one value in the string list, the prefix will be completed - to the first matching value. But the <code>checkunique</code> - argument, if true, requires prefix matches to be unique in order - to be valid.</p> - - <p>The <code>REQ_NEXT_CHOICE</code> and - <code>REQ_PREV_CHOICE</code> input requests can be particularly - useful with these fields.</p> - - <h4><a name="ftype_integer" id="ftype_integer">TYPE_INTEGER</a></h4> - - <p>This field type accepts an integer. It is set up as - follows:</p> - - <pre class="code-block"> -int set_field_type(FIELD *field, /* field to alter */ - TYPE_INTEGER, /* type to associate */ - int padding, /* # places to zero-pad to */ - int vmin, int vmax); /* valid range */ -</pre> - <p>Valid characters consist of an optional leading minus and - digits. The range check is performed on exit. If the range - maximum is less than or equal to the minimum, the range is - ignored.</p> - - <p>If the value passes its range check, it is padded with as many - leading zero digits as necessary to meet the padding - argument.</p> - - <p>A <code>TYPE_INTEGER</code> value buffer can conveniently be - interpreted with the C library function <code>atoi(3)</code>.</p> - - <h4><a name="ftype_numeric" id="ftype_numeric">TYPE_NUMERIC</a></h4> - - <p>This field type accepts a decimal number. It is set up as - follows:</p> - - <pre class="code-block"> -int set_field_type(FIELD *field, /* field to alter */ - TYPE_NUMERIC, /* type to associate */ - int padding, /* # places of precision */ - double vmin, double vmax); /* valid range */ -</pre> - <p>Valid characters consist of an optional leading minus and - digits. possibly including a decimal point. If your system - supports locale's, the decimal point character used must be the - one defined by your locale. The range check is performed on exit. - If the range maximum is less than or equal to the minimum, the - range is ignored.</p> - - <p>If the value passes its range check, it is padded with as many - trailing zero digits as necessary to meet the padding - argument.</p> - - <p>A <code>TYPE_NUMERIC</code> value buffer can conveniently be - interpreted with the C library function <code>atof(3)</code>.</p> - - <h4><a name="ftype_regexp" id="ftype_regexp">TYPE_REGEXP</a></h4> - - <p>This field type accepts data matching a regular expression. It - is set up as follows:</p> - - <pre class="code-block"> -int set_field_type(FIELD *field, /* field to alter */ - TYPE_REGEXP, /* type to associate */ - char *regexp); /* expression to match */ -</pre> - <p>The syntax for regular expressions is that of - <code>regcomp(3)</code>. The check for regular-expression match - is performed on exit.</p> - - <h3><a name="fbuffer" id="fbuffer">Direct Field Buffer - Manipulation</a></h3> - - <p>The chief attribute of a field is its buffer contents. When a - form has been completed, your application usually needs to know - the state of each field buffer. You can find this out with:</p> - - <pre class="code-block"> -char *field_buffer(FIELD *field, /* field to query */ - int bufindex); /* number of buffer to query */ -</pre> - <p>Normally, the state of the zero-numbered buffer for each field - is set by the user's editing actions on that field. It is - sometimes useful to be able to set the value of the zero-numbered - (or some other) buffer from your application:</p> - - <pre class="code-block"> -int set_field_buffer(FIELD *field, /* field to alter */ - int bufindex, /* number of buffer to alter */ - char *value); /* string value to set */ -</pre> - <p>If the field is not large enough and cannot be resized to a - sufficiently large size to contain the specified value, the value - will be truncated to fit.</p> - - <p>Calling <code>field_buffer()</code> with a null field pointer - will raise an error. Calling <code>field_buffer()</code> on a - field not currently selected for input will return a correct - value. Calling <code>field_buffer()</code> on a field that is - currently selected for input may not necessarily give a correct - field buffer value, because entered data is not necessarily - copied to buffer zero before the exit validation check. To - guarantee that the returned buffer value reflects on-screen - reality, call <code>field_buffer()</code> either (1) in the - field's exit validation check routine, (2) from the field's or - form's initialization or termination hooks, or (3) just after a - <code>REQ_VALIDATION</code> request has been processed by the - forms driver.</p> - - <h3><a name="formattrs" id="formattrs">Attributes of Forms</a></h3> - - <p>As with field attributes, form attributes inherit a default - from a system default form structure. These defaults can be - queried or set by of these functions using a form-pointer - argument of <code>NULL</code>.</p> - - <p>The principal attribute of a form is its field list. You can - query and change this list with:</p> - - <pre class="code-block"> -int set_form_fields(FORM *form, /* form to alter */ - FIELD **fields); /* fields to connect */ - -char *form_fields(FORM *form); /* fetch fields of form */ - -int field_count(FORM *form); /* count connect fields */ -</pre> - <p>The second argument of <code>set_form_fields()</code> may be a - NULL-terminated field pointer array like the one required by - <code>new_form()</code>. In that case, the old fields of the form - are disconnected but not freed (and eligible to be connected to - other forms), then the new fields are connected.</p> - - <p>It may also be null, in which case the old fields are - disconnected (and not freed) but no new ones are connected.</p> - - <p>The <code>field_count()</code> function simply counts the - number of fields connected to a given from. It returns -1 if the - form-pointer argument is NULL.</p> - - <h3><a name="fdisplay" id="fdisplay">Control of Form Display</a></h3> - - <p>In the overview section, you saw that to display a form you - normally start by defining its size (and fields), posting it, and - refreshing the screen. There is an hidden step before posting, - which is the association of the form with a frame window - (actually, a pair of windows) within which it will be displayed. - By default, the forms library associates every form with the - full-screen window <code>stdscr</code>.</p> - - <p>By making this step explicit, you can associate a form with a - declared frame window on your screen display. This can be useful - if you want to adapt the form display to different screen sizes, - dynamically tile forms on the screen, or use a form as part of an - interface layout managed by <a href="#panels">panels</a>.</p> - - <p>The two windows associated with each form have the same - functions as their analogues in the <a href="#menu">menu - library</a>. Both these windows are painted when the form is - posted and erased when the form is unposted.</p> - - <p>The outer or frame window is not otherwise touched by the form - routines. It exists so the programmer can associate a title, a - border, or perhaps help text with the form and have it properly - refreshed or erased at post/unpost time. The inner window or - subwindow is where the current form page is actually - displayed.</p> - - <p>In order to declare your own frame window for a form, you will - need to know the size of the form's bounding rectangle. You can - get this information with:</p> - - <pre class="code-block"> -int scale_form(FORM *form, /* form to query */ - int *rows, /* form rows */ - int *cols); /* form cols */ -</pre> - <p>The form dimensions are passed back in the locations pointed - to by the arguments. Once you have this information, you can use - it to declare of windows, then use one of these functions:</p> - - <pre class="code-block"> -int set_form_win(FORM *form, /* form to alter */ - WINDOW *win); /* frame window to connect */ - -WINDOW *form_win(FORM *form); /* fetch frame window of form */ - -int set_form_sub(FORM *form, /* form to alter */ - WINDOW *win); /* form subwindow to connect */ - -WINDOW *form_sub(FORM *form); /* fetch form subwindow of form */ -</pre> - <p>Note that curses operations, including <code>refresh()</code>, - on the form, should be done on the frame window, not the form - subwindow.</p> - - <p>It is possible to check from your application whether all of a - scrollable field is actually displayed within the menu subwindow. - Use these functions:</p> - - <pre class="code-block"> -int data_ahead(FORM *form); /* form to be queried */ - -int data_behind(FORM *form); /* form to be queried */ -</pre> - <p>The function <code>data_ahead()</code> returns TRUE if (a) the - current field is one-line and has undisplayed data off to the - right, (b) the current field is multi-line and there is data - off-screen below it.</p> - - <p>The function <code>data_behind()</code> returns TRUE if the - first (upper left hand) character position is off-screen (not - being displayed).</p> - - <p>Finally, there is a function to restore the form window's - cursor to the value expected by the forms driver:</p> - - <pre class="code-block"> -int pos_form_cursor(FORM *) /* form to be queried */ -</pre> - <p>If your application changes the form window cursor, call this - function before handing control back to the forms driver in order - to re-synchronize it.</p> - - <h3><a name="fdriver" id="fdriver">Input Processing in the Forms - Driver</a></h3> - - <p>The function <code>form_driver()</code> handles virtualized - input requests for form navigation, editing, and validation - requests, just as <code>menu_driver</code> does for menus (see - the section on <a href="#minput">menu input handling</a>).</p> - - <pre class="code-block"> -int form_driver(FORM *form, /* form to pass input to */ - int request); /* form request code */ -</pre> - <p>Your input virtualization function needs to take input and - then convert it to either an alphanumeric character (which is - treated as data to be entered in the currently-selected field), - or a forms processing request.</p> - - <p>The forms driver provides hooks (through input-validation and - field-termination functions) with which your application code can - check that the input taken by the driver matched what was - expected.</p> - - <h4><a name="fpage" id="fpage">Page Navigation Requests</a></h4> - - <p>These requests cause page-level moves through the form, - triggering display of a new form screen.</p> - - <dl> - <dt><code>REQ_NEXT_PAGE</code> - </dt> - - <dd>Move to the next form page.</dd> - - <dt><code>REQ_PREV_PAGE</code> - </dt> - - <dd>Move to the previous form page.</dd> - - <dt><code>REQ_FIRST_PAGE</code> - </dt> - - <dd>Move to the first form page.</dd> - - <dt><code>REQ_LAST_PAGE</code> - </dt> - - <dd>Move to the last form page.</dd> - </dl> - - <p>These requests treat the list as cyclic; that is, - <code>REQ_NEXT_PAGE</code> from the last page goes to the first, - and <code>REQ_PREV_PAGE</code> from the first page goes to the - last.</p> - - <h4><a name="ffield" id="ffield">Inter-Field Navigation - Requests</a></h4> - - <p>These requests handle navigation between fields on the same - page.</p> - - <dl> - <dt><code>REQ_NEXT_FIELD</code> - </dt> - - <dd>Move to next field.</dd> - - <dt><code>REQ_PREV_FIELD</code> - </dt> - - <dd>Move to previous field.</dd> - - <dt><code>REQ_FIRST_FIELD</code> - </dt> - - <dd>Move to the first field.</dd> - - <dt><code>REQ_LAST_FIELD</code> - </dt> - - <dd>Move to the last field.</dd> - - <dt><code>REQ_SNEXT_FIELD</code> - </dt> - - <dd>Move to sorted next field.</dd> - - <dt><code>REQ_SPREV_FIELD</code> - </dt> - - <dd>Move to sorted previous field.</dd> - - <dt><code>REQ_SFIRST_FIELD</code> - </dt> - - <dd>Move to the sorted first field.</dd> - - <dt><code>REQ_SLAST_FIELD</code> - </dt> - - <dd>Move to the sorted last field.</dd> - - <dt><code>REQ_LEFT_FIELD</code> - </dt> - - <dd>Move left to field.</dd> - - <dt><code>REQ_RIGHT_FIELD</code> - </dt> - - <dd>Move right to field.</dd> - - <dt><code>REQ_UP_FIELD</code> - </dt> - - <dd>Move up to field.</dd> - - <dt><code>REQ_DOWN_FIELD</code> - </dt> - - <dd>Move down to field.</dd> - </dl> - - <p>These requests treat the list of fields on a page as cyclic; - that is, <code>REQ_NEXT_FIELD</code> from the last field goes to - the first, and <code>REQ_PREV_FIELD</code> from the first field - goes to the last. The order of the fields for these (and the - <code>REQ_FIRST_FIELD</code> and <code>REQ_LAST_FIELD</code> - requests) is simply the order of the field pointers in the form - array (as set up by <code>new_form()</code> or - <code>set_form_fields()</code></p> - - <p>It is also possible to traverse the fields as if they had been - sorted in screen-position order, so the sequence goes - left-to-right and top-to-bottom. To do this, use the second group - of four sorted-movement requests.</p> - - <p>Finally, it is possible to move between fields using visual - directions up, down, right, and left. To accomplish this, use the - third group of four requests. Note, however, that the position of - a form for purposes of these requests is its upper-left - corner.</p> - - <p>For example, suppose you have a multi-line field B, and two - single-line fields A and C on the same line with B, with A to the - left of B and C to the right of B. A <code>REQ_MOVE_RIGHT</code> - from A will go to B only if A, B, and C <em>all</em> share the - same first line; otherwise it will skip over B to C.</p> - - <h4><a name="fifield" id="fifield">Intra-Field Navigation - Requests</a></h4> - - <p>These requests drive movement of the edit cursor within the - currently selected field.</p> - - <dl> - <dt><code>REQ_NEXT_CHAR</code> - </dt> - - <dd>Move to next character.</dd> - - <dt><code>REQ_PREV_CHAR</code> - </dt> - - <dd>Move to previous character.</dd> - - <dt><code>REQ_NEXT_LINE</code> - </dt> - - <dd>Move to next line.</dd> - - <dt><code>REQ_PREV_LINE</code> - </dt> - - <dd>Move to previous line.</dd> - - <dt><code>REQ_NEXT_WORD</code> - </dt> - - <dd>Move to next word.</dd> - - <dt><code>REQ_PREV_WORD</code> - </dt> - - <dd>Move to previous word.</dd> - - <dt><code>REQ_BEG_FIELD</code> - </dt> - - <dd>Move to beginning of field.</dd> - - <dt><code>REQ_END_FIELD</code> - </dt> - - <dd>Move to end of field.</dd> - - <dt><code>REQ_BEG_LINE</code> - </dt> - - <dd>Move to beginning of line.</dd> - - <dt><code>REQ_END_LINE</code> - </dt> - - <dd>Move to end of line.</dd> - - <dt><code>REQ_LEFT_CHAR</code> - </dt> - - <dd>Move left in field.</dd> - - <dt><code>REQ_RIGHT_CHAR</code> - </dt> - - <dd>Move right in field.</dd> - - <dt><code>REQ_UP_CHAR</code> - </dt> - - <dd>Move up in field.</dd> - - <dt><code>REQ_DOWN_CHAR</code> - </dt> - - <dd>Move down in field.</dd> - </dl> - - <p>Each <em>word</em> is separated from the previous and next - characters by whitespace. The commands to move to beginning and - end of line or field look for the first or last non-pad character - in their ranges.</p> - - <h4><a name="fscroll" id="fscroll">Scrolling Requests</a></h4> - - <p>Fields that are dynamic and have grown and fields explicitly - created with offscreen rows are scrollable. One-line fields - scroll horizontally; multi-line fields scroll vertically. Most - scrolling is triggered by editing and intra-field movement (the - library scrolls the field to keep the cursor visible). It is - possible to explicitly request scrolling with the following - requests:</p> - - <dl> - <dt><code>REQ_SCR_FLINE</code> - </dt> - - <dd>Scroll vertically forward a line.</dd> - - <dt><code>REQ_SCR_BLINE</code> - </dt> - - <dd>Scroll vertically backward a line.</dd> - - <dt><code>REQ_SCR_FPAGE</code> - </dt> - - <dd>Scroll vertically forward a page.</dd> - - <dt><code>REQ_SCR_BPAGE</code> - </dt> - - <dd>Scroll vertically backward a page.</dd> - - <dt><code>REQ_SCR_FHPAGE</code> - </dt> - - <dd>Scroll vertically forward half a page.</dd> - - <dt><code>REQ_SCR_BHPAGE</code> - </dt> - - <dd>Scroll vertically backward half a page.</dd> - - <dt><code>REQ_SCR_FCHAR</code> - </dt> - - <dd>Scroll horizontally forward a character.</dd> - - <dt><code>REQ_SCR_BCHAR</code> - </dt> - - <dd>Scroll horizontally backward a character.</dd> - - <dt><code>REQ_SCR_HFLINE</code> - </dt> - - <dd>Scroll horizontally one field width forward.</dd> - - <dt><code>REQ_SCR_HBLINE</code> - </dt> - - <dd>Scroll horizontally one field width backward.</dd> - - <dt><code>REQ_SCR_HFHALF</code> - </dt> - - <dd>Scroll horizontally one half field width forward.</dd> - - <dt><code>REQ_SCR_HBHALF</code> - </dt> - - <dd>Scroll horizontally one half field width backward.</dd> - </dl> - - <p>For scrolling purposes, a <em>page</em> of a field is the - height of its visible part.</p> - - <h4><a name="fedit" id="fedit">Editing Requests</a></h4> - - <p>When you pass the forms driver an ASCII character, it is - treated as a request to add the character to the field's data - buffer. Whether this is an insertion or a replacement depends on - the field's edit mode (insertion is the default.</p> - - <p>The following requests support editing the field and changing - the edit mode:</p> - - <dl> - <dt><code>REQ_INS_MODE</code> - </dt> - - <dd>Set insertion mode.</dd> - - <dt><code>REQ_OVL_MODE</code> - </dt> - - <dd>Set overlay mode.</dd> - - <dt><code>REQ_NEW_LINE</code> - </dt> - - <dd>New line request (see below for explanation).</dd> - - <dt><code>REQ_INS_CHAR</code> - </dt> - - <dd>Insert space at character location.</dd> - - <dt><code>REQ_INS_LINE</code> - </dt> - - <dd>Insert blank line at character location.</dd> - - <dt><code>REQ_DEL_CHAR</code> - </dt> - - <dd>Delete character at cursor.</dd> - - <dt><code>REQ_DEL_PREV</code> - </dt> - - <dd>Delete previous word at cursor.</dd> - - <dt><code>REQ_DEL_LINE</code> - </dt> - - <dd>Delete line at cursor.</dd> - - <dt><code>REQ_DEL_WORD</code> - </dt> - - <dd>Delete word at cursor.</dd> - - <dt><code>REQ_CLR_EOL</code> - </dt> - - <dd>Clear to end of line.</dd> - - <dt><code>REQ_CLR_EOF</code> - </dt> - - <dd>Clear to end of field.</dd> - - <dt><code>REQ_CLEAR_FIELD</code> - </dt> - - <dd>Clear entire field.</dd> - </dl> - - <p>The behavior of the <code>REQ_NEW_LINE</code> and - <code>REQ_DEL_PREV</code> requests is complicated and partly - controlled by a pair of forms options. The special cases are - triggered when the cursor is at the beginning of a field, or on - the last line of the field.</p> - - <p>First, we consider <code>REQ_NEW_LINE</code>:</p> - - <p>The normal behavior of <code>REQ_NEW_LINE</code> in insert - mode is to break the current line at the position of the edit - cursor, inserting the portion of the current line after the - cursor as a new line following the current and moving the cursor - to the beginning of that new line (you may think of this as - inserting a newline in the field buffer).</p> - - <p>The normal behavior of <code>REQ_NEW_LINE</code> in overlay - mode is to clear the current line from the position of the edit - cursor to end of line. The cursor is then moved to the beginning - of the next line.</p> - - <p>However, <code>REQ_NEW_LINE</code> at the beginning of a - field, or on the last line of a field, instead does a - <code>REQ_NEXT_FIELD</code>. <code>O_NL_OVERLOAD</code> option is - off, this special action is disabled.</p> - - <p>Now, let us consider <code>REQ_DEL_PREV</code>:</p> - - <p>The normal behavior of <code>REQ_DEL_PREV</code> is to delete - the previous character. If insert mode is on, and the cursor is - at the start of a line, and the text on that line will fit on the - previous one, it instead appends the contents of the current line - to the previous one and deletes the current line (you may think - of this as deleting a newline from the field buffer).</p> - - <p>However, <code>REQ_DEL_PREV</code> at the beginning of a field - is instead treated as a <code>REQ_PREV_FIELD</code>.</p> - - <p>If the <code>O_BS_OVERLOAD</code> option is off, this special - action is disabled and the forms driver just returns - <code>E_REQUEST_DENIED</code>.</p> - - <p>See <a href="#frmoptions">Form Options</a> for discussion of - how to set and clear the overload options.</p> - - <h4><a name="forder" id="forder">Order Requests</a></h4> - - <p>If the type of your field is ordered, and has associated - functions for getting the next and previous values of the type - from a given value, there are requests that can fetch that value - into the field buffer:</p> - - <dl> - <dt><code>REQ_NEXT_CHOICE</code> - </dt> - - <dd>Place the successor value of the current value in the - buffer.</dd> - - <dt><code>REQ_PREV_CHOICE</code> - </dt> - - <dd>Place the predecessor value of the current value in the - buffer.</dd> - </dl> - - <p>Of the built-in field types, only <code>TYPE_ENUM</code> has - built-in successor and predecessor functions. When you define a - field type of your own (see <a href="#fcustom">Custom Validation - Types</a>), you can associate our own ordering functions.</p> - - <h4><a name="fappcmds" id="fappcmds">Application Commands</a></h4> - - <p>Form requests are represented as integers above the - <code>curses</code> value greater than <code>KEY_MAX</code> and - less than or equal to the constant <code>MAX_COMMAND</code>. If - your input-virtualization routine returns a value above - <code>MAX_COMMAND</code>, the forms driver will ignore it.</p> - - <h3><a name="fhooks" id="fhooks">Field Change Hooks</a></h3> - - <p>It is possible to set function hooks to be executed whenever - the current field or form changes. Here are the functions that - support this:</p> - - <pre class="code-block"> -typedef void (*HOOK)(); /* pointer to function returning void */ - -int set_form_init(FORM *form, /* form to alter */ - HOOK hook); /* initialization hook */ - -HOOK form_init(FORM *form); /* form to query */ - -int set_form_term(FORM *form, /* form to alter */ - HOOK hook); /* termination hook */ - -HOOK form_term(FORM *form); /* form to query */ - -int set_field_init(FORM *form, /* form to alter */ - HOOK hook); /* initialization hook */ - -HOOK field_init(FORM *form); /* form to query */ - -int set_field_term(FORM *form, /* form to alter */ - HOOK hook); /* termination hook */ - -HOOK field_term(FORM *form); /* form to query */ -</pre> - <p>These functions allow you to either set or query four - different hooks. In each of the set functions, the second - argument should be the address of a hook function. These - functions differ only in the timing of the hook call.</p> - - <dl> - <dt>form_init</dt> - - <dd>This hook is called when the form is posted; also, just - after each page change operation.</dd> - - <dt>field_init</dt> - - <dd>This hook is called when the form is posted; also, just - after each field change</dd> - - <dt>field_term</dt> - - <dd>This hook is called just after field validation; that is, - just before the field is altered. It is also called when the - form is unposted.</dd> - - <dt>form_term</dt> - - <dd>This hook is called when the form is unposted; also, just - before each page change operation.</dd> - </dl> - - <p>Calls to these hooks may be triggered</p> - - <ol> - <li>When user editing requests are processed by the forms - driver</li> - - <li>When the current page is changed by - <code>set_current_field()</code> call</li> - - <li>When the current field is changed by a - <code>set_form_page()</code> call</li> - </ol> - - <p>See <a name="ffocus" id="ffocus">Field Change Commands</a> for - discussion of the latter two cases.</p> - - <p>You can set a default hook for all fields by passing one of - the set functions a NULL first argument.</p> - - <p>You can disable any of these hooks by (re)setting them to - NULL, the default value.</p> - - <h3><a href="#ffocus">Field Change Commands</a></h3> - - <p>Normally, navigation through the form will be driven by the - user's input requests. But sometimes it is useful to be able to - move the focus for editing and viewing under control of your - application, or ask which field it currently is in. The following - functions help you accomplish this:</p> - - <pre class="code-block"> -int set_current_field(FORM *form, /* form to alter */ - FIELD *field); /* field to shift to */ - -FIELD *current_field(FORM *form); /* form to query */ - -int field_index(FORM *form, /* form to query */ - FIELD *field); /* field to get index of */ -</pre> - <p>The function <code>field_index()</code> returns the index of - the given field in the given form's field array (the array passed - to <code>new_form()</code> or - <code>set_form_fields()</code>).</p> - - <p>The initial current field of a form is the first active field - on the first page. The function <code>set_form_fields()</code> - resets this.</p> - - <p>It is also possible to move around by pages.</p> - - <pre class="code-block"> -int set_form_page(FORM *form, /* form to alter */ - int page); /* page to go to (0-origin) */ - -int form_page(FORM *form); /* return form's current page */ -</pre> - <p>The initial page of a newly-created form is 0. The function - <code>set_form_fields()</code> resets this.</p> - - <h3><a name="frmoptions" id="frmoptions">Form Options</a></h3> - - <p>Like fields, forms may have control option bits. They can be - changed or queried with these functions:</p> - - <pre class="code-block"> -int set_form_opts(FORM *form, /* form to alter */ - int attr); /* attribute to set */ - -int form_opts_on(FORM *form, /* form to alter */ - int attr); /* attributes to turn on */ - -int form_opts_off(FORM *form, /* form to alter */ - int attr); /* attributes to turn off */ - -int form_opts(FORM *form); /* form to query */ -</pre> - <p>By default, all options are on. Here are the available option - bits:</p> - - <dl> - <dt>O_NL_OVERLOAD</dt> - - <dd>Enable overloading of <code>REQ_NEW_LINE</code> as - described in <a href="#fedit">Editing Requests</a>. The value - of this option is ignored on dynamic fields that have not - reached their size limit; these have no last line, so the - circumstances for triggering a <code>REQ_NEXT_FIELD</code> - never arise.</dd> - - <dt>O_BS_OVERLOAD</dt> - - <dd>Enable overloading of <code>REQ_DEL_PREV</code> as - described in <a href="#fedit">Editing Requests</a>.</dd> - </dl> - - <p>The option values are bit-masks and can be composed with - logical-or in the obvious way.</p> - - <h3><a name="fcustom" id="fcustom">Custom Validation Types</a></h3> - - <p>The <code>form</code> library gives you the capability to - define custom validation types of your own. Further, the optional - additional arguments of <code>set_field_type</code> effectively - allow you to parameterize validation types. Most of the - complications in the validation-type interface have to do with - the handling of the additional arguments within custom validation - functions.</p> - - <h4><a name="flinktypes" id="flinktypes">Union Types</a></h4> - - <p>The simplest way to create a custom data type is to compose it - from two preexisting ones:</p> - - <pre class="code-block"> -FIELD *link_fieldtype(FIELDTYPE *type1, - FIELDTYPE *type2); -</pre> - <p>This function creates a field type that will accept any of the - values legal for either of its argument field types (which may be - either predefined or programmer-defined). If a - <code>set_field_type()</code> call later requires arguments, the - new composite type expects all arguments for the first type, than - all arguments for the second. Order functions (see <a href= - "#forder">Order Requests</a>) associated with the component types - will work on the composite; what it does is check the validation - function for the first type, then for the second, to figure what - type the buffer contents should be treated as.</p> - - <h4><a name="fnewtypes" id="fnewtypes">New Field Types</a></h4> - - <p>To create a field type from scratch, you need to specify one - or both of the following things:</p> - - <ul> - <li>A character-validation function, to check each character as - it is entered.</li> - - <li>A field-validation function to be applied on exit from the - field.</li> - </ul> - - <p>Here is how you do that:</p> - - <pre class="code-block"> -typedef int (*HOOK)(); /* pointer to function returning int */ - -FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */ - HOOK c_validate) /* character validator */ - -int free_fieldtype(FIELDTYPE *ftype); /* type to free */ -</pre> - <p>At least one of the arguments of <code>new_fieldtype()</code> - must be non-NULL. The forms driver will automatically call the - new type's validation functions at appropriate points in - processing a field of the new type.</p> - - <p>The function <code>free_fieldtype()</code> deallocates the - argument fieldtype, freeing all storage associated with it.</p> - - <p>Normally, a field validator is called when the user attempts - to leave the field. Its first argument is a field pointer, from - which it can get to field buffer 0 and test it. If the function - returns TRUE, the operation succeeds; if it returns FALSE, the - edit cursor stays in the field.</p> - - <p>A character validator gets the character passed in as a first - argument. It too should return TRUE if the character is valid, - FALSE otherwise.</p> - - <h4><a name="fcheckargs" id="fcheckargs">Validation Function - Arguments</a></h4> - - <p>Your field- and character- validation functions will be passed - a second argument as well. This second argument is the address of - a structure (which we will call a <em>pile</em>) built from any - of the field-type-specific arguments passed to - <code>set_field_type()</code>. If no such arguments are defined - for the field type, this pile pointer argument will be NULL.</p> - - <p>In order to arrange for such arguments to be passed to your - validation functions, you must associate a small set of - storage-management functions with the type. The forms driver will - use these to synthesize a pile from the trailing arguments of - each <code>set_field_type()</code> argument, and a pointer to the - pile will be passed to the validation functions.</p> - - <p>Here is how you make the association:</p> - - <pre class="code-block"> -typedef char *(*PTRHOOK)(); /* pointer to function returning (char *) */ -typedef void (*VOIDHOOK)(); /* pointer to function returning void */ - -int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */ - PTRHOOK make_str, /* make structure from args */ - PTRHOOK copy_str, /* make copy of structure */ - VOIDHOOK free_str); /* free structure storage */ -</pre> - <p>Here is how the storage-management hooks are used:</p> - - <dl> - <dt><code>make_str</code> - </dt> - - <dd>This function is called by <code>set_field_type()</code>. - It gets one argument, a <code>va_list</code> of the - type-specific arguments passed to - <code>set_field_type()</code>. It is expected to return a pile - pointer to a data structure that encapsulates those - arguments.</dd> - - <dt><code>copy_str</code> - </dt> - - <dd>This function is called by form library functions that - allocate new field instances. It is expected to take a pile - pointer, copy the pile to allocated storage, and return the - address of the pile copy.</dd> - - <dt><code>free_str</code> - </dt> - - <dd>This function is called by field- and type-deallocation - routines in the library. It takes a pile pointer argument, and - is expected to free the storage of that pile.</dd> - </dl> - - <p>The <code>make_str</code> and <code>copy_str</code> functions - may return NULL to signal allocation failure. The library - routines will that call them will return error indication when - this happens. Thus, your validation functions should never see a - NULL file pointer and need not check specially for it.</p> - - <h4><a name="fcustorder" id="fcustorder">Order Functions For - Custom Types</a></h4> - - <p>Some custom field types are simply ordered in the same - well-defined way that <code>TYPE_ENUM</code> is. For such types, - it is possible to define successor and predecessor functions to - support the <code>REQ_NEXT_CHOICE</code> and - <code>REQ_PREV_CHOICE</code> requests. Here is how:</p> - - <pre class="code-block"> -typedef int (*INTHOOK)(); /* pointer to function returning int */ - -int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */ - INTHOOK succ, /* get successor value */ - INTHOOK pred); /* get predecessor value */ -</pre> - <p>The successor and predecessor arguments will each be passed - two arguments; a field pointer, and a pile pointer (as for the - validation functions). They are expected to use the function - <code>field_buffer()</code> to read the current value, and - <code>set_field_buffer()</code> on buffer 0 to set the next or - previous value. Either hook may return TRUE to indicate success - (a legal next or previous value was set) or FALSE to indicate - failure.</p> - - <h4><a name="fcustprobs" id="fcustprobs">Avoiding Problems</a></h4> - - <p>The interface for defining custom types is complicated and - tricky. Rather than attempting to create a custom type entirely - from scratch, you should start by studying the library source - code for whichever of the pre-defined types seems to be closest - to what you want.</p> - - <p>Use that code as a model, and evolve it towards what you - really want. You will avoid many problems and annoyances that - way. The code in the <code>ncurses</code> library has been - specifically exempted from the package copyright to support - this.</p> - - <p>If your custom type defines order functions, have do something - intuitive with a blank field. A useful convention is to make the - successor of a blank field the types minimum value, and its - predecessor the maximum.</p> -</body> -</html> diff --git a/contrib/ncurses/doc/ncurses-intro.doc b/contrib/ncurses/doc/ncurses-intro.doc index a20ee1a1d271..87f092d1f735 100644 --- a/contrib/ncurses/doc/ncurses-intro.doc +++ b/contrib/ncurses/doc/ncurses-intro.doc @@ -153,9 +153,8 @@ Introduction source-code or documentation; the tic and infocmp programs are the exceptions. - System V Release 3 (System III UNIX) from Bell Labs featured a - rewritten and much-improved curses library, along with the tic program - (late 1986). + System V Release 3 from Bell Labs featured a rewritten and + much-improved curses library, along with the tic program (late 1986). To recap, terminfo is based on Berkeley's termcap database, but contains a number of improvements and extensions. Parameterized diff --git a/contrib/ncurses/form/Makefile.in b/contrib/ncurses/form/Makefile.in index a950a3e8ae14..753e42faad72 100644 --- a/contrib/ncurses/form/Makefile.in +++ b/contrib/ncurses/form/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.72 2021/07/03 15:45:33 tom Exp $ +# $Id: Makefile.in,v 1.78 2025/10/25 17:58:52 tom Exp $ ############################################################################## -# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2020-2024,2025 Thomas E. Dickey # # Copyright 1998-2015,2018 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -47,11 +47,14 @@ SHELL = @SHELL@ VPATH = @srcdir@ THIS = Makefile +@SET_MAKE@ +@SET_DESTDIR@ +TOP_MFLAGS = DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" + x = @EXEEXT@ o = .@OBJEXT@ MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ top_srcdir = @top_srcdir@ srcdir = @srcdir@ prefix = @prefix@ @@ -61,7 +64,9 @@ libdir = @libdir@ includedir = @includedir@ includesubdir = @includesubdir@ -INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) +INCLUDEDIR = $(DESTDIR)$(includedir@MERGE_PREFIX@)$(includesubdir) +BINDIR = $(DESTDIR)$(bindir@MERGE_PREFIX@) +LIBDIR = $(DESTDIR)$(libdir@MERGE_PREFIX@) PACKAGE = @PACKAGE@ @@ -110,7 +115,7 @@ LINK = $(LIBTOOL_LINK) LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ +SHLIB_LIST = $(SHLIB_DIRS) -lncurses@ABI_SUFFIX@ @SHLIB_LIST@ RPATH_LIST = @RPATH_LIST@ RESULTING_SYMS = @RESULTING_SYMS@ @@ -151,10 +156,13 @@ all \ libs \ install :: $(AUTO_SRC) $(LIBRARIES) +check :: + @echo "no unit-test implemented" + sources : $(AUTO_SRC) -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : +$(BINDIR) \ +$(LIBDIR) : mkdir -p $@ # make copies to simplify include-paths while still keeping form's include @@ -201,6 +209,12 @@ distclean :: clean realclean :: distclean +# These rules are used to allow "make -n" to work on a clean directory-tree +../include/curses.h \ +../include/ncurses_def.h \ +../include/term.h : + ( cd ../include && $(MAKE) $(TOP_MFLAGS) ) + ../include/mf_common.h \ ../include/eti.h : ( cd ../menu && $(MAKE) $@ ) diff --git a/contrib/ncurses/form/fld_arg.c b/contrib/ncurses/form/fld_arg.c index 2f6c47715ccd..7dc4ac32314d 100644 --- a/contrib/ncurses/form/fld_arg.c +++ b/contrib/ncurses/form/fld_arg.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2018-2020,2024 Thomas E. Dickey * * Copyright 1998-2012,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_arg.c,v 1.18 2020/12/11 22:05:24 tom Exp $") +MODULE_ID("$Id: fld_arg.c,v 1.19 2024/12/07 23:00:37 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -75,7 +75,7 @@ set_fieldtype_arg(FIELDTYPE *typ, TR_FUNC_ARG(1, copy_arg), TR_FUNC_ARG(2, free_arg))); - if (typ != 0 && make_arg != (void *)0) + if (typ != NULL && make_arg != NULL) { SetStatus(typ, _HAS_ARGS); typ->makearg = make_arg; diff --git a/contrib/ncurses/form/fld_attr.c b/contrib/ncurses/form/fld_attr.c index 4ce6b1c52d60..7827d1c4931d 100644 --- a/contrib/ncurses/form/fld_attr.c +++ b/contrib/ncurses/form/fld_attr.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2010,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_attr.c,v 1.15 2020/12/11 22:05:24 tom Exp $") +MODULE_ID("$Id: fld_attr.c,v 1.16 2024/12/07 23:01:42 tom Exp $") /*---------------------------------------------------------------------------- Field-Attribute manipulation routines @@ -47,7 +47,7 @@ FORM_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\ if ( attr==A_NORMAL || ((attr & A_ATTRIBUTES)==attr) )\ {\ Normalize_Field( field );\ - if (field != 0) \ + if (field != NULL) \ { \ if ((field -> name) != attr)\ {\ diff --git a/contrib/ncurses/form/fld_current.c b/contrib/ncurses/form/fld_current.c index 264007ef59f3..fc958db159d3 100644 --- a/contrib/ncurses/form/fld_current.c +++ b/contrib/ncurses/form/fld_current.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2010,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_current.c,v 1.16 2020/05/24 01:40:20 anonymous.maarten Exp $") +MODULE_ID("$Id: fld_current.c,v 1.17 2024/12/07 23:01:42 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -54,7 +54,7 @@ set_current_field(FORM *form, FIELD *field) int err = E_OK; T((T_CALLED("set_current_field(%p,%p)"), (void *)form, (void *)field)); - if (form == 0 || field == 0) + if (form == NULL || field == NULL) { RETURN(E_BAD_ARGUMENT); } @@ -117,11 +117,11 @@ FORM_EXPORT(int) unfocus_current_field(FORM *const form) { T((T_CALLED("unfocus_current_field(%p)"), (const void *)form)); - if (form == 0) + if (form == NULL) { RETURN(E_BAD_ARGUMENT); } - else if (form->current == 0) + else if (form->current == NULL) { RETURN(E_REQUEST_DENIED); } @@ -158,7 +158,7 @@ FORM_EXPORT(int) field_index(const FIELD *field) { T((T_CALLED("field_index(%p)"), (const void *)field)); - returnCode((field != 0 && field->form != 0) ? (int)field->index : -1); + returnCode((field != NULL && field->form != NULL) ? (int)field->index : -1); } /* fld_current.c ends here */ diff --git a/contrib/ncurses/form/fld_def.c b/contrib/ncurses/form/fld_def.c index 51bdc6485800..5251bfbef807 100644 --- a/contrib/ncurses/form/fld_def.c +++ b/contrib/ncurses/form/fld_def.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2012,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_def.c,v 1.44 2021/03/27 23:49:53 tom Exp $") +MODULE_ID("$Id: fld_def.c,v 1.46 2024/12/07 21:56:21 tom Exp $") /* this can't be readonly */ static FIELD default_field = @@ -87,14 +87,14 @@ _nc_Make_Argument(const FIELDTYPE *typ, va_list *ap, int *err) { TypeArgument *res = (TypeArgument *)0; - if (typ != 0 && (typ->status & _HAS_ARGS) != 0) + if (typ != NULL && (typ->status & _HAS_ARGS) != 0) { assert(err != 0 && ap != (va_list *)0); if ((typ->status & _LINKED_TYPE) != 0) { TypeArgument *p = typeMalloc(TypeArgument, 1); - if (p != 0) + if (p != NULL) { p->left = _nc_Make_Argument(typ->left, ap, err); p->right = _nc_Make_Argument(typ->right, ap, err); @@ -134,14 +134,14 @@ _nc_Copy_Argument(const FIELDTYPE *typ, const TypeArgument *argp, int *err) { TypeArgument *res = (TypeArgument *)0; - if (typ != 0 && (typ->status & _HAS_ARGS) != 0) + if (typ != NULL && (typ->status & _HAS_ARGS) != 0) { assert(err != 0 && argp != 0); if ((typ->status & _LINKED_TYPE) != 0) { TypeArgument *p = typeMalloc(TypeArgument, 1); - if (p != 0) + if (p != NULL) { p->left = _nc_Copy_Argument(typ, argp->left, err); p->right = _nc_Copy_Argument(typ, argp->right, err); @@ -180,11 +180,11 @@ _nc_Copy_Argument(const FIELDTYPE *typ, const TypeArgument *argp, int *err) FORM_EXPORT(void) _nc_Free_Argument(const FIELDTYPE *typ, TypeArgument *argp) { - if (typ != 0 && (typ->status & _HAS_ARGS) != 0) + if (typ != NULL && (typ->status & _HAS_ARGS) != 0) { if ((typ->status & _LINKED_TYPE) != 0) { - if (argp != 0) + if (argp != NULL) { _nc_Free_Argument(typ->left, argp->left); _nc_Free_Argument(typ->right, argp->right); @@ -229,7 +229,7 @@ _nc_Copy_Type(FIELD *dst, FIELD const *src) } else { - if (dst->type != 0) + if (dst->type != NULL) { dst->type->ref++; } @@ -249,7 +249,7 @@ FORM_EXPORT(void) _nc_Free_Type(FIELD *field) { assert(field != 0); - if (field->type != 0) + if (field->type != NULL) { field->type->ref--; _nc_Free_Argument(field->type, (TypeArgument *)(field->arg)); @@ -289,7 +289,7 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf) nrow >= 0 && nbuf >= 0 && ((err = E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */ - (New_Field = typeMalloc(FIELD, 1)) != 0) + (New_Field = typeMalloc(FIELD, 1)) != NULL) { T((T_CREATE("field %p"), (void *)New_Field)); *New_Field = default_field; @@ -313,7 +313,7 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf) size_t len; len = Total_Buffer_Size(New_Field); - if ((New_Field->buf = (FIELD_CELL *)malloc(len))) + if ((New_Field->buf = (FIELD_CELL *)malloc(len)) != NULL) { /* Prefill buffers with blanks and insert terminating zeroes between buffers */ @@ -360,13 +360,13 @@ free_field(FIELD *field) { RETURN(E_BAD_ARGUMENT); } - else if (field->form != 0) + else if (field->form != NULL) { RETURN(E_CONNECTED); } else if (field == field->link) { - if (field->buf != 0) + if (field->buf != NULL) free(field->buf); } else @@ -380,7 +380,7 @@ free_field(FIELD *field) } _nc_Free_Type(field); #if USE_WIDEC_SUPPORT - if (field->expanded != 0) + if (field->expanded != NULL) { int n; diff --git a/contrib/ncurses/form/fld_dup.c b/contrib/ncurses/form/fld_dup.c index e195df958877..33cf073b934e 100644 --- a/contrib/ncurses/form/fld_dup.c +++ b/contrib/ncurses/form/fld_dup.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_dup.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $") +MODULE_ID("$Id: fld_dup.c,v 1.19 2024/11/30 21:40:55 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -83,7 +83,7 @@ dup_field(FIELD *field, int frow, int fcol) size_t len; len = Total_Buffer_Size(New_Field); - if ((New_Field->buf = (FIELD_CELL *)malloc(len * 20))) + if ((New_Field->buf = (FIELD_CELL *)malloc(len * 20)) != NULL) { memcpy(New_Field->buf, field->buf, len); returnField(New_Field); diff --git a/contrib/ncurses/form/form.priv.h b/contrib/ncurses/form/form.priv.h index ad5af63ad807..57f92eb03164 100644 --- a/contrib/ncurses/form/form.priv.h +++ b/contrib/ncurses/form/form.priv.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2021,2024 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -31,7 +31,7 @@ * Author: Juergen Pfeifer, 1995,1997 * ****************************************************************************/ -/* $Id: form.priv.h,v 0.49 2024/02/24 12:17:31 tom Exp $ */ +/* $Id: form.priv.h,v 0.52 2025/11/01 20:16:03 tom Exp $ */ #ifndef FORM_PRIV_H #define FORM_PRIV_H 1 @@ -93,11 +93,11 @@ extern FORM_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType; /* If form is NULL replace form argument by default-form */ #define Normalize_Form(form) \ - ((form) = (form != 0) ? (form) : _nc_Default_Form) + ((form) = (form != NULL) ? (form) : _nc_Default_Form) /* If field is NULL replace field argument by default-field */ #define Normalize_Field(field) \ - ((field) = (field != 0) ? (field) : _nc_Default_Field) + ((field) = (field != NULL) ? (field) : _nc_Default_Field) #if NCURSES_SP_FUNCS #define Get_Form_Screen(form) \ @@ -172,6 +172,9 @@ TypeArgument; #define C_ZEROS '\0' +#define MAX_DIGITS 64 +#define MaxDigits(n) ((n) > MAX_DIGITS ? MAX_DIGITS : ((n) > 0 ? (n) : 0)) + extern FORM_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*, va_list*, int*); extern FORM_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*, const TypeArgument*, int*); extern FORM_EXPORT(void) _nc_Free_Argument (const FIELDTYPE*, TypeArgument*); @@ -260,7 +263,7 @@ extern FORM_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook); int len; \ int n; \ wchar_t *list = _nc_Widen_String((char *)buffer, &len); \ - if (list != 0) \ + if (list != NULL) \ { \ result = TRUE; \ for (n = 0; n < len; ++n) \ @@ -278,7 +281,7 @@ extern FORM_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook); blank = TRUE; \ result = (n + 1 >= width); \ } \ - else if (!ccheck(list[n], NULL)) \ + else if (!ccheck((int) list[n], NULL)) \ { \ result = FALSE; \ break; \ diff --git a/contrib/ncurses/form/frm_data.c b/contrib/ncurses/form/frm_data.c index 940c32db99c6..1fcb59fc9b9d 100644 --- a/contrib/ncurses/form/frm_data.c +++ b/contrib/ncurses/form/frm_data.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2010,2013 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_data.c,v 1.21 2021/06/17 21:11:08 tom Exp $") +MODULE_ID("$Id: frm_data.c,v 1.22 2024/07/27 18:35:02 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -54,7 +54,7 @@ data_behind(const FORM *form) if (form && (form->status & _POSTED) && form->current) { - FIELD *field; + const FIELD *field; field = form->current; if (!Single_Line_Field(field)) @@ -141,7 +141,7 @@ data_ahead(const FORM *form) if (form && (form->status & _POSTED) && form->current) { - FIELD *field; + const FIELD *field; bool cursor_moved = FALSE; int pos; diff --git a/contrib/ncurses/form/frm_driver.c b/contrib/ncurses/form/frm_driver.c index 75656d69ea2a..276f97f4bbfd 100644 --- a/contrib/ncurses/form/frm_driver.c +++ b/contrib/ncurses/form/frm_driver.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2018-2021,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_driver.c,v 1.135 2021/09/01 23:34:01 tom Exp $") +MODULE_ID("$Id: frm_driver.c,v 1.137 2024/12/07 21:57:21 tom Exp $") /*---------------------------------------------------------------------------- This is the core module of the form library. It contains the majority @@ -313,7 +313,7 @@ cell_base(WINDOW *win, int y, int x) while (LEGALYX(win, y, x)) { - cchar_t *data = &(win->_line[y].text[x]); + const cchar_t *data = &(win->_line[y].text[x]); if (isWidecBase(CHDEREF(data)) || !isWidecExt(CHDEREF(data))) { @@ -387,7 +387,7 @@ NCURSES_INLINE static FIELD_CELL * Get_Start_Of_Data(FIELD_CELL *buf, int blen) { FIELD_CELL *p = buf; - FIELD_CELL *end = &buf[blen]; + const FIELD_CELL *end = &buf[blen]; assert(buf && blen >= 0); while ((p < end) && ISBLANK(*p)) @@ -429,7 +429,7 @@ NCURSES_INLINE static FIELD_CELL * Get_First_Whitespace_Character(FIELD_CELL *buf, int blen) { FIELD_CELL *p = buf; - FIELD_CELL *end = &p[blen]; + const FIELD_CELL *end = &p[blen]; assert(buf && blen >= 0); while ((p < end) && !ISBLANK(*p)) @@ -479,7 +479,7 @@ After_Last_Whitespace_Character(FIELD_CELL *buf, int blen) NCURSES_INLINE static void Adjust_Cursor_Position(FORM *form, const FIELD_CELL *pos) { - FIELD *field; + const FIELD *field; int idx; field = form->current; @@ -716,7 +716,7 @@ Field_Grown(FIELD *field, int amount) for (i = 0; i <= field->nbuf; i++) { FIELD_CELL *new_bp = Address_Of_Nth_Buffer(field, i); - FIELD_CELL *old_bp = oldbuf + i * (1 + old_buflen); + const FIELD_CELL *old_bp = oldbuf + i * (1 + old_buflen); for (j = 0; j < old_buflen; ++j) new_bp[j] = old_bp[j]; @@ -734,7 +734,7 @@ Field_Grown(FIELD *field, int amount) { WINDOW *new_window = newpad(field->drows, field->dcols); - if (new_window != 0) + if (new_window != NULL) { assert(form != (FORM *)0); if (form->w) @@ -802,7 +802,7 @@ static int Field_encloses(FIELD *field, int ry, int rx) { T((T_CALLED("Field_encloses(%p)"), (void *)field)); - if (field != 0 + if (field != NULL && field->frow <= ry && (field->frow + field->rows) > ry && field->fcol <= rx @@ -830,7 +830,7 @@ Field_encloses(FIELD *field, int ry, int rx) FORM_EXPORT(int) _nc_Position_Form_Cursor(FORM *form) { - FIELD *field; + const FIELD *field; WINDOW *formwin; if (!form) @@ -1005,7 +1005,7 @@ _nc_Refresh_Current_Field(FORM *form) static void Perform_Justification(FIELD *field, WINDOW *win) { - FIELD_CELL *bp; + const FIELD_CELL *bp; int len; bp = (Field_Has_Option(field, O_NO_LEFT_STRIP) @@ -1053,7 +1053,7 @@ Perform_Justification(FIELD *field, WINDOW *win) static void Undo_Justification(FIELD *field, WINDOW *win) { - FIELD_CELL *bp; + const FIELD_CELL *bp; int y, x; int len; @@ -1251,7 +1251,7 @@ Synchronize_Linked_Fields(FIELD *field) return (E_SYSTEM_ERROR); for (linked_field = field->link; - (linked_field != field) && (linked_field != 0); + (linked_field != field) && (linked_field != NULL); linked_field = linked_field->link) { int syncres; @@ -1458,7 +1458,7 @@ _nc_Unset_Current_Field(FORM *form) werase(form->w); Perform_Justification(field, form->w); if (Field_Has_Option(field, O_DYNAMIC_JUSTIFY) && - (form->w->_parent == 0)) + (form->w->_parent == NULL)) { copywin(form->w, Get_Form_Window(form), @@ -1480,7 +1480,7 @@ _nc_Unset_Current_Field(FORM *form) } delwin(form->w); form->w = (WINDOW *)0; - form->current = 0; + form->current = NULL; } /*--------------------------------------------------------------------------- @@ -1702,10 +1702,10 @@ IFN_Previous_Line(FORM *form) static int IFN_Next_Word(FORM *form) { - FIELD *field = form->current; + const FIELD *field = form->current; FIELD_CELL *bp = Address_Of_Current_Position_In_Buffer(form); FIELD_CELL *s; - FIELD_CELL *t; + const FIELD_CELL *t; T((T_CALLED("IFN_Next_Word(%p)"), (void *)form)); @@ -1745,9 +1745,9 @@ static int IFN_Previous_Word(FORM *form) { FIELD *field = form->current; - FIELD_CELL *bp = Address_Of_Current_Position_In_Buffer(form); - FIELD_CELL *s; - FIELD_CELL *t; + const FIELD_CELL *bp = Address_Of_Current_Position_In_Buffer(form); + const FIELD_CELL *s; + const FIELD_CELL *t; bool again = FALSE; T((T_CALLED("IFN_Previous_Word(%p)"), (void *)form)); @@ -1845,7 +1845,7 @@ IFN_End_Of_Field(FORM *form) static int IFN_Beginning_Of_Line(FORM *form) { - FIELD *field = form->current; + const FIELD *field = form->current; T((T_CALLED("IFN_Beginning_Of_Line(%p)"), (void *)form)); Synchronize_Buffer(form); @@ -1869,7 +1869,7 @@ IFN_Beginning_Of_Line(FORM *form) static int IFN_End_Of_Line(FORM *form) { - FIELD *field = form->current; + const FIELD *field = form->current; FIELD_CELL *pos; FIELD_CELL *bp; @@ -2009,7 +2009,7 @@ IFN_Down_Character(FORM *form) static int VSC_Generic(FORM *form, int nlines) { - FIELD *field = form->current; + const FIELD *field = form->current; int res = E_REQUEST_DENIED; int rows_to_go = (nlines > 0 ? nlines : -nlines); @@ -2189,7 +2189,7 @@ VSC_Scroll_Half_Page_Backward(FORM *form) static int HSC_Generic(FORM *form, int ncolumns) { - FIELD *field = form->current; + const FIELD *field = form->current; int res = E_REQUEST_DENIED; int cols_to_go = (ncolumns > 0 ? ncolumns : -ncolumns); @@ -2365,7 +2365,8 @@ NCURSES_INLINE static bool Is_There_Room_For_A_Line(FORM *form) { FIELD *field = form->current; - FIELD_CELL *begin_of_last_line, *s; + FIELD_CELL *begin_of_last_line; + const FIELD_CELL *s; Synchronize_Buffer(form); begin_of_last_line = Address_Of_Row_In_Buffer(field, (field->drows - 1)); @@ -2419,7 +2420,7 @@ Is_There_Room_For_A_Char_In_Line(FORM *form) | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ static int -Insert_String(FORM *form, int row, FIELD_CELL *txt, int len) +Insert_String(FORM *form, int row, const FIELD_CELL *txt, int len) { FIELD *field = form->current; FIELD_CELL *bp = Address_Of_Row_In_Buffer(field, row); @@ -2450,7 +2451,7 @@ Insert_String(FORM *form, int row, FIELD_CELL *txt, int len) if (row < (field->drows - 1)) { - FIELD_CELL *split; + const FIELD_CELL *split; split = After_Last_Whitespace_Character(bp, @@ -2507,7 +2508,7 @@ Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form) (!Last_Row || Growable(field))) /* there are more lines */ { FIELD_CELL *bp; - FIELD_CELL *split; + const FIELD_CELL *split; int chars_to_be_wrapped; int chars_to_remain_on_line; @@ -2633,7 +2634,7 @@ static int FE_New_Line(FORM *form) { FIELD *field = form->current; - FIELD_CELL *bp, *t; + FIELD_CELL *bp; bool Last_Row = ((field->drows - 1) == form->currow); T((T_CALLED("FE_New_Line(%p)"), (void *)form)); @@ -2682,6 +2683,7 @@ FE_New_Line(FORM *form) } else { + const FIELD_CELL *t; bool May_Do_It = !Last_Row && Is_There_Room_For_A_Line(form); if (!(May_Do_It || Growable(field))) @@ -2810,7 +2812,7 @@ FE_Delete_Character(FORM *form) static int FE_Delete_Previous(FORM *form) { - FIELD *field = form->current; + const FIELD *field = form->current; T((T_CALLED("FE_Delete_Previous(%p)"), (void *)form)); if (First_Position_In_Current_Field(form)) @@ -2818,7 +2820,8 @@ FE_Delete_Previous(FORM *form) if ((--(form->curcol)) < 0) { - FIELD_CELL *this_line, *prev_line, *prev_end, *this_end; + FIELD_CELL *this_line, *prev_line; + const FIELD_CELL *prev_end, *this_end; int this_row = form->currow; form->curcol++; @@ -2898,9 +2901,9 @@ FE_Delete_Line(FORM *form) static int FE_Delete_Word(FORM *form) { - FIELD *field = form->current; + const FIELD *field = form->current; FIELD_CELL *bp = Address_Of_Current_Row_In_Buffer(form); - FIELD_CELL *ep = bp + field->dcols; + const FIELD_CELL *ep = bp + field->dcols; FIELD_CELL *cp = bp + form->curcol; FIELD_CELL *s; @@ -4440,7 +4443,7 @@ form_driver(FORM *form, int c) { MEVENT event; WINDOW *win = form->win ? form->win : StdScreen(Get_Form_Screen(form)); - WINDOW *sub = form->sub ? form->sub : win; + const WINDOW *sub = form->sub ? form->sub : win; getmouse(&event); if ((event.bstate & (BUTTON1_CLICKED | @@ -4641,7 +4644,7 @@ form_driver_w(FORM *form, int type, wchar_t c) { MEVENT event; WINDOW *win = form->win ? form->win : StdScreen(Get_Form_Screen(form)); - WINDOW *sub = form->sub ? form->sub : win; + const WINDOW *sub = form->sub ? form->sub : win; getmouse(&event); if ((event.bstate & (BUTTON1_CLICKED | @@ -4755,7 +4758,7 @@ set_field_buffer(FIELD *field, int buffer, const char *value) int len; #if USE_WIDEC_SUPPORT - FIELD_CELL *widevalue = 0; + FIELD_CELL *widevalue = NULL; #endif T((T_CALLED("set_field_buffer(%p,%d,%s)"), (void *)field, buffer, _nc_visbuf(value))); @@ -4804,7 +4807,7 @@ set_field_buffer(FIELD *field, int buffer, const char *value) wclear(field->working); (void)mvwaddstr(field->working, 0, 0, value); - if ((widevalue = typeCalloc(FIELD_CELL, len + 1)) == 0) + if ((widevalue = typeCalloc(FIELD_CELL, len + 1)) == NULL) { RETURN(E_SYSTEM_ERROR); } @@ -4866,7 +4869,7 @@ set_field_buffer(FIELD *field, int buffer, const char *value) FORM_EXPORT(char *) field_buffer(const FIELD *field, int buffer) { - char *result = 0; + char *result = NULL; T((T_CALLED("field_buffer(%p,%d)"), (const void *)field, buffer)); @@ -4887,14 +4890,14 @@ field_buffer(const FIELD *field, int buffer) size_t next; init_mb(state); - next = _nc_wcrtomb(0, data[n].chars[0], &state); + next = _nc_wcrtomb(NULL, data[n].chars[0], &state); if (next > 0) need += next; } } /* allocate a place to store the expanded string */ - if (field->expanded[buffer] != 0) + if (field->expanded[buffer] != NULL) free(field->expanded[buffer]); field->expanded[buffer] = typeMalloc(char, need + 1); @@ -4906,7 +4909,7 @@ field_buffer(const FIELD *field, int buffer) * contain embedded wide-character extensions). Change the null-padding * to blanks as needed. */ - if ((result = field->expanded[buffer]) != 0) + if ((result = field->expanded[buffer]) != NULL) { wclear(field->working); wmove(field->working, 0, 0); @@ -4934,8 +4937,8 @@ field_buffer(const FIELD *field, int buffer) FORM_EXPORT(wchar_t *) _nc_Widen_String(char *source, int *lengthp) { - wchar_t *result = 0; - wchar_t wch; + wchar_t *result = NULL; + wchar_t wch = 0; size_t given = strlen(source); size_t tries; int pass; @@ -4996,7 +4999,7 @@ _nc_Widen_String(char *source, int *lengthp) result = typeCalloc(wchar_t, need); *lengthp = (int)need; - if (result == 0) + if (result == NULL) break; } } diff --git a/contrib/ncurses/form/frm_post.c b/contrib/ncurses/form/frm_post.c index ab880894d925..a4f4f7d39dd4 100644 --- a/contrib/ncurses/form/frm_post.c +++ b/contrib/ncurses/form/frm_post.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_post.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $") +MODULE_ID("$Id: frm_post.c,v 1.15 2024/07/27 18:35:02 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -51,7 +51,7 @@ MODULE_ID("$Id: frm_post.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $") FORM_EXPORT(int) post_form(FORM *form) { - WINDOW *formwin; + const WINDOW *formwin; int err; int page; diff --git a/contrib/ncurses/form/frm_req_name.c b/contrib/ncurses/form/frm_req_name.c index 8b76a8e4f542..6c98ace911c8 100644 --- a/contrib/ncurses/form/frm_req_name.c +++ b/contrib/ncurses/form/frm_req_name.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2012,2015 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_req_name.c,v 1.23 2021/06/17 21:11:08 tom Exp $") +MODULE_ID("$Id: frm_req_name.c,v 1.24 2024/12/07 23:00:37 tom Exp $") #define DATA(s) { s } @@ -153,7 +153,7 @@ form_request_by_name(const char *str) T((T_CALLED("form_request_by_name(%s)"), _nc_visbuf(str))); - if (str != 0 && (i = strlen(str)) != 0) + if (str != NULL && (i = strlen(str)) != 0) { char buf[16]; /* longest name is 10 chars */ diff --git a/contrib/ncurses/form/frm_sub.c b/contrib/ncurses/form/frm_sub.c index 8f1de099cdf6..4fb00e7a789b 100644 --- a/contrib/ncurses/form/frm_sub.c +++ b/contrib/ncurses/form/frm_sub.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2009,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_sub.c,v 1.15 2021/06/17 21:20:30 tom Exp $") +MODULE_ID("$Id: frm_sub.c,v 1.16 2024/07/27 18:35:02 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -54,9 +54,8 @@ set_form_sub(FORM *form, WINDOW *win) else { #if NCURSES_SP_FUNCS - FORM *f = Normalize_Form(form); - - f->sub = win ? win : StdScreen(Get_Form_Screen(f)); + (void) Normalize_Form(form); + form->sub = win ? win : StdScreen(Get_Form_Screen(form)); RETURN(E_OK); #else Normalize_Form(form)->sub = win; @@ -76,12 +75,10 @@ set_form_sub(FORM *form, WINDOW *win) FORM_EXPORT(WINDOW *) form_sub(const FORM *form) { - const FORM *f; - T((T_CALLED("form_sub(%p)"), (const void *)form)); - f = Normalize_Form(form); - returnWin(Get_Form_Window(f)); + (void) Normalize_Form(form); + returnWin(Get_Form_Window(form)); } /* frm_sub.c ends here */ diff --git a/contrib/ncurses/form/frm_win.c b/contrib/ncurses/form/frm_win.c index eeea27d37366..eb4982922b15 100644 --- a/contrib/ncurses/form/frm_win.c +++ b/contrib/ncurses/form/frm_win.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2009,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_win.c,v 1.19 2021/06/17 21:20:30 tom Exp $") +MODULE_ID("$Id: frm_win.c,v 1.20 2024/07/27 18:35:02 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -54,9 +54,8 @@ set_form_win(FORM *form, WINDOW *win) else { #if NCURSES_SP_FUNCS - FORM *f = Normalize_Form(form); - - f->win = win ? win : StdScreen(Get_Form_Screen(f)); + (void) Normalize_Form(form); + form->win = win ? win : StdScreen(Get_Form_Screen(form)); RETURN(E_OK); #else Normalize_Form(form)->win = win; @@ -77,15 +76,14 @@ FORM_EXPORT(WINDOW *) form_win(const FORM *form) { WINDOW *result; - const FORM *f; T((T_CALLED("form_win(%p)"), (const void *)form)); - f = Normalize_Form(form); + (void) Normalize_Form(form); #if NCURSES_SP_FUNCS - result = (f->win ? f->win : StdScreen(Get_Form_Screen(f))); + result = (form->win ? form->win : StdScreen(Get_Form_Screen(form))); #else - result = (f->win ? f->win : stdscr); + result = (form->win ? form->win : stdscr); #endif returnWin(result); } diff --git a/contrib/ncurses/form/fty_enum.c b/contrib/ncurses/form/fty_enum.c index 16ffae11036f..59c3ff77a9d8 100644 --- a/contrib/ncurses/form/fty_enum.c +++ b/contrib/ncurses/form/fty_enum.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2009,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_enum.c,v 1.33 2021/06/17 21:11:08 tom Exp $") +MODULE_ID("$Id: fty_enum.c,v 1.36 2025/11/15 18:12:38 tom Exp $") typedef struct { @@ -104,7 +104,7 @@ Generic_Enum_Type(void *arg) argp->kwds = typeMalloc(char *, cnt + 1); kp = kwds; - if ((kptarget = argp->kwds) != 0) + if ((kptarget = argp->kwds) != NULL) { while (kp && (*kp)) { @@ -168,7 +168,7 @@ Copy_Enum_Type(const void *argp) char **kp = ap->kwds; result->kwds = typeMalloc(char *, 1 + ap->count); - if ((kptarget = result->kwds) != 0) + if ((kptarget = result->kwds) != NULL) { while (kp && (*kp)) { @@ -209,6 +209,7 @@ Free_Enum_Type(void *argp) } assert(cnt == ap->count); free(ap->kwds); + (void) cnt; } free(argp); } @@ -291,21 +292,21 @@ Check_Enum_Field(FIELD *field, const void *argp) char **kwds = ((const enumARG *)argp)->kwds; bool ccase = ((const enumARG *)argp)->checkcase; bool unique = ((const enumARG *)argp)->checkunique; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - char *s, *t, *p; + const unsigned char *bp = (unsigned char *)field_buffer(field, 0); + const char *s, *t, *p; while (kwds && (s = (*kwds++))) { int res; - if ((res = Compare((unsigned char *)s, bp, ccase)) != NOMATCH) + if ((res = Compare((const unsigned char *)s, bp, ccase)) != NOMATCH) { p = t = s; /* t is at least a partial match */ if ((unique && res != EXACT)) { while (kwds && (p = *kwds++)) { - if ((res = Compare((unsigned char *)p, bp, ccase)) != NOMATCH) + if ((res = Compare((const unsigned char *)p, bp, ccase)) != NOMATCH) { if (res == EXACT) { @@ -313,7 +314,7 @@ Check_Enum_Field(FIELD *field, const void *argp) break; } else - t = (char *)0; + t = NULL; } } } @@ -347,12 +348,13 @@ Next_Enum(FIELD *field, const void *argp) { const enumARG *args = (const enumARG *)argp; char **kwds = args->kwds; - bool ccase = args->checkcase; - int cnt = args->count; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); + const unsigned char *bp = (const unsigned char *)field_buffer(field, 0); if (kwds) { + int cnt = args->count; + bool ccase = args->checkcase; + while (cnt--) { if (Compare((unsigned char *)(*kwds++), bp, ccase) == EXACT) @@ -386,26 +388,25 @@ Previous_Enum(FIELD *field, const void *argp) const enumARG *args = (const enumARG *)argp; int cnt = args->count; char **kwds = &args->kwds[cnt - 1]; + const unsigned char *bp = (const unsigned char *)field_buffer(field, 0); + bool ccase = args->checkcase; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - if (kwds) + while (cnt--) { - while (cnt--) - { - if (Compare((unsigned char *)(*kwds--), bp, ccase) == EXACT) - break; - } + if (Compare((unsigned char *)(*kwds--), bp, ccase) == EXACT) + break; + } - if (cnt <= 0) - kwds = &args->kwds[args->count - 1]; + if (cnt <= 0) + kwds = &args->kwds[args->count - 1]; - if ((cnt >= 0) || (Compare((const unsigned char *)dummy, bp, ccase) == EXACT)) - { - set_field_buffer(field, 0, *kwds); - return TRUE; - } + if ((cnt >= 0) || (Compare((const unsigned char *)dummy, bp, ccase) == EXACT)) + { + set_field_buffer(field, 0, *kwds); + return TRUE; } + return FALSE; } diff --git a/contrib/ncurses/form/fty_generic.c b/contrib/ncurses/form/fty_generic.c index 301c80a1f07a..443a7fe2055d 100644 --- a/contrib/ncurses/form/fty_generic.c +++ b/contrib/ncurses/form/fty_generic.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2018-2021,2024 Thomas E. Dickey * * Copyright 2008-2012,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_generic.c,v 1.15 2021/03/27 23:49:53 tom Exp $") +MODULE_ID("$Id: fty_generic.c,v 1.17 2024/12/07 23:12:11 tom Exp $") /* * This is not a full implementation of a field type, but adds some @@ -170,7 +170,10 @@ GenericArgument(const FIELDTYPE *typ, { TypeArgument *res = (TypeArgument *)0; - if (typ != 0 && (typ->status & _HAS_ARGS) != 0 && err != 0 && argiterator != 0) + if (typ != NULL + && (typ->status & _HAS_ARGS) != 0 + && err != NULL + && argiterator != NULL) { if (typ->status & _LINKED_TYPE) { @@ -189,14 +192,14 @@ GenericArgument(const FIELDTYPE *typ, else { assert(typ->genericarg != (void *)0); - if (typ->genericarg == 0) + if (typ->genericarg == NULL) *err += 1; else { void *argp; int valid = argiterator(&argp); - if (valid == 0 || argp == 0 || + if (valid == 0 || argp == NULL || !(res = (TypeArgument *)typ->genericarg(argp))) { *err += 1; @@ -231,7 +234,7 @@ _nc_set_generic_fieldtype(FIELD *field, if (field) { - if (field && field->type) + if (field->type) _nc_Free_Type(field); field->type = ftyp; @@ -282,7 +285,7 @@ _nc_form_cursor(const FORM *form, int *pRow, int *pCol) int code = E_SYSTEM_ERROR; WINDOW *res = (WINDOW *)0; - if (form != 0 && pRow != 0 && pCol != 0) + if (form != NULL && pRow != NULL && pCol != NULL) { *pRow = form->currow; *pCol = form->curcol; diff --git a/contrib/ncurses/form/fty_int.c b/contrib/ncurses/form/fty_int.c index c7e3135c882b..7cd90bb020f5 100644 --- a/contrib/ncurses/form/fty_int.c +++ b/contrib/ncurses/form/fty_int.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020,2021,2024 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_int.c,v 1.33 2021/06/17 21:11:08 tom Exp $") +MODULE_ID("$Id: fty_int.c,v 1.36 2024/12/21 17:14:36 tom Exp $") #if USE_WIDEC_SUPPORT #define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c))) @@ -73,7 +73,7 @@ static void * Generic_This_Type(void *arg) { thisARG *argp = (thisARG *)0; - thisARG *param = (thisARG *)arg; + const thisARG *param = (thisARG *)arg; if (param) { @@ -169,7 +169,7 @@ Check_This_Field(FIELD *field, const void *argp) long high = argi->high; int prec = argi->precision; unsigned char *bp = (unsigned char *)field_buffer(field, 0); - char *s = (char *)bp; + const char *s = (char *)bp; bool result = FALSE; while (*bp == ' ') @@ -184,7 +184,7 @@ Check_This_Field(FIELD *field, const void *argp) int len; wchar_t *list = _nc_Widen_String((char *)bp, &len); - if (list != 0) + if (list != NULL) { bool blank = FALSE; int n; @@ -235,10 +235,10 @@ Check_This_Field(FIELD *field, const void *argp) } if (result) { - char buf[100]; + char buf[MAX_DIGITS + 3]; _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) - "%.*ld", (prec > 0 ? prec : 0), val); + "%.*ld", MaxDigits(prec), val); set_field_buffer(field, 0, buf); } } diff --git a/contrib/ncurses/form/fty_num.c b/contrib/ncurses/form/fty_num.c index 34cef6364bdb..9f03b2e6e3b3 100644 --- a/contrib/ncurses/form/fty_num.c +++ b/contrib/ncurses/form/fty_num.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2019-2021,2024 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_num.c,v 1.37 2021/03/27 23:49:58 tom Exp $") +MODULE_ID("$Id: fty_num.c,v 1.40 2024/12/21 17:16:09 tom Exp $") #if HAVE_LOCALE_H #include <locale.h> @@ -84,7 +84,7 @@ static void * Generic_This_Type(void *arg) { thisARG *argn = (thisARG *)0; - thisPARM *args = (thisPARM *)arg; + const thisPARM *args = (thisPARM *)arg; if (args) { @@ -187,8 +187,8 @@ Check_This_Field(FIELD *field, const void *argp) double high = argn->high; int prec = argn->precision; unsigned char *bp = (unsigned char *)field_buffer(field, 0); - char *s = (char *)bp; - struct lconv *L = argn->L; + const char *s = (char *)bp; + const struct lconv *L = argn->L; bool result = FALSE; while (*bp == ' ') @@ -203,7 +203,7 @@ Check_This_Field(FIELD *field, const void *argp) int len; wchar_t *list = _nc_Widen_String((char *)bp, &len); - if (list != 0) + if (list != NULL) { bool blank = FALSE; int state = 0; @@ -273,10 +273,10 @@ Check_This_Field(FIELD *field, const void *argp) } if (result) { - char buf[64]; + char buf[MAX_DIGITS * 6]; _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) - "%.*f", (prec > 0 ? prec : 0), val); + "%.*f", MaxDigits(prec), val); set_field_buffer(field, 0, buf); } } diff --git a/contrib/ncurses/form/fty_regex.c b/contrib/ncurses/form/fty_regex.c index 62dcab58c352..66e7351e27dd 100644 --- a/contrib/ncurses/form/fty_regex.c +++ b/contrib/ncurses/form/fty_regex.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2018-2021,2024 Thomas E. Dickey * * Copyright 1998-2012,2015 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_regex.c,v 1.33 2021/08/14 15:01:52 tom Exp $") +MODULE_ID("$Id: fty_regex.c,v 1.34 2024/12/07 23:02:27 tom Exp $") #if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2 /* We prefer POSIX regex */ @@ -157,12 +157,12 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) if (preg) { T((T_CREATE("RegExp_Arg %p"), (void *)preg)); - if (((preg->pRegExp = typeMalloc(regex_t, 1)) != 0) + if (((preg->pRegExp = typeMalloc(regex_t, 1)) != NULL) && !regcomp(preg->pRegExp, rx, (REG_EXTENDED | REG_NOSUB | REG_NEWLINE))) { T((T_CREATE("regex_t %p"), (void *)preg->pRegExp)); - if ((preg->refCount = typeMalloc(unsigned long, 1)) != 0) + if ((preg->refCount = typeMalloc(unsigned long, 1)) != NULL) *(preg->refCount) = 1; } else diff --git a/contrib/ncurses/include/Caps b/contrib/ncurses/include/Caps index cd077b969192..7a7885274171 100644 --- a/contrib/ncurses/include/Caps +++ b/contrib/ncurses/include/Caps @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2019-2023,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 1998-2015,2016 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -30,7 +30,7 @@ # Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 # and: Eric S. Raymond <esr@snark.thyrsus.com> # -# $Id: Caps,v 1.56 2024/04/20 21:05:02 tom Exp $ +# $Id: Caps,v 1.62 2025/11/12 01:06:36 Branden.Robinson Exp $ # # This is the master termcap/terminfo capability table. # @@ -167,8 +167,10 @@ # The tables are a tight fit on traditional man(7) implementations that # use a line length of 65n, and the "Description" column has little room # within which the formatter can make breaking or adjustment decisions. -# Words like "micro_..._address" and "parm_..._micro" don't break. -# Reducing the inter-column gaps to 2 ens gives them enough room. --GBR +# (MKterminfo.sh causes such columns to be formatted in tbl(1) text +# blocks.) Words like "micro_..._address" and "parm_..._micro" don't +# break. Reducing the inter-column gaps to 2 ens gives them enough +# room. --GBR # ############################################################################# # @@ -241,12 +243,15 @@ #%behavior, #%for instance if the string contains percent signs. #%. +#%.br +#%.if n .ne 4v +#%.if t .ne 3v #%.PP #%.TS #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Boolean Capability Name TI TC Description #%_ @@ -294,7 +299,7 @@ lpi_changes_res lpix bool YG - - ----- changing line pitch changes resolution #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -311,7 +316,10 @@ label_height lh num lh - - ----- rows in each label label_width lw num lw - - ----- columns in each label max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle maximum_windows wnum num MW - - ----- maximum number of definable windows -# These came in with SVr4's color support +# The following were introduced by SVr3.2's color support. +# https://github.com/ryanwoodsmall/oldsysv/blob/\ +# e68293af91e2dc39f5f29c20d7e429f9e0cabc75/\ +# sysvr3/32/usr/src/lib/libcurses/screen/caps#L64 max_colors colors num Co - - ----- maximum number of colors on screen max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen no_color_video ncv num NC - - ----- video attributes that cannot be used with colors @@ -327,7 +335,7 @@ no_color_video ncv num NC - - ----- video attributes that cannot be used with #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -355,7 +363,7 @@ bit_image_type bitype num Yp - - ----- type of bit-image device #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -424,7 +432,7 @@ key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key @@ -451,8 +459,8 @@ key_sf kind str kF KEY_SF 0520 -B-G-* scroll-forward key key_sr kri str kR KEY_SR 0521 -B-G-* scroll-backward key key_stab khts str kT KEY_STAB 0524 -B-G-* set-tab key key_up kcuu1 str ku KEY_UP 0403 YBCGE up-arrow key -keypad_local rmkx str ke - - YBCGE leave keyboard transmit mode -keypad_xmit smkx str ks - - YBCGE enter keyboard transmit mode +keypad_local rmkx str ke - - YBCGE leave keypad transmit mode +keypad_xmit smkx str ks - - YBCGE enter keypad transmit mode lab_f0 lf0 str l0 - - -B-G-* label on function key f0 if not f0 lab_f1 lf1 str l1 - - -B-G-* label on function key f1 if not f1 lab_f10 lf10 str la - - ----- label on function key f10 if not f10 @@ -490,7 +498,7 @@ reset_2string rs2 str r2 - - -B--- reset string #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. reset_3string rs3 str r3 - - -B--- reset string reset_file rf str rf - - -B--- name of reset file restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor @@ -560,7 +568,7 @@ key_undo kund str &8 KEY_UNDO 0630 ----- undo key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key @@ -626,7 +634,7 @@ key_f42 kf42 str FW KEY_F(42) - ----E F42 function key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_f43 kf43 str FX KEY_F(43) - ----E F43 function key key_f44 kf44 str FY KEY_F(44) - ----E F44 function key key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key @@ -698,7 +706,7 @@ enter_doublewide_mode swidm str ZF - - ----- Enter double-wide mode #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. enter_draft_quality sdrfq str ZG - - ----- Enter draft-quality mode enter_italics_mode sitm str ZH - - ----- Enter italic mode enter_leftward_mode slm str ZI - - ----- Start leftward carriage motion @@ -754,7 +762,7 @@ zero_motion zerom str Zx - - ----- No motion for subsequent character #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -810,7 +818,7 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ diff --git a/contrib/ncurses/include/Caps.aix4 b/contrib/ncurses/include/Caps.aix4 index 1adb848e08b1..0305001abeba 100644 --- a/contrib/ncurses/include/Caps.aix4 +++ b/contrib/ncurses/include/Caps.aix4 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2019-2023,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 2001-2015,2016 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -29,7 +29,7 @@ # # Author: Thomas Dickey # -# $Id: Caps.aix4,v 1.28 2024/04/20 21:05:02 tom Exp $ +# $Id: Caps.aix4,v 1.30 2025/11/12 01:27:41 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with AIX 4.x's terminfo. @@ -246,7 +246,7 @@ #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Boolean Capability Name TI TC Description #%_ @@ -294,7 +294,7 @@ lpi_changes_res lpix bool YG - - ----- changing line pitch changes resolution #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -327,7 +327,7 @@ no_color_video ncv num NC - - ----- video attributes that cannot be used with #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -355,7 +355,7 @@ bit_image_type bitype num Yp - - ----- type of bit-image device #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -424,7 +424,7 @@ key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key @@ -490,7 +490,7 @@ reset_2string rs2 str r2 - - -B--- reset string #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. reset_3string rs3 str r3 - - -B--- reset string reset_file rf str rf - - -B--- name of reset file restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor @@ -642,7 +642,7 @@ key_f42 kf42 str FW KEY_F(42) - ----E F42 function key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_f43 kf43 str FX KEY_F(43) - ----E F43 function key key_f44 kf44 str FY KEY_F(44) - ----E F44 function key key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key @@ -719,7 +719,7 @@ key_undo kund str &8 KEY_UNDO 0630 ----- undo key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key @@ -800,7 +800,7 @@ enter_doublewide_mode swidm str ZF - - ----- Enter double-wide mode #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. enter_draft_quality sdrfq str ZG - - ----- Enter draft-quality mode enter_italics_mode sitm str ZH - - ----- Enter italic mode enter_leftward_mode slm str ZI - - ----- Start leftward carriage motion @@ -856,7 +856,7 @@ zero_motion zerom str Zx - - ----- No motion for subsequent character #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -912,7 +912,7 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ diff --git a/contrib/ncurses/include/Caps.hpux11 b/contrib/ncurses/include/Caps.hpux11 index 723556fa18f4..9fedc4d053ec 100644 --- a/contrib/ncurses/include/Caps.hpux11 +++ b/contrib/ncurses/include/Caps.hpux11 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2019-2023,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 2002-2015,2016 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -29,7 +29,7 @@ # # Author: Thomas Dickey # -# $Id: Caps.hpux11,v 1.26 2024/04/20 21:05:02 tom Exp $ +# $Id: Caps.hpux11,v 1.28 2025/11/12 01:27:41 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with HPUX 11.x's terminfo. @@ -246,7 +246,7 @@ #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Boolean Capability Name TI TC Description #%_ @@ -295,7 +295,7 @@ lpi_changes_res lpix bool YG - - ----- changing line pitch changes resolution #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -329,7 +329,7 @@ no_color_video ncv num NC - - ----- video attributes that cannot be used with #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -357,7 +357,7 @@ bit_image_type bitype num Yp - - ----- type of bit-image device #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -426,7 +426,7 @@ key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key @@ -492,7 +492,7 @@ reset_2string rs2 str r2 - - -B--- reset string #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. reset_3string rs3 str r3 - - -B--- reset string reset_file rf str rf - - -B--- name of reset file restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor @@ -561,7 +561,7 @@ key_f42 kf42 str FW KEY_F(42) - ----E F42 function key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_f43 kf43 str FX KEY_F(43) - ----E F43 function key key_f44 kf44 str FY KEY_F(44) - ----E F44 function key key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key @@ -625,7 +625,7 @@ key_undo kund str &8 KEY_UNDO 0630 ----- undo key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key @@ -706,7 +706,7 @@ enter_doublewide_mode swidm str ZF - - ----- Enter double-wide mode #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. enter_draft_quality sdrfq str ZG - - ----- Enter draft-quality mode enter_italics_mode sitm str ZH - - ----- Enter italic mode enter_leftward_mode slm str ZI - - ----- Start leftward carriage motion @@ -762,7 +762,7 @@ zero_motion zerom str Zx - - ----- No motion for subsequent character #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -820,7 +820,7 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ diff --git a/contrib/ncurses/include/Caps.keys b/contrib/ncurses/include/Caps.keys index 6f8a84e3455f..cf304f89c482 100644 --- a/contrib/ncurses/include/Caps.keys +++ b/contrib/ncurses/include/Caps.keys @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2019-2023,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 2001-2015,2016 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -30,7 +30,7 @@ # Author: Thomas Dickey # and: Ilya Zakharevich # -# $Id: Caps.keys,v 1.25 2024/04/20 21:05:02 tom Exp $ +# $Id: Caps.keys,v 1.27 2025/11/12 01:27:41 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is illustrates an experimental extension to describe alt-, shift- and @@ -249,7 +249,7 @@ #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Boolean Capability Name TI TC Description #%_ @@ -297,7 +297,7 @@ lpi_changes_res lpix bool YG - - ----- changing line pitch changes resolution #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -330,7 +330,7 @@ no_color_video ncv num NC - - ----- video attributes that cannot be used with #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -358,7 +358,7 @@ bit_image_type bitype num Yp - - ----- type of bit-image device #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -427,7 +427,7 @@ key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key @@ -493,7 +493,7 @@ reset_2string rs2 str r2 - - -B--- reset string #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. reset_3string rs3 str r3 - - -B--- reset string reset_file rf str rf - - -B--- name of reset file restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor @@ -563,7 +563,7 @@ key_undo kund str &8 KEY_UNDO 0630 ----- undo key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key @@ -629,7 +629,7 @@ key_f42 kf42 str FW KEY_F(42) - ----E F42 function key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_f43 kf43 str FX KEY_F(43) - ----E F43 function key key_f44 kf44 str FY KEY_F(44) - ----E F44 function key key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key @@ -789,7 +789,7 @@ enter_doublewide_mode swidm str ZF - - ----- Enter double-wide mode #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. enter_draft_quality sdrfq str ZG - - ----- Enter draft-quality mode enter_italics_mode sitm str ZH - - ----- Enter italic mode enter_leftward_mode slm str ZI - - ----- Start leftward carriage motion @@ -845,7 +845,7 @@ zero_motion zerom str Zx - - ----- No motion for subsequent character #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -901,7 +901,7 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ diff --git a/contrib/ncurses/include/Caps.osf1r5 b/contrib/ncurses/include/Caps.osf1r5 index ece14aef2ea7..539f7a0b7b32 100644 --- a/contrib/ncurses/include/Caps.osf1r5 +++ b/contrib/ncurses/include/Caps.osf1r5 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2019-2023,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 2002-2015,2016 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -29,7 +29,7 @@ # # Author: Thomas Dickey # -# $Id: Caps.osf1r5,v 1.24 2024/04/20 21:05:02 tom Exp $ +# $Id: Caps.osf1r5,v 1.26 2025/11/12 01:27:41 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with OSF/1 version 5 (Tru64) terminfo. @@ -246,7 +246,7 @@ #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Boolean Capability Name TI TC Description #%_ @@ -294,7 +294,7 @@ semi_auto_right_margin sam bool YE - - ----- printing in last column causes cr #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -338,7 +338,7 @@ wide_char_size widcs num Yn - - ----- character step size when in double wide #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -407,7 +407,7 @@ key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key @@ -473,7 +473,7 @@ reset_2string rs2 str r2 - - -B--- reset string #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. reset_3string rs3 str r3 - - -B--- reset string reset_file rf str rf - - -B--- name of reset file restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor @@ -632,7 +632,7 @@ enter_doublewide_mode swidm str ZF - - ----- Enter double-wide mode #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. enter_draft_quality sdrfq str ZG - - ----- Enter draft-quality mode enter_italics_mode sitm str ZH - - ----- Enter italic mode enter_leftward_mode slm str ZI - - ----- Start leftward carriage motion @@ -682,7 +682,7 @@ key_f42 kf42 str FW KEY_F(42) - ----E F42 function key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_f43 kf43 str FX KEY_F(43) - ----E F43 function key key_f44 kf44 str FY KEY_F(44) - ----E F44 function key key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key @@ -724,7 +724,7 @@ key_save ksav str &6 KEY_SAVE 0571 ----- save key #%.TE #%.TS #%center; -#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +#%Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key diff --git a/contrib/ncurses/include/Caps.uwin b/contrib/ncurses/include/Caps.uwin index a41e9eca7a30..bef3af766690 100644 --- a/contrib/ncurses/include/Caps.uwin +++ b/contrib/ncurses/include/Caps.uwin @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2019-2023,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 2001-2015,2016 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -29,7 +29,7 @@ # # Author: Thomas Dickey # -# $Id: Caps.uwin,v 1.23 2024/04/20 21:05:02 tom Exp $ +# $Id: Caps.uwin,v 1.25 2025/11/12 01:06:36 Branden.Robinson Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with U/Win's terminfo. @@ -246,7 +246,7 @@ #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx. +#%Lbw(24n)2 Lbw(7n)2 Lb2 Lw(17n)x. #%\& Code \& #%Boolean Capability Name TI TC Description #%_ @@ -287,7 +287,7 @@ hue_lightness_saturation hls bool hl - - ----- terminal uses only HLS color nota #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx. +#%Lbw(24n)2 Lbw(7n)2 Lb2 Lw(17n)x. #%\& Code \& #%Numeric Capability Name TI TC Description #%_ @@ -304,7 +304,7 @@ label_height lh num lh - - ----- rows in each label label_width lw num lw - - ----- columns in each label buttons btns num BT - - ----- number of buttons on mouse #max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle -#maximum_windows wnum num MW - - ----- maximum number of defineable windows +#maximum_windows wnum num MW - - ----- maximum number of definable windows # These came in with SVr4's color support max_colors colors num Co - - ----- maximum number of colors on screen max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen @@ -316,7 +316,7 @@ no_color_video ncv num NC - - ----- video attributes that cannot be used with #%center; #%Lb Cb S Lb #%Lb Lb Lb Lb -#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx. +#%Lbw(24n)2 Lbw(7n)2 Lb2 Lw(17n)x. #%\& Code \& #%String Capability Name TI TC Description #%_ @@ -385,7 +385,7 @@ key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key #%.TE #%.TS #%center; -#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx. +#%Lbw(24n)2 Lbw(7n)2 Lb2 Lw(17n)x. key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key @@ -451,7 +451,7 @@ reset_2string rs2 str r2 - - -B--- reset string #%.TE #%.TS #%center; -#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx. +#%Lbw(24n)2 Lbw(7n)2 Lb2 Lw(17n)x. reset_3string rs3 str r3 - - -B--- reset string reset_file rf str rf - - -B--- name of reset file restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor @@ -521,7 +521,7 @@ key_undo kund str &8 KEY_UNDO 0630 ----- undo key #%.TE #%.TS #%center; -#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx. +#%Lbw(24n)2 Lbw(7n)2 Lb2 Lw(17n)x. key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key @@ -587,7 +587,7 @@ key_f42 kf42 str FW KEY_F(42) - ----E F42 function key #%.TE #%.TS #%center; -#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx. +#%Lbw(24n)2 Lbw(7n)2 Lb2 Lw(17n)x. key_f43 kf43 str FX KEY_F(43) - ----E F43 function key key_f44 kf44 str FY KEY_F(44) - ----E F44 function key key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key diff --git a/contrib/ncurses/include/MKkey_defs.sh b/contrib/ncurses/include/MKkey_defs.sh index e58ee2b65d79..309a59d525b6 100755 --- a/contrib/ncurses/include/MKkey_defs.sh +++ b/contrib/ncurses/include/MKkey_defs.sh @@ -1,7 +1,7 @@ #! /bin/sh -# $Id: MKkey_defs.sh,v 1.24 2024/01/19 12:26:17 tom Exp $ +# $Id: MKkey_defs.sh,v 1.25 2025/06/14 14:44:56 tom Exp $ ############################################################################## -# Copyright 2019-2022,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 2001-2013,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -110,8 +110,8 @@ function decode(keycode) { } BEGIN { - maxkey='$maxkey'; - pass='$pass'; + maxkey='"$maxkey"'; + pass='"$pass"'; key_max=1; bits=1; while (key_max < maxkey) { diff --git a/contrib/ncurses/include/MKterm.h.awk.in b/contrib/ncurses/include/MKterm.h.awk.in index a93d8e86e9c1..fc42dc094460 100644 --- a/contrib/ncurses/include/MKterm.h.awk.in +++ b/contrib/ncurses/include/MKterm.h.awk.in @@ -26,7 +26,7 @@ BEGIN { lcurl = "{"; rcurl = "}"; print "/****************************************************************************" - print " * Copyright 2018-2021,2023 Thomas E. Dickey *" + print " * Copyright 2018-2024,2025 Thomas E. Dickey *" print " * Copyright 1998-2013,2017 Free Software Foundation, Inc. *" print " * *" print " * Permission is hereby granted, free of charge, to any person obtaining a *" @@ -60,7 +60,7 @@ BEGIN { print "/* and: Thomas E. Dickey 1995-on */" print "/****************************************************************************/" print "" - print "/* $Id: MKterm.h.awk.in,v 1.85 2023/04/23 19:15:36 tom Exp $ */" + print "/* $Id: MKterm.h.awk.in,v 1.94 2025/12/26 23:33:14 tom Exp $ */" print "" print "/*" print "** term.h -- Definition of struct term" @@ -86,6 +86,7 @@ BEGIN { print "" print "typedef struct screen SCREEN;" print "" + print "/* configured with --enable-sp-funcs? */" print "#if @NCURSES_SP_FUNCS@" print "#undef NCURSES_SP_FUNCS" print "#define NCURSES_SP_FUNCS @NCURSES_PATCH@" @@ -115,65 +116,62 @@ BEGIN { print "#undef NCURSES_XNAMES" print "#define NCURSES_XNAMES @NCURSES_XNAMES@" print "" - print "/* We will use these symbols to hide differences between" + print "/* TTY, SET_TTY and GET_TTY are used internally */" + print "#ifdef NCURSES_INTERNALS" + print "" + print "/* We use these symbols to hide differences between" print " * termios/termio/sgttyb interfaces." print " */" print "#undef TTY" print "#undef SET_TTY" print "#undef GET_TTY" print "" - print "/* Assume POSIX termio if we have the header and function */" - print "/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */" - print "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@" + print "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@ /* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */" print "" print "#undef TERMIOS" print "#define TERMIOS 1" - print "" print "#include <termios.h>" print "#define TTY struct termios" print "" - print "#else /* !HAVE_TERMIOS_H */" - print "" - print "/* #if HAVE_TERMIO_H */" - print "#if @HAVE_TERMIO_H@" + print "#elif @HAVE_TERMIO_H@ /* HAVE_TERMIO_H */" print "" print "#undef TERMIOS" print "#define TERMIOS 1" - print "" print "#include <termio.h>" print "#define TTY struct termio" print "" - print "#else /* !HAVE_TERMIO_H */" + print "#elif (defined(_WIN32) || defined(_WIN64) || defined(__MINGW32__) || defined(__MINGW64__))" + print "" + print "#include <nc_win32.h>" + print "#define TTY ConsoleMode" + print "" + print "#elif @HAVE_SGTTY_H@ /* HAVE_SGTTY_H */" print "" - print "#if (defined(_WIN32) || defined(_WIN64))" - print "#if @EXP_WIN32_DRIVER@" - print "#include <win32_curses.h>" - print "#define TTY struct winconmode" - print "#else" - print "#include <ncurses_mingw.h>" - print "#define TTY struct termios" - print "#endif" - print "#else" print "#undef TERMIOS" print "#include <sgtty.h>" print "#include <sys/ioctl.h>" print "#define TTY struct sgttyb" - print "#endif /* MINGW32 */" - print "#endif /* HAVE_TERMIO_H */" + print "" + print "#else" + print "" + print "#error no termio/termios/sgtty found" print "" print "#endif /* HAVE_TERMIOS_H */" print "" print "#ifdef TERMIOS" print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)" print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)" - print "#elif @EXP_WIN32_DRIVER@ && (defined(_WIN32) || defined(_WIN64))" + print "/* configured with --enable-exp-win32? */" + print "#elif defined(_WIN32) || defined(_WIN64)" print "#define GET_TTY(fd, buf) _nc_console_getmode(_nc_console_fd2handle(fd),buf)" print "#define SET_TTY(fd, buf) _nc_console_setmode(_nc_console_fd2handle(fd),buf)" - print "#else" + print "#elif @HAVE_SGTTY_H@ /* HAVE_SGTTY_H */" print "#define GET_TTY(fd, buf) gtty(fd, buf)" print "#define SET_TTY(fd, buf) stty(fd, buf)" print "#endif" print "" + print "#endif /* NCURSES_INTERNALS */" + print "" print "#ifndef GCC_NORETURN" print "#define GCC_NORETURN /* nothing */" print "#endif" @@ -255,6 +253,7 @@ END { print "TERMINAL;" print "" if (@NCURSES_EXT_COLORS@) { + print "/* configured with --enable-ext-colors */" declare_termtype("int","2"); } else { print "#undef TERMTYPE2" @@ -268,9 +267,10 @@ END { print "" print "#endif /* NCURSES_INTERNALS */" print "" - print "" + print "/* configured with --enable-broken_linker and reentrancy disabled */" print "#if @BROKEN_LINKER@ && !@cf_cv_enable_reentrant@" print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" + print "/* reentrancy enabled */" print "#elif @cf_cv_enable_reentrant@" print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);" print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())" @@ -278,6 +278,7 @@ END { print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" print "#endif" print "" + print "/* configured with --enable-broken_linker or reentrancy enabled */" print "#if @BROKEN_LINKER@ || @cf_cv_enable_reentrant@" print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);" print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);" @@ -348,6 +349,7 @@ END { print "extern NCURSES_EXPORT(int) tigetflag (const char *);" print "extern NCURSES_EXPORT(int) tigetnum (const char *);" print "" + print "/* configured without --disable-tparm-varargs? */" print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */" print "extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */" print "#else" @@ -380,6 +382,7 @@ END { print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, const char *);" print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, const char *);" print "" + print "/* configured without --disable-tparm-varargs? */" print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */" print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, ...); /* special */" print "#else" diff --git a/contrib/ncurses/include/Makefile.in b/contrib/ncurses/include/Makefile.in index 351383b0ebc9..fc45d0811245 100644 --- a/contrib/ncurses/include/Makefile.in +++ b/contrib/ncurses/include/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.53 2021/07/03 18:56:51 tom Exp $ +# $Id: Makefile.in,v 1.56 2025/10/18 13:33:46 tom Exp $ ############################################################################## -# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 1998-2013,2015 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -44,14 +44,14 @@ SHELL = @SHELL@ VPATH = @srcdir@ THIS = Makefile -DESTDIR = @DESTDIR@ +@SET_DESTDIR@ srcdir = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ includedir = @includedir@ includesubdir = @includesubdir@ -INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) +INCLUDEDIR = $(DESTDIR)$(includedir@MERGE_PREFIX@)$(includesubdir) INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -78,6 +78,7 @@ CAPLIST = $(TERMINFO_CAPS) \ CONFIG_SRC = \ MKterm.h.awk \ curses.head \ + nc_win32.h \ ncurses_dll.h \ termcap.h \ unctrl.h diff --git a/contrib/ncurses/include/capdefaults.c b/contrib/ncurses/include/capdefaults.c index 0bdda14dee2d..2405b89a3751 100644 --- a/contrib/ncurses/include/capdefaults.c +++ b/contrib/ncurses/include/capdefaults.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2000,2008 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ * and: Thomas E. Dickey 1996-on * ****************************************************************************/ -/* $Id: capdefaults.c,v 1.16 2021/09/04 10:52:55 tom Exp $ */ +/* $Id: capdefaults.c,v 1.17 2024/07/27 19:19:23 tom Exp $ */ /* * Compute obsolete capabilities. The reason this is an include file is @@ -45,7 +45,7 @@ * postprocess_termcap(). */ { - char *strp; + const char *strp; short capval; #define EXTRACT_DELAY(str) \ diff --git a/contrib/ncurses/include/curses.h.in b/contrib/ncurses/include/curses.h.in index 8cfa0b9ff8d6..0541e35a78e1 100644 --- a/contrib/ncurses/include/curses.h.in +++ b/contrib/ncurses/include/curses.h.in @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2023,2024 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ * and: Thomas E. Dickey 1996-on * ****************************************************************************/ -/* $Id: curses.h.in,v 1.282 2024/01/19 11:50:07 tom Exp $ */ +/* $Id: curses.h.in,v 1.299 2025/08/08 23:19:21 tom Exp $ */ #ifndef __NCURSES_H #define __NCURSES_H @@ -109,7 +109,7 @@ * User-definable tweak to disable the include of <stdbool.h>. */ #ifndef NCURSES_ENABLE_STDBOOL_H -#define NCURSES_ENABLE_STDBOOL_H @cf_cv_header_stdbool_h@ +#define NCURSES_ENABLE_STDBOOL_H @USE_STDBOOL_H@ #endif /* @@ -125,10 +125,10 @@ * doing so makes it incompatible with other implementations of X/Open Curses. */ #undef NCURSES_CONST -#define NCURSES_CONST @NCURSES_CONST@ +#define NCURSES_CONST @NCURSES_CONST@ /* for old compilers */ #undef NCURSES_INLINE -#define NCURSES_INLINE @NCURSES_INLINE@ +#define NCURSES_INLINE @NCURSES_INLINE@ /* for old compilers */ /* * The standard type used for color values, and for color-pairs. The latter @@ -175,14 +175,14 @@ * KEY_RESIZE is an extended feature that relies upon the SIGWINCH handler * in ncurses. */ -#if @NCURSES_EXT_FUNCS@ +#if @NCURSES_EXT_FUNCS@ /* NCURSES_EXT_FUNCS */ #ifndef NCURSES_SIGWINCH #define NCURSES_SIGWINCH @cf_cv_enable_sigwinch@ #endif #else #undef NCURSES_SIGWINCH #define NCURSES_SIGWINCH 0 -#endif +#endif /* NCURSES_EXT_FUNCS */ /* * In certain environments, we must work around linker problems for data @@ -232,12 +232,12 @@ #undef NCURSES_CH_T #define NCURSES_CH_T @NCURSES_CH_T@ -#if @cf_cv_enable_lp64@ && defined(_LP64) +#if @cf_cv_enable_lp64@ /* cf_cv_enable_lp64 */ && defined(_LP64) typedef unsigned chtype; typedef unsigned mmask_t; #else -typedef @cf_cv_typeof_chtype@ chtype; -typedef @cf_cv_typeof_mmask_t@ mmask_t; +typedef @cf_cv_typeof_chtype@ chtype; /* cf_cv_typeof_chtype */ +typedef @cf_cv_typeof_mmask_t@ mmask_t; /* cf_cv_typeof_mmask_t */ #endif /* @@ -296,7 +296,7 @@ typedef @cf_cv_type_of_bool@ NCURSES_BOOL; #include <stdbool.h> /* use whatever the C compiler decides bool really is */ #define NCURSES_BOOL bool -#else +#elif !defined(__cplusplus) && !@USE_BUILTIN_BOOL@ /* USE_BUILTIN_BOOL */ /* there is no predefined bool - use our own */ #undef bool #define bool NCURSES_BOOL @@ -311,7 +311,7 @@ extern "C" { #define NCURSES_CAST(type,value) (type)(value) #endif -#define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p))) +#define NCURSES_OK_ADDR(p) (NULL != NCURSES_CAST(const void *, (p))) /* * X/Open attributes. In the ncurses implementation, they are identical to the @@ -335,7 +335,7 @@ extern "C" { #define WA_TOP A_TOP #define WA_VERTICAL A_VERTICAL -#if @NCURSES_EXT_FUNCS@ +#if @NCURSES_EXT_FUNCS@ /* NCURSES_EXT_FUNCS */ #define WA_ITALIC A_ITALIC /* ncurses extension */ #endif @@ -351,7 +351,7 @@ extern "C" { /* line graphics */ -#if @BROKEN_LINKER@ || NCURSES_REENTRANT +#if @BROKEN_LINKER@ /* BROKEN_LINKER */ || NCURSES_REENTRANT NCURSES_WRAPPED_VAR(chtype*, acs_map); #define acs_map NCURSES_PUBLIC_VAR(acs_map()) #else @@ -459,22 +459,22 @@ typedef chtype attr_t; /* ...must be at least as wide as chtype */ #if NCURSES_WIDECHAR -#if @NCURSES_LIBUTF8@ +#if @NCURSES_LIBUTF8@ /* NCURSES_LIBUTF8 */ #ifdef mblen /* libutf8.h defines it w/o undefining first */ #undef mblen #endif #include <libutf8.h> #endif -#if @NEED_WCHAR_H@ +#if @NEED_WCHAR_H@ /* NEED_WCHAR_H */ #include <wchar.h> /* ...to get mbstate_t, etc. */ #endif -#if @NCURSES_WCHAR_T@ +#if @NCURSES_WCHAR_T@ /* NCURSES_WCHAR_T */ typedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@; #endif -#if @NCURSES_WINT_T@ +#if @NCURSES_WINT_T@ /* NCURSES_WINT_T */ typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@; #endif @@ -484,16 +484,19 @@ typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@; * (spacing and nonspacing) do not fill the array, a null L'\0' follows. * Otherwise, a null is assumed to follow when extracting via getcchar(). */ -#define CCHARW_MAX @NCURSES_CCHARW_MAX@ +#define CCHARW_MAX @NCURSES_CCHARW_MAX@ /* NCURSES_CCHARW_MAX */ typedef struct { attr_t attr; wchar_t chars[CCHARW_MAX]; -#if @NCURSES_EXT_COLORS@ +#if @NCURSES_EXT_COLORS@ /* NCURSES_EXT_COLORS */ #undef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS @NCURSES_PATCH@ +#define NCURSES_EXT_COLORS @NCURSES_PATCH@ /* NCURSES_PATCH */ int ext_color; /* color pair, must be more than 16-bits */ +#if @NCURSES_RGB_COLORS@ /* NCURSES_RGB_COLORS */ + int rgb_color; /* extra data for direct-color (rgb) */ #endif +#endif /* NCURSES_EXT_COLORS */ } cchar_t; @@ -549,9 +552,9 @@ struct _win_st NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ -#if NCURSES_WIDECHAR +#if NCURSES_WIDECHAR /* NCURSES_WIDECHAR */ cchar_t _bkgrnd; /* current background char/attribute pair */ -#if @NCURSES_EXT_COLORS@ +#if @NCURSES_EXT_COLORS@ /* NCURSES_EXT_COLORS */ int _color; /* current color-pair for non-space character */ #endif #endif @@ -833,7 +836,7 @@ extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */ extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_printw) /* implemented */ GCC_PRINTFLIKE(2,0); extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *, va_list) /* implemented */ - GCC_PRINTFLIKE(2,0); + GCC_PRINTFLIKE(2,0); extern NCURSES_EXPORT(int) vwscanw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_scanw) /* implemented */ GCC_SCANFLIKE(2,0); extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, const char *, va_list) /* implemented */ @@ -936,9 +939,9 @@ extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ /* * These functions are extensions - not in X/Open Curses. */ -#if @NCURSES_EXT_FUNCS@ +#if @NCURSES_EXT_FUNCS@ /* NCURSES_EXT_FUNCS */ #undef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS @NCURSES_PATCH@ +#define NCURSES_EXT_FUNCS @NCURSES_PATCH@ /* NCURSES_PATCH */ typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); extern NCURSES_EXPORT(int) alloc_pair (int, int); @@ -973,9 +976,9 @@ extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *); extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *); extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int); -#if @NCURSES_XNAMES@ +#if @NCURSES_XNAMES@ /* NCURSES_XNAMES */ #undef NCURSES_XNAMES -#define NCURSES_XNAMES @NCURSES_XNAMES@ +#define NCURSES_XNAMES @NCURSES_XNAMES@ /* NCURSES_XNAMES */ extern NCURSES_EXPORT(int) use_extended_names (bool); #endif @@ -999,17 +1002,17 @@ extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* @GENERATED_EXT_FUNCS extern NCURSES_EXPORT(int) wgetdelay (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* @GENERATED_EXT_FUNCS@ */ -#else +#else /* !NCURSES_EXT_FUNCS */ #define curses_version() NCURSES_VERSION -#endif +#endif /* NCURSES_EXT_FUNCS */ /* * Extra extension-functions, which pass a SCREEN pointer rather than using * a global variable SP. */ -#if @NCURSES_SP_FUNCS@ +#if @NCURSES_SP_FUNCS@ /* NCURSES_SP_FUNCS */ #undef NCURSES_SP_FUNCS -#define NCURSES_SP_FUNCS @NCURSES_PATCH@ +#define NCURSES_SP_FUNCS @NCURSES_PATCH@ /* NCURSES_PATCH */ #define NCURSES_SP_NAME(name) name##_sp /* Define the sp-funcs helper function */ @@ -1091,7 +1094,7 @@ extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (SCREEN*, bool); /* impleme extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_tioctl) (SCREEN*, bool); /* implemented:SP_FUNC */ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype); /* implemented:SP_FUNC */ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */ -#if @NCURSES_EXT_FUNCS@ +#if @NCURSES_EXT_FUNCS@ /* NCURSES_EXT_FUNCS */ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int); /* implemented:EXT_SP_FUNC */ @@ -1119,13 +1122,13 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* impl extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_tabsize) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_default_colors) (SCREEN*); /* implemented:EXT_SP_FUNC */ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ -#endif -#else +#endif /* NCURSES_EXT_FUNCS */ +#else /* !NCURSES_SP_FUNCS */ #undef NCURSES_SP_FUNCS #define NCURSES_SP_FUNCS 0 #define NCURSES_SP_NAME(name) name #define NCURSES_SP_OUTC NCURSES_OUTC -#endif +#endif /* NCURSES_SP_FUNCS */ /* attributes */ @@ -1143,8 +1146,12 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* #define A_DIM NCURSES_BITS(@cf_cv_1UL@,12) #define A_BOLD NCURSES_BITS(@cf_cv_1UL@,13) #define A_ALTCHARSET NCURSES_BITS(@cf_cv_1UL@,14) + +/* SVr4 curses marks these as "subject to change" */ #define A_INVIS NCURSES_BITS(@cf_cv_1UL@,15) #define A_PROTECT NCURSES_BITS(@cf_cv_1UL@,16) + +/* X/Open features not found in SVr4 curses */ #define A_HORIZONTAL NCURSES_BITS(@cf_cv_1UL@,17) #define A_LEFT NCURSES_BITS(@cf_cv_1UL@,18) #define A_LOW NCURSES_BITS(@cf_cv_1UL@,19) @@ -1152,9 +1159,14 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* #define A_TOP NCURSES_BITS(@cf_cv_1UL@,21) #define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22) -#if @NCURSES_EXT_FUNCS@ +#if @NCURSES_EXT_FUNCS@ /* NCURSES_EXT_FUNCS */ #define A_ITALIC NCURSES_BITS(@cf_cv_1UL@,23) /* ncurses extension */ -#endif +#if @NCURSES_RGB_COLORS@ /* NCURSES_RGB_COLORS */ +#define A_FOREGROUND NCURSES_BITS(@cf_cv_1UL@,17) /* ncurses extension */ +#define A_BACKGROUND NCURSES_BITS(@cf_cv_1UL@,18) /* ncurses extension */ +#define A_DIRECT (A_FOREGROUND|A_BACKGROUND) +#endif /* NCURSES_RGB_COLORS */ +#endif /* NCURSES_EXT_FUNCS */ /* * Most of the pseudo functions are macros that either provide compatibility @@ -1228,7 +1240,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* #if !NCURSES_OPAQUE #if NCURSES_WATTR_MACROS -#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@ +#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@ /* NCURSES_EXT_COLORS */ #define wattrset(win,at) \ (NCURSES_OK_ADDR(win) \ ? ((win)->_color = NCURSES_CAST(int, PAIR_NUMBER(at)), \ @@ -1380,7 +1392,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* #if !NCURSES_OPAQUE #if NCURSES_WATTR_MACROS -#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@ +#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@ /* NCURSES_EXT_COLORS */ #define wattr_set(win,a,p,opts) \ (NCURSES_OK_ADDR(win) \ ? ((void)((win)->_attrs = ((a) & ~A_COLOR), \ @@ -1400,7 +1412,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* : OK), \ OK) \ : ERR) -#else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */ +#else /* !(NCURSES_WIDECHAR && NCURSES_EXT_COLORS) */ #define wattr_set(win,a,p,opts) \ (NCURSES_OK_ADDR(win) \ ? ((void)((win)->_attrs = (((a) & ~A_COLOR) | \ @@ -1417,7 +1429,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* : OK), \ OK) \ : ERR) -#endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */ +#endif /* (NCURSES_WIDECHAR && NCURSES_EXT_COLORS) */ #endif /* NCURSES_WATTR_MACROS */ #endif /* NCURSES_OPAQUE */ @@ -1433,15 +1445,15 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* /* * Export fallback function for use in C++ binding. */ -#if !@HAVE_VSSCANF@ +#if !@HAVE_VSSCANF@ /* HAVE_VSSCANF */ #define vsscanf(a,b,c) _nc_vsscanf(a,b,c) -NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); +extern NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); #endif /* * These macros are extensions - not in X/Open Curses. */ -#if @NCURSES_EXT_FUNCS@ +#if @NCURSES_EXT_FUNCS@ /* NCURSES_EXT_FUNCS */ #if !NCURSES_OPAQUE #define is_cleared(win) (NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE) #define is_idcok(win) (NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE) @@ -1459,7 +1471,7 @@ NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); #define wgetparent(win) (NCURSES_OK_ADDR(win) ? (win)->_parent : 0) #define wgetscrreg(win,t,b) (NCURSES_OK_ADDR(win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR) #endif -#endif +#endif /* NCURSES_EXT_FUNCS */ /* * X/Open says this returns a bool; SVr4 also checked for out-of-range line. diff --git a/contrib/ncurses/include/curses.tail b/contrib/ncurses/include/curses.tail index 9c9135656048..c1347a9dc051 100644 --- a/contrib/ncurses/include/curses.tail +++ b/contrib/ncurses/include/curses.tail @@ -1,4 +1,4 @@ -/* $Id: curses.tail,v 1.27 2023/08/05 19:43:46 tom Exp $ */ +/* $Id: curses.tail,v 1.29 2025/07/26 15:32:01 tom Exp $ */ /* * vile:cmode: * This file is part of ncurses, designed to be appended after curses.h.in @@ -8,9 +8,9 @@ /* mouse interface */ #if NCURSES_MOUSE_VERSION > 1 -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5)) +#define NCURSES_MOUSE_MASK(b,m) ((mmask_t)(m) << (((b) - 1) * 5)) #else -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6)) +#define NCURSES_MOUSE_MASK(b,m) ((mmask_t)(m) << (((b) - 1) * 6)) #endif #define NCURSES_BUTTON_RELEASED 001UL @@ -62,7 +62,51 @@ #define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L) #define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L) -#else +/* + * If mmask_T is 64-bits, we can define another 6 button stanzas, for a total + * of 11, which happens to be the maximum number supported in the X11 protocol. + */ +#if NCURSES_MOUSE_VERSION > 2 + +#define BUTTON6_RELEASED NCURSES_MOUSE_MASK(6, NCURSES_BUTTON_RELEASED) +#define BUTTON6_PRESSED NCURSES_MOUSE_MASK(6, NCURSES_BUTTON_PRESSED) +#define BUTTON6_CLICKED NCURSES_MOUSE_MASK(6, NCURSES_BUTTON_CLICKED) +#define BUTTON6_DOUBLE_CLICKED NCURSES_MOUSE_MASK(6, NCURSES_DOUBLE_CLICKED) +#define BUTTON6_TRIPLE_CLICKED NCURSES_MOUSE_MASK(6, NCURSES_TRIPLE_CLICKED) + +#define BUTTON7_RELEASED NCURSES_MOUSE_MASK(7, NCURSES_BUTTON_RELEASED) +#define BUTTON7_PRESSED NCURSES_MOUSE_MASK(7, NCURSES_BUTTON_PRESSED) +#define BUTTON7_CLICKED NCURSES_MOUSE_MASK(7, NCURSES_BUTTON_CLICKED) +#define BUTTON7_DOUBLE_CLICKED NCURSES_MOUSE_MASK(7, NCURSES_DOUBLE_CLICKED) +#define BUTTON7_TRIPLE_CLICKED NCURSES_MOUSE_MASK(7, NCURSES_TRIPLE_CLICKED) + +#define BUTTON8_RELEASED NCURSES_MOUSE_MASK(8, NCURSES_BUTTON_RELEASED) +#define BUTTON8_PRESSED NCURSES_MOUSE_MASK(8, NCURSES_BUTTON_PRESSED) +#define BUTTON8_CLICKED NCURSES_MOUSE_MASK(8, NCURSES_BUTTON_CLICKED) +#define BUTTON8_DOUBLE_CLICKED NCURSES_MOUSE_MASK(8, NCURSES_DOUBLE_CLICKED) +#define BUTTON8_TRIPLE_CLICKED NCURSES_MOUSE_MASK(8, NCURSES_TRIPLE_CLICKED) + +#define BUTTON9_RELEASED NCURSES_MOUSE_MASK(9, NCURSES_BUTTON_RELEASED) +#define BUTTON9_PRESSED NCURSES_MOUSE_MASK(9, NCURSES_BUTTON_PRESSED) +#define BUTTON9_CLICKED NCURSES_MOUSE_MASK(9, NCURSES_BUTTON_CLICKED) +#define BUTTON9_DOUBLE_CLICKED NCURSES_MOUSE_MASK(9, NCURSES_DOUBLE_CLICKED) +#define BUTTON9_TRIPLE_CLICKED NCURSES_MOUSE_MASK(9, NCURSES_TRIPLE_CLICKED) + +#define BUTTON10_RELEASED NCURSES_MOUSE_MASK(10, NCURSES_BUTTON_RELEASED) +#define BUTTON10_PRESSED NCURSES_MOUSE_MASK(10, NCURSES_BUTTON_PRESSED) +#define BUTTON10_CLICKED NCURSES_MOUSE_MASK(10, NCURSES_BUTTON_CLICKED) +#define BUTTON10_DOUBLE_CLICKED NCURSES_MOUSE_MASK(10, NCURSES_DOUBLE_CLICKED) +#define BUTTON10_TRIPLE_CLICKED NCURSES_MOUSE_MASK(10, NCURSES_TRIPLE_CLICKED) + +#define BUTTON11_RELEASED NCURSES_MOUSE_MASK(11, NCURSES_BUTTON_RELEASED) +#define BUTTON11_PRESSED NCURSES_MOUSE_MASK(11, NCURSES_BUTTON_PRESSED) +#define BUTTON11_CLICKED NCURSES_MOUSE_MASK(11, NCURSES_BUTTON_CLICKED) +#define BUTTON11_DOUBLE_CLICKED NCURSES_MOUSE_MASK(11, NCURSES_DOUBLE_CLICKED) +#define BUTTON11_TRIPLE_CLICKED NCURSES_MOUSE_MASK(11, NCURSES_TRIPLE_CLICKED) + +#endif + +#else /* NCURSES_MOUSE_VERSION == 1 */ #define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT) #define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT) @@ -74,7 +118,7 @@ #define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L) #define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L) -#endif +#endif /* NCURSES_MOUSE_VERSION >= 1 */ #define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1) diff --git a/contrib/ncurses/include/curses.wide b/contrib/ncurses/include/curses.wide index 33adb070d7b1..1e0f197ec6fd 100644 --- a/contrib/ncurses/include/curses.wide +++ b/contrib/ncurses/include/curses.wide @@ -1,4 +1,4 @@ -/* $Id: curses.wide,v 1.51 2021/05/22 20:28:29 tom Exp $ */ +/* $Id: curses.wide,v 1.53 2025/01/18 21:08:32 Branden.Robinson Exp $ */ /* * vile:cmode: * This file is part of ncurses, designed to be appended after curses.h.in @@ -213,7 +213,7 @@ extern NCURSES_EXPORT(int) winnwstr (WINDOW *, wchar_t *, int); /* implemented extern NCURSES_EXPORT(int) wins_nwstr (WINDOW *, const wchar_t *, int); /* implemented */ extern NCURSES_EXPORT(int) wins_wch (WINDOW *, const cchar_t *); /* implemented */ extern NCURSES_EXPORT(int) wins_wstr (WINDOW *, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *); /* generated:WIDEC */ extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *); /* implemented */ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */ @@ -240,7 +240,7 @@ extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *); / #define bkgrnd(c) wbkgrnd(stdscr,(c)) #define bkgrndset(c) wbkgrndset(stdscr,(c)) #define border_set(l,r,t,b,tl,tr,bl,br) wborder_set(stdscr,(l),(r),(t),(b),tl,tr,bl,br) -#define box_set(w,v,h) wborder_set((w),(v),(v),(h),(h),0,0,0,0) +#define box_set(w,v,h) wborder_set((w),(v),(v),(h),(h),NULL,NULL,NULL,NULL) #define echo_wchar(c) wecho_wchar(stdscr,(c)) #define get_wch(c) wget_wch(stdscr,(c)) #define get_wstr(t) wget_wstr(stdscr,(t)) @@ -261,6 +261,7 @@ extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *); / #define wget_wstr(w,t) wgetn_wstr((w),(t),-1) #define win_wchstr(w,c) win_wchnstr((w),(c),-1) #define wins_wstr(w,t) wins_nwstr((w),(t),-1) +#define winwstr(w,c) winnwstr((w),(c),-1) #if !NCURSES_OPAQUE #define wgetbkgrnd(win,wch) (NCURSES_OK_ADDR(wch) ? ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK) : ERR) diff --git a/contrib/ncurses/include/headers b/contrib/ncurses/include/headers index e1293b28a549..8a871ee3de36 100644 --- a/contrib/ncurses/include/headers +++ b/contrib/ncurses/include/headers @@ -1,6 +1,6 @@ -# $Id: headers,v 1.16 2023/04/22 12:09:09 tom Exp $ +# $Id: headers,v 1.22 2025/12/26 23:33:03 tom Exp $ ############################################################################## -# Copyright 2020,2023 Thomas E. Dickey # +# Copyright 2020-2023,2025 Thomas E. Dickey # # Copyright 1998-2012,2013 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -45,9 +45,8 @@ $(srcdir)/term_entry.h # Porting @ port_win32con -$(srcdir)/ncurses_mingw.h -$(srcdir)/nc_mingw.h +nc_win32.h @ port_win32 -$(srcdir)/win32_curses.h +nc_win32.h # vile:makemode diff --git a/contrib/ncurses/include/nc_alloc.h b/contrib/ncurses/include/nc_alloc.h index cfea2beb6daf..1fd54095e19c 100644 --- a/contrib/ncurses/include/nc_alloc.h +++ b/contrib/ncurses/include/nc_alloc.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2019-2021,2025 Thomas E. Dickey * * Copyright 1998-2013,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -30,7 +30,7 @@ /**************************************************************************** * Author: Thomas E. Dickey 1996-on * ****************************************************************************/ -/* $Id: nc_alloc.h,v 1.30 2021/11/20 23:33:38 tom Exp $ */ +/* $Id: nc_alloc.h,v 1.36 2025/03/01 15:02:06 tom Exp $ */ #ifndef NC_ALLOC_included #define NC_ALLOC_included 1 @@ -118,6 +118,27 @@ extern NCURSES_EXPORT(void) _nc_leaks_tinfo(void); #define typeCalloc(type,elts) (type *)calloc((size_t)(elts),sizeof(type)) #define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (size_t)(elts)*sizeof(type)) +/* provide for using VLAs if supported, otherwise assume alloca() */ + +#ifndef __STDC_VERSION__ +#define __STDC_VERSION__ 0 +#endif + +#ifndef __STDC_NO_VLA__ +#define __STDC_NO_VLA__ 1 +#endif + +#if __STDC_VERSION__ >= 19901L && (__STDC_VERSION__ < 201000L || !__STDC_NO_VLA__) +#define MakeArray(name,type,count) type name[count] +#else +#if HAVE_ALLOCA_H +#include <alloca.h> +#elif HAVE_MALLOC_H +#include <malloc.h> +#endif +#define MakeArray(name,type,count) type *name = (type*) alloca(sizeof(type) * (size_t) (count)) +#endif + #ifdef __cplusplus } #endif diff --git a/contrib/ncurses/include/nc_termios.h b/contrib/ncurses/include/nc_termios.h index 13cc0af7ab53..69bda0f26f65 100644 --- a/contrib/ncurses/include/nc_termios.h +++ b/contrib/ncurses/include/nc_termios.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2018-2020,2025 Thomas E. Dickey * * Copyright 2011-2014,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -31,7 +31,7 @@ * Author: Thomas E. Dickey 2011 * ****************************************************************************/ -/* $Id: nc_termios.h,v 1.8 2020/08/29 20:53:19 tom Exp $ */ +/* $Id: nc_termios.h,v 1.10 2025/10/18 17:53:13 tom Exp $ */ #ifndef NC_TERMIOS_included #define NC_TERMIOS_included 1 @@ -70,97 +70,14 @@ #define tcflush(fd, arg) ioctl(fd, TCFLSH, arg) #endif -#if defined(EXP_WIN32_DRIVER) +#if defined(_WIN32) #undef TERMIOS #endif #else /* !HAVE_TERMIO_H */ -#if defined(_WIN32) && !defined(EXP_WIN32_DRIVER) - -/* lflag bits */ -#define ISIG 0x0001 -#define ICANON 0x0002 -#define ECHO 0x0004 -#define ECHOE 0x0008 -#define ECHOK 0x0010 -#define ECHONL 0x0020 -#define NOFLSH 0x0040 -#define IEXTEN 0x0100 - -#define VEOF 4 -#define VERASE 5 -#define VINTR 6 -#define VKILL 7 -#define VMIN 9 -#define VQUIT 10 -#define VTIME 16 - -/* iflag bits */ -#define IGNBRK 0x00001 -#define BRKINT 0x00002 -#define IGNPAR 0x00004 -#define INPCK 0x00010 -#define ISTRIP 0x00020 -#define INLCR 0x00040 -#define IGNCR 0x00080 -#define ICRNL 0x00100 -#define IXON 0x00400 -#define IXOFF 0x01000 -#define PARMRK 0x10000 - -/* oflag bits */ -#define OPOST 0x00001 - -/* cflag bits */ -#define CBAUD 0x0100f -#define B0 0x00000 -#define B50 0x00001 -#define B75 0x00002 -#define B110 0x00003 -#define B134 0x00004 -#define B150 0x00005 -#define B200 0x00006 -#define B300 0x00007 -#define B600 0x00008 -#define B1200 0x00009 -#define B1800 0x0000a -#define B2400 0x0000b -#define B4800 0x0000c -#define B9600 0x0000d - -#define CSIZE 0x00030 -#define CS8 0x00030 -#define CSTOPB 0x00040 -#define CREAD 0x00080 -#define PARENB 0x00100 -#define PARODD 0x00200 -#define HUPCL 0x00400 -#define CLOCAL 0x00800 - -#define TCIFLUSH 0 -#define TCSADRAIN 3 - -#ifndef cfgetospeed -#define cfgetospeed(t) ((t)->c_cflag & CBAUD) -#endif - -#ifndef tcsetattr -#define tcsetattr(fd, opt, arg) _nc_mingw_tcsetattr(fd, opt, arg) -#endif - -#ifndef tcgetattr -#define tcgetattr(fd, arg) _nc_mingw_tcgetattr(fd, arg) -#endif - -#ifndef tcflush -#define tcflush(fd, queue) _nc_mingw_tcflush(fd, queue) -#endif - -#undef ttyname -#define ttyname(fd) NULL +#undef TERMIOS -#endif /* _WIN32 */ #endif /* HAVE_TERMIO_H */ #endif /* HAVE_TERMIOS_H */ diff --git a/contrib/ncurses/include/nc_tparm.h b/contrib/ncurses/include/nc_tparm.h index 78170993fa17..12fb422ecb9d 100644 --- a/contrib/ncurses/include/nc_tparm.h +++ b/contrib/ncurses/include/nc_tparm.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2023 Thomas E. Dickey * + * Copyright 2018-2023,2025 Thomas E. Dickey * * Copyright 2006-2012,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -31,7 +31,7 @@ * Author: Thomas E. Dickey 2006 * ****************************************************************************/ -/* $Id: nc_tparm.h,v 1.12 2023/04/16 17:57:28 tom Exp $ */ +/* $Id: nc_tparm.h,v 1.13 2025/01/04 23:42:30 tom Exp $ */ #ifndef NC_TPARM_included #define NC_TPARM_included 1 @@ -88,6 +88,7 @@ #define TIPARM_7(s,a,b,c,d,e,f,g) _nc_tiparm(7,s,a,b,c,d,e,f,g) #define TIPARM_8(s,a,b,c,d,e,f,g,h) _nc_tiparm(8,s,a,b,c,d,e,f,g,h) #define TIPARM_9(s,a,b,c,d,e,f,g,h,i) _nc_tiparm(9,s,a,b,c,d,e,f,g,h,i) +#define TIPARM_N(N,s,a,b,c,d,e,f,g,h,i) _nc_tiparm(N,s,a,b,c,d,e,f,g,h,i) #endif #endif /* NC_TPARM_included */ diff --git a/contrib/ncurses/include/nc_win32.h b/contrib/ncurses/include/nc_win32.h.in index e67b8e045506..271e40aa33ee 100644 --- a/contrib/ncurses/include/nc_win32.h +++ b/contrib/ncurses/include/nc_win32.h.in @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2023 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 2008-2010,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -31,23 +31,27 @@ * Author: Thomas Dickey, 2008-on * ****************************************************************************/ -/* $Id: nc_win32.h,v 1.10 2023/02/25 20:09:23 tom Exp $ */ +/* $Id: nc_win32.h.in,v 1.19 2025/12/26 23:32:43 tom Exp $ */ #ifndef NC_WIN32_H #define NC_WIN32_H 1 -#if defined(_WIN32) || defined(_WIN64) +#include <ncurses_cfg.h> -#ifndef _NC_WINDOWS -#define _NC_WINDOWS +#if defined(_WIN32) || defined(_WIN64) || defined(USE_WIN32CON_DRIVER) + +#if @USE_NAMED_PIPES@ /* USE_NAMED_PIPES */ + +#ifndef _NC_WINDOWS_NATIVE +#define _NC_WINDOWS_NATIVE #endif #ifdef TERMIOS #error TERMIOS must not be defined on Windows #endif -/* We no longer support WindowsXP. - Minimum requirement is Windows Vista or Server2008, +/* + Minimum requirement for named pipes is Windows Vista or Server2008, aka Windows NT 6.0 */ #ifdef WINVER @@ -65,59 +69,46 @@ #include <windows.h> -#if HAVE_SYS_TIME_H -#include <sys/time.h> /* for struct timeval */ -#endif +#else /* !USE_NAMED_PIPES */ -#ifdef _NC_MSC -#include <winsock2.h> /* for struct timeval */ +#ifdef WINVER +# if WINVER < 0x0501 +# error WINVER must at least be 0x0501 +# endif +#else +# define WINVER 0x0501 #endif -#ifdef __cplusplus -extern "C" { -#endif +#include <windows.h> -#include <ncurses_dll.h> +#undef sleep +#define sleep(n) Sleep((n) * 1000) -#if !HAVE_CLOCK_GETTIME && !HAVE_GETTIMEOFDAY -#undef HAVE_GETTIMEOFDAY -#define HAVE_GETTIMEOFDAY 2 -extern NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *); -#endif +#endif /* USE_NAMED_PIPES */ -#undef wcwidth -#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs)) -extern NCURSES_EXPORT(int) _nc_wcwidth(wchar_t); +#if HAVE_SYS_TIME_H +#include <sys/time.h> /* for struct timeval */ +#endif -#ifdef EVENTLIST_2nd /* test.priv.h just needs the preceding */ +#ifdef _MSC_VER +#include <winsock2.h> /* for struct timeval */ +#endif -extern NCURSES_EXPORT(void) _nc_console_size(int* Lines, int* Cols); -extern NCURSES_EXPORT(HANDLE) _nc_console_handle(int fd); -extern NCURSES_EXPORT(int) _nc_console_isatty(int fd); -extern NCURSES_EXPORT(int) _nc_console_test(int fd); -extern NCURSES_EXPORT(int) _nc_console_read(SCREEN *sp,HANDLE hdl,int *buf); -extern NCURSES_EXPORT(int) _nc_console_twait(SCREEN *, HANDLE,int,int,int * EVENTLIST_2nd(_nc_eventlist * evl)); -extern NCURSES_EXPORT(WORD) _nc_console_MapColor(bool fore, int color); -extern NCURSES_EXPORT(void) _nc_console_selectActiveHandle(void); -extern NCURSES_EXPORT(bool) _nc_console_get_SBI(void); -extern NCURSES_EXPORT(void) _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info); -extern NCURSES_EXPORT(int) _nc_console_testmouse(SCREEN *,HANDLE,int EVENTLIST_2nd(_nc_eventlist*)); -extern NCURSES_EXPORT(int) _nc_console_keyok(int keycode,int flag); -extern NCURSES_EXPORT(bool) _nc_console_keyExist(int keycode); -extern NCURSES_EXPORT(bool) _nc_console_checkinit(bool initFlag, bool assumeTermInfo); -extern NCURSES_EXPORT(int) _nc_console_vt_supported(void); +#include <stdint.h> /* for uint32_t */ -#ifdef _NC_CHECK_MINTTY -extern NCURSES_EXPORT(int) _nc_console_checkmintty(int fd, LPHANDLE pMinTTY); +/* + * Allow for build-override, e.g., MinGW used "cygwin". + */ +#ifndef DEFAULT_TERM_ENV +#define DEFAULT_TERM_ENV "ms-terminal" #endif #undef VALID_TERM_ENV -#define MS_TERMINAL "ms-terminal" #define VALID_TERM_ENV(term_env, no_terminal) \ (term_env = (NonEmpty(term_env) \ ? term_env \ : (_nc_console_vt_supported() \ - ? MS_TERMINAL \ + ? DEFAULT_TERM_ENV \ : no_terminal)), \ NonEmpty(term_env)) @@ -137,11 +128,35 @@ extern NCURSES_EXPORT(int) _nc_console_checkmintty(int fd, LPHANDLE pMinTTY); #define CONMODE_NORAW (ENABLE_PROCESSED_INPUT|ENABLE_LINE_INPUT) #define CONMODE_NOCBREAK (ENABLE_LINE_INPUT) +#include <ncurses_dll.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(CURSES_PRIV_H) || defined(TEST_PRIV_H) -#if defined(USE_TERM_DRIVER) && defined(USE_WIN32CON_DRIVER) -extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_WIN_DRIVER; +#if !HAVE_CLOCK_GETTIME && !HAVE_GETTIMEOFDAY +extern NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *); +#undef HAVE_GETTIMEOFDAY +#define HAVE_GETTIMEOFDAY 2 +#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz) #endif +#endif /* defined(CURSES_PRIV_H) || defined(TEST_PRIV_H) */ + +#if !HAVE_WCWIDTH +#undef wcwidth +#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs)) +extern NCURSES_EXPORT(int) _nc_wcwidth(uint32_t); +#endif + +typedef struct +{ + DWORD dwFlagIn; + DWORD dwFlagOut; +} ConsoleMode; + #define CON_NUMPAIRS 64 typedef struct { BOOL initialized; @@ -166,20 +181,32 @@ typedef struct { CONSOLE_SCREEN_BUFFER_INFO SBI; CONSOLE_SCREEN_BUFFER_INFO save_SBI; CONSOLE_CURSOR_INFO save_CI; - TTY originalMode; + ConsoleMode originalMode; } ConsoleInfo; extern NCURSES_EXPORT_VAR(ConsoleInfo) _nc_CONSOLE; #define WINCONSOLE _nc_CONSOLE -#define TypeAlloca(type,count)(type*) _alloca(sizeof(type)*(size_t)(count)) - -#endif /* EVENTLIST_2nd */ - #ifdef __cplusplus } #endif +#ifdef CURSES_PRIV_H /* test.priv.h just needs the preceding */ +#include <term.h> +#endif + +#if USE_DOS_PATHS +NCURSES_EXPORT(const char *) _nc_to_dospath(const char *, char *); +#define FixupPathname(path) \ + char fixed_pathname[PATH_MAX]; \ + path = _nc_to_dospath(path, fixed_pathname) +#define FixupPathname2(path,buffer) \ + path = _nc_to_dospath(path, buffer) +#endif + +#undef ttyname +#define ttyname(fd) NULL + #endif /* _WIN32 || _WIN64 */ #endif /* NC_WIN32_H */ diff --git a/contrib/ncurses/include/ncurses_cfg.hin b/contrib/ncurses/include/ncurses_cfg.hin index 8d9ed81a8406..0744fa0c6710 100644 --- a/contrib/ncurses/include/ncurses_cfg.hin +++ b/contrib/ncurses/include/ncurses_cfg.hin @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -31,7 +31,7 @@ * Author: Thomas E. Dickey 1997-on * ****************************************************************************/ /* - * $Id: ncurses_cfg.hin,v 1.13 2020/03/08 12:37:59 tom Exp $ + * $Id: ncurses_cfg.hin,v 1.15 2024/06/08 14:04:14 tom Exp $ * * Both ncurses_cfg.h and ncurses_def.h are internal header-files used when * building ncurses. @@ -44,7 +44,7 @@ * * See: * https://invisible-island.net/autoconf/ - * ftp://ftp.invisible-island.net/autoconf/ + * https://invisible-island.net/archives/autoconf/ */ #ifndef NC_CONFIG_H #define NC_CONFIG_H diff --git a/contrib/ncurses/include/ncurses_defs b/contrib/ncurses/include/ncurses_defs index c0da3ad53ecc..8058fb25bd09 100644 --- a/contrib/ncurses/include/ncurses_defs +++ b/contrib/ncurses/include/ncurses_defs @@ -1,6 +1,6 @@ -# $Id: ncurses_defs,v 1.110 2024/03/02 20:38:23 tom Exp $ +# $Id: ncurses_defs,v 1.123 2025/12/27 12:45:14 tom Exp $ ############################################################################## -# Copyright 2018-2023,2024 Thomas E. Dickey # +# Copyright 2018-2024,2025 Thomas E. Dickey # # Copyright 2000-2016,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -42,6 +42,7 @@ DECL_ERRNO ETIP_NEEDS_MATH_H GCC_NORETURN /* nothing */ GCC_UNUSED /* nothing */ +HAVE_ALLOCA_H HAVE_ALLOC_PAIR HAVE_ASSUME_DEFAULT_COLORS HAVE_BIG_CORE @@ -50,6 +51,7 @@ HAVE_BSD_SIGNAL_H HAVE_BSD_STRING_H HAVE_BTOWC HAVE_BUILTIN_H +HAVE_CC_T HAVE_CHGAT 1 HAVE_CLOCK_GETTIME HAVE_COLOR_CONTENT 1 @@ -111,6 +113,7 @@ HAVE_LINK HAVE_LOCALECONV HAVE_LOCALE_H HAVE_LONG_FILE_NAMES +HAVE_MALLOC_H HAVE_MATH_FUNCS HAVE_MATH_H HAVE_MBLEN @@ -158,11 +161,13 @@ HAVE_SETUPTERM 1 HAVE_SETVBUF HAVE_SGTTY_H HAVE_SIGACTION +HAVE_SIGSET_T HAVE_SIGVEC HAVE_SIZECHANGE HAVE_SLK_COLOR HAVE_SLK_INIT 1 HAVE_SNPRINTF +HAVE_SPEED_T HAVE_STDINT_H HAVE_STRDUP HAVE_STRLCAT @@ -170,8 +175,9 @@ HAVE_STRLCPY HAVE_STRSTR HAVE_SYMLINK HAVE_SYSCONF -HAVE_SYS_BSDTYPES_H HAVE_SYS_AUXV_H +HAVE_SYS_BSDTYPES_H +HAVE_SYS_FSUID_H HAVE_SYS_IOCTL_H HAVE_SYS_PARAM_H HAVE_SYS_POLL_H @@ -180,6 +186,7 @@ HAVE_SYS_TERMIO_H HAVE_SYS_TIMES_H HAVE_SYS_TIME_H HAVE_SYS_TIME_SELECT +HAVE_TCFLAG_T HAVE_TCGETATTR HAVE_TCGETPGRP HAVE_TELL @@ -193,10 +200,10 @@ HAVE_TERM_H 1 HAVE_TGETENT 1 HAVE_TIGETNUM 1 HAVE_TIGETSTR 1 +HAVE_TIMES HAVE_TIPARM 1 HAVE_TIPARM_S 1 HAVE_TISCAN_S 1 -HAVE_TIMES HAVE_TPUTS_SP HAVE_TSEARCH HAVE_TYPEAHEAD 1 @@ -224,6 +231,7 @@ HAVE_WCSTOMBS HAVE_WCTOB HAVE_WCTOMB HAVE_WCTYPE_H +HAVE_WCWIDTH HAVE_WINSDELLN 1 HAVE_WINSSTR 1 HAVE_WMEMCHR @@ -231,8 +239,8 @@ HAVE_WORKING_POLL HAVE_WRESIZE HAVE_WSYNCDOWN 1 HAVE__DOSCAN -HAVE__TRACEF HAVE__NC_TPARM_ANALYZE 1 +HAVE__TRACEF MIXEDCASE_FILENAMES NCURSES_CHAR_EQ NCURSES_EXPANDED @@ -242,6 +250,7 @@ NCURSES_EXT_PUTWIN NCURSES_NO_PADDING NCURSES_OSPEED_COMPAT NCURSES_PATHSEP ':' +NCURSES_RGB_COLORS NCURSES_WIDECHAR NEED_PTEM_H NO_LEAKS @@ -255,6 +264,7 @@ TERMPATH "none" TIME_WITH_SYS_TIME TYPEOF_CHTYPE USE_COLORFGBG +USE_DOS_PATHS USE_FOPEN_BIN_R USE_GETCAP USE_GETCAP_CACHE @@ -264,6 +274,7 @@ USE_HASHMAP USE_HOME_TERMINFO USE_LINKS USE_MY_MEMMOVE +USE_NAMED_PIPES USE_OK_BCOPY USE_PTHREADS_EINTR USE_RCS_IDS @@ -271,9 +282,11 @@ USE_REENTRANT USE_SAFE_SPRINTF USE_SCROLL_HINTS USE_SIGWINCH +USE_STDBOOL_H USE_STRING_HACKS USE_SYMLINKS USE_SYSMOUSE +USE_TERM_DRIVER USE_WEAK_SYMBOLS USE_WIDEC_SUPPORT USE_XMC_SUPPORT diff --git a/contrib/ncurses/include/ncurses_mingw.h b/contrib/ncurses/include/ncurses_mingw.h deleted file mode 100644 index 8b11272de64d..000000000000 --- a/contrib/ncurses/include/ncurses_mingw.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** - * Copyright 2018-2020,2021 Thomas E. Dickey * - * Copyright 2008-2014,2017 Free Software Foundation, Inc. * - * * - * Permission is hereby granted, free of charge, to any person obtaining a * - * copy of this software and associated documentation files (the * - * "Software"), to deal in the Software without restriction, including * - * without limitation the rights to use, copy, modify, merge, publish, * - * distribute, distribute with modifications, sublicense, and/or sell * - * copies of the Software, and to permit persons to whom the Software is * - * furnished to do so, subject to the following conditions: * - * * - * The above copyright notice and this permission notice shall be included * - * in all copies or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * - * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * * - * Except as contained in this notice, the name(s) of the above copyright * - * holders shall not be used in advertising or otherwise to promote the * - * sale, use or other dealings in this Software without prior written * - * authorization. * - ****************************************************************************/ - -/**************************************************************************** - * Author: Juergen Pfeifer, 2008-on * - ****************************************************************************/ - -/* $Id: ncurses_mingw.h,v 1.7 2021/06/17 21:26:02 tom Exp $ */ - -/* - * This is a placeholder up to now and describes what needs to be implemented - * to support I/O to external terminals with ncurses on the Windows OS. - */ - -#ifdef _WIN32 -#ifndef _NC_MINGWH -#define _NC_MINGWH - -#define USE_CONSOLE_DRIVER 1 - -#undef TERMIOS -#define TERMIOS 1 - -typedef unsigned char cc_t; -typedef unsigned int tcflag_t; -typedef unsigned int speed_t; -typedef unsigned short otcflag_t; -typedef unsigned char ospeed_t; - -#define NCCS 18 -struct termios -{ - tcflag_t c_iflag; - tcflag_t c_oflag; - tcflag_t c_cflag; - tcflag_t c_lflag; - char c_line; - cc_t c_cc[NCCS]; - speed_t c_ispeed; - speed_t c_ospeed; -}; - -extern NCURSES_EXPORT(int) _nc_mingw_tcsetattr( - int fd, - int optional_actions, - const struct termios* arg); -extern NCURSES_EXPORT(int) _nc_mingw_tcgetattr( - int fd, - struct termios* arg); -extern NCURSES_EXPORT(int) _nc_mingw_tcflush( - int fd, - int queue); -extern NCURSES_EXPORT(void) _nc_set_term_driver(void* term); - -#endif /* _NC_MINGWH */ -#endif /* _WIN32 */ diff --git a/contrib/ncurses/include/term_entry.h b/contrib/ncurses/include/term_entry.h index 24389ad3837e..8d5a65405866 100644 --- a/contrib/ncurses/include/term_entry.h +++ b/contrib/ncurses/include/term_entry.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2022,2023 Thomas E. Dickey * + * Copyright 2018-2023,2025 Thomas E. Dickey * * Copyright 1998-2015,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -33,7 +33,7 @@ * and: Thomas E. Dickey 1998-on * ****************************************************************************/ -/* $Id: term_entry.h,v 1.64 2023/04/22 13:37:14 tom Exp $ */ +/* $Id: term_entry.h,v 1.65 2025/01/11 20:37:28 tom Exp $ */ /* * term_entry.h -- interface to entry-manipulation code @@ -108,7 +108,8 @@ typedef enum { dbdLAST } DBDIRS; -#define MAX_USES 32 +#define WARN_MAX_USES 32 +#define HARD_MAX_USES 40 #define MAX_CROSSLINKS 16 typedef struct entry ENTRY; @@ -122,7 +123,7 @@ typedef struct { struct entry { TERMTYPE2 tterm; unsigned nuses; - ENTRY_USES uses[MAX_USES]; + ENTRY_USES uses[HARD_MAX_USES]; int ncrosslinks; ENTRY *crosslinks[MAX_CROSSLINKS]; long cstart; diff --git a/contrib/ncurses/include/tic.h b/contrib/ncurses/include/tic.h index 7569aae9fb5f..27db7d723315 100644 --- a/contrib/ncurses/include/tic.h +++ b/contrib/ncurses/include/tic.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2022,2023 Thomas E. Dickey * + * Copyright 2018-2023,2025 Thomas E. Dickey * * Copyright 1998-2012,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -34,7 +34,7 @@ ****************************************************************************/ /* - * $Id: tic.h,v 1.87 2023/04/22 13:37:21 tom Exp $ + * $Id: tic.h,v 1.91 2025/12/25 21:23:29 tom Exp $ * tic.h - Global variables and structures for the terminfo compiler. */ @@ -47,6 +47,7 @@ extern "C" { #include <ncurses_cfg.h> +#include <sys/stat.h> #include <curses.h> /* for the _tracef() prototype, ERR/OK, bool defs */ /* @@ -270,6 +271,7 @@ extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *); extern NCURSES_EXPORT(bool) _nc_is_abs_path (const char *); extern NCURSES_EXPORT(bool) _nc_is_dir_path (const char *); extern NCURSES_EXPORT(bool) _nc_is_file_path (const char *); +extern NCURSES_EXPORT(bool) _nc_is_path_found (const char *, struct stat *); extern NCURSES_EXPORT(char *) _nc_basename (char *); extern NCURSES_EXPORT(char *) _nc_rootname (char *); @@ -313,8 +315,8 @@ extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings; extern NCURSES_EXPORT_VAR(struct token) _nc_curr_token; /* comp_userdefs.c */ -NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void); -NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void); +extern NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void); +extern NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void); /* captoinfo.c: capability conversion */ extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const); diff --git a/contrib/ncurses/include/unctrl.h.in b/contrib/ncurses/include/unctrl.h.in index f76f44343e73..65c73335c3e5 100644 --- a/contrib/ncurses/include/unctrl.h.in +++ b/contrib/ncurses/include/unctrl.h.in @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2025 Thomas E. Dickey * * Copyright 1998-2001,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -40,7 +40,7 @@ * as ^?. Printable characters are displayed as is. */ -/* $Id: unctrl.h.in,v 1.12 2020/02/02 23:34:34 tom Exp $ */ +/* $Id: unctrl.h.in,v 1.14 2025/08/08 23:19:21 tom Exp $ */ #ifndef NCURSES_UNCTRL_H_incl #define NCURSES_UNCTRL_H_incl 1 @@ -55,10 +55,10 @@ extern "C" { #include <curses.h> #undef unctrl -NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype); +extern NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype); -#if @NCURSES_SP_FUNCS@ -NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(unctrl) (SCREEN*, chtype); +#if @NCURSES_SP_FUNCS@ /* NCURSES_SP_FUNCS */ +extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(unctrl) (SCREEN*, chtype); #endif #ifdef __cplusplus diff --git a/contrib/ncurses/include/win32_curses.h b/contrib/ncurses/include/win32_curses.h deleted file mode 100644 index 0c807a022b15..000000000000 --- a/contrib/ncurses/include/win32_curses.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * Copyright 2018-2020,2021 Thomas E. Dickey * - * Copyright 2008-2014,2017 Free Software Foundation, Inc. * - * * - * Permission is hereby granted, free of charge, to any person obtaining a * - * copy of this software and associated documentation files (the * - * "Software"), to deal in the Software without restriction, including * - * without limitation the rights to use, copy, modify, merge, publish, * - * distribute, distribute with modifications, sublicense, and/or sell * - * copies of the Software, and to permit persons to whom the Software is * - * furnished to do so, subject to the following conditions: * - * * - * The above copyright notice and this permission notice shall be included * - * in all copies or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * - * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * * - * Except as contained in this notice, the name(s) of the above copyright * - * holders shall not be used in advertising or otherwise to promote the * - * sale, use or other dealings in this Software without prior written * - * authorization. * - ****************************************************************************/ - -/**************************************************************************** - * Author: Juergen Pfeifer, 2008-on * - ****************************************************************************/ - -/* $Id: win32_curses.h,v 1.3 2021/06/17 21:26:02 tom Exp $ */ - -/* - * This is the interface we use on Windows to mimic the control of the settings - * of what acts like the classic TTY - the Windows Console. - */ - -#if (defined(_WIN32) || defined(_WIN64)) -#ifndef _NC_WIN32_CURSES_H -#define _NC_WIN32_CURSES_H 1 - -struct winconmode -{ - unsigned long dwFlagIn; - unsigned long dwFlagOut; -}; - -extern NCURSES_EXPORT(void*) _nc_console_fd2handle(int fd); -extern NCURSES_EXPORT(int) _nc_console_setmode(void* handle, const struct winconmode* arg); -extern NCURSES_EXPORT(int) _nc_console_getmode(void* handle, struct winconmode* arg); -extern NCURSES_EXPORT(int) _nc_console_flush(void* handle); - -/* - A few definitions of Unix functions we need to emulate -*/ -#define SIGHUP 1 -#define SIGKILL 9 - -#undef getlogin -#define getlogin() getenv("USERNAME") - -#undef ttyname -#define ttyname(fd) NULL - -#undef sleep -#define sleep(n) Sleep((n) * 1000) - -#undef gettimeofday -#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz) - -#endif /* _NC_WIN32_CURSES_H */ -#endif /* _WIN32||_WIN64 */ diff --git a/contrib/ncurses/install-sh b/contrib/ncurses/install-sh index ec298b537402..afbe3d26c9c3 100755 --- a/contrib/ncurses/install-sh +++ b/contrib/ncurses/install-sh @@ -3,10 +3,18 @@ scriptversion=2020-11-14.01; # UTC +# https://lists.gnu.org/archive/html/automake/2018-09/msg00002.html +# +# Originally X11R4 util/scripts/install.sh, the following comments, copyright +# and license were added by an autoconf developer in 1998 (about nine years +# later). I have made a minor change to the wording, i.e., "copyright holders" +# vs "X Consortium", for reusability -TD +# +# ----------------------------------------------------------------------------- # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. -# +# ----------------------------------------------------------------------------- # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -22,16 +30,15 @@ scriptversion=2020-11-14.01; # UTC # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# +# ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. # +# Except as contained in this notice, the name(s) of the above copyright +# holders shall not be used in advertising or otherwise to promote the sale, +# use or other dealings in this Software without prior written authorization. +# ----------------------------------------------------------------------------- # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent diff --git a/contrib/ncurses/man/MKada_config.in b/contrib/ncurses/man/MKada_config.in index ee037ff4fdc0..58bae88dfa9e 100644 --- a/contrib/ncurses/man/MKada_config.in +++ b/contrib/ncurses/man/MKada_config.in @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2010-2014,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: MKada_config.in,v 1.35 2024/04/20 21:13:27 tom Exp $ -.TH adacurses@USE_CFG_SUFFIX@\-config 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: MKada_config.in,v 1.37 2025/04/05 22:26:08 tom Exp $ +.TH adacurses@USE_CFG_SUFFIX@\-config 1 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ds C adacurses@USE_CFG_SUFFIX@\-config .ie \n(.g \{\ .ds `` \(lq @@ -97,6 +97,7 @@ Populate a file \fIhello.adb\fP with the following. .PP .if \n(LL>67n .RS 4 .EX +.nf with Terminal_Interface.Curses; use Terminal_Interface.Curses; procedure Hello is @@ -127,6 +128,7 @@ begin End_Windows; end Hello; +.fi .EE .if \n(LL>67n .RE .ne 2 diff --git a/contrib/ncurses/man/MKncu_config.in b/contrib/ncurses/man/MKncu_config.in index 14690a544c5e..856e64b02ed7 100644 --- a/contrib/ncurses/man/MKncu_config.in +++ b/contrib/ncurses/man/MKncu_config.in @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: MKncu_config.in,v 1.24 2024/04/20 21:13:38 tom Exp $ -.TH @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: MKncu_config.in,v 1.25 2024/05/11 20:39:53 tom Exp $ +.TH @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@\-config 1 2024-05-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .SH NAME \fB\%@LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config\fP \- configuration helper for \fI\%ncurses\fP libraries diff --git a/contrib/ncurses/man/MKterminfo.sh b/contrib/ncurses/man/MKterminfo.sh index 882ef2ad093b..d5cdbc852429 100755 --- a/contrib/ncurses/man/MKterminfo.sh +++ b/contrib/ncurses/man/MKterminfo.sh @@ -1,10 +1,10 @@ #!/bin/sh -# $Id: MKterminfo.sh,v 1.20 2024/01/13 20:37:40 tom Exp $ +# $Id: MKterminfo.sh,v 1.28 2025/11/12 01:07:10 Branden.Robinson Exp $ # # MKterminfo.sh -- generate terminfo.5 from Caps tabular data # #*************************************************************************** -# Copyright 2018-2020,2022 Thomas E. Dickey * +# Copyright 2018-2024,2025 Thomas E. Dickey * # Copyright 1998-2003,2017 Free Software Foundation, Inc. * # * # Permission is hereby granted, free of charge, to any person obtaining a * @@ -49,33 +49,50 @@ if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi -# +# collect the command-line parameters of the script head="$1" -shift 1 +shift caps= +capstext= while test $# -gt 1 do caps="$caps $1" - shift 1 + capstext="$capstext, $1" + shift done tail="$1" + +MYTEMP=`mktemp -d 2>/dev/null` +if [ -z "$MYTEMP" ] +then + MYTEMP=${TMPDIR:-/tmp}/ncurses$$ +fi +mkdir -p "$MYTEMP" || failed "cannot mkdir $MYTEMP" +trap "rm -rf $MYTEMP; exit 1" HUP INT QUIT TERM +trap "rm -rf $MYTEMP" EXIT + +temp=$MYTEMP/temp +pass1=$MYTEMP/pass1 +pass2=$MYTEMP/pass2 +pass3=$MYTEMP/pass3 +sorted=$MYTEMP/sorted +unsorted=$MYTEMP/unsorted + cat <<EOF '\\" t .\\" DO NOT EDIT THIS FILE BY HAND! -.\\" It is generated from terminfo.head, $caps, and terminfo.tail. +.\\" man/MKterminfo.sh generated it from: +.\\" terminfo.head$capstext, +.\\" and terminfo.tail. .\\" -.\\" Note: this must be run through tbl before nroff. -.\\" The magic cookie on the first line triggers this under some man programs. +.\\" Note: this document must be run through tbl before nroff or troff. +.\\" Some man(1) programs recognize the token in the first-line comment +.\\" as directing them to arrange such a pipeline. EOF -cat "$head" -temp=temp$$ -sorted=sorted$$ -unsorted=unsorted$$ -trap 'code=$?; rm -f $sorted $temp $unsorted; exit $code' EXIT HUP INT QUIT TERM -rm -f $sorted $temp $unsorted +cat "$head" -cat $caps | sed -n "\ +cat >$pass1 <<EOF /%%-STOP-HERE-%%/q /^#%center/s, expand,, /^#%lw25/s, lw6 , lw7 , @@ -84,12 +101,16 @@ cat $caps | sed -n "\ s/[ ][ ]*/ /g s/$/T}/ s/ [A-Z0-9_()\-][A-Z0-9_()\-]* [0-9\-][0-9\-]* [Y\-][B\-][C\-][G\-][EK\-]\** / T{\\ -.ad l\ +.na\ / s/ bool / /p s/ num / /p s/ str / /p -" |sed -e 's/^$/../' | tr "\134" "\006" >$unsorted +EOF + +echo 's/^$/../' > $pass2 + +sed -n -f $pass1 $caps | sed -f $pass2 | tr "\134" "\006" >$unsorted rm -f $sorted rm -f $temp @@ -116,8 +137,11 @@ do done <$unsorted test $saved = yes && sort $temp >>$sorted -sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134" +sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134" | sed -e '/^$/d' + +cat > $pass3 << "EOF" +/^center expand;/s, expand,, +/^\.TS/,/^\\/s, lw[1-9][0-9]*\., l., +EOF -sed -e '/^center expand;/s, expand,,' \ - -e '/^\.TS/,/^\\/s, lw[1-9][0-9]*\., l.,' \ - "$tail" +sed -f $pass3 "$tail" diff --git a/contrib/ncurses/man/Makefile.in b/contrib/ncurses/man/Makefile.in index 9d08a7eed8ba..c7a6083b1552 100644 --- a/contrib/ncurses/man/Makefile.in +++ b/contrib/ncurses/man/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.54 2022/10/22 16:36:40 tom Exp $ +# $Id: Makefile.in,v 1.60 2025/11/02 01:23:25 tom Exp $ ############################################################################## -# Copyright 2019-2021,2022 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 1998-2013,2015 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -38,7 +38,7 @@ SHELL = @SHELL@ VPATH = @srcdir@ -DESTDIR = @DESTDIR@ +@SET_DESTDIR@ srcdir = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ @@ -47,7 +47,8 @@ datadir = @datadir@ mandir = @mandir@ includesubdir = @includesubdir@ -INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) +INCLUDEDIR = $(DESTDIR)$(includedir@MERGE_PREFIX@)$(includesubdir) +MANDIR = $(DESTDIR)$(mandir@MERGE_PREFIX@) INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -72,12 +73,15 @@ sources : terminfo.5 depend : tags : -$(DESTDIR)$(mandir) : +check :: + @echo "no unit-test implemented" + +$(MANDIR) : mkdir -p $@ -EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]* +EDITARGS = $(MANDIR) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]* -install install.man : terminfo.5 $(DESTDIR)$(mandir) +install install.man : terminfo.5 $(MANDIR) $(SHELL) ../edit_man.sh normal installing $(EDITARGS) uninstall uninstall.man : @@ -90,8 +94,8 @@ CAPLIST = \ terminfo.5: $(srcdir)/terminfo.head \ $(CAPLIST) \ $(srcdir)/terminfo.tail \ - Makefile $(srcdir)/MKterminfo.sh - $(SHELL) $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5 + Makefile MKterminfo.tmp + $(SHELL) MKterminfo.tmp $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5 mostlyclean : -rm -f core tags TAGS *~ *.bak *.ln *.atac trace @@ -103,4 +107,4 @@ clean: mostlyclean $(SHELL) $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed distclean realclean: clean - -rm -f Makefile *-config.1 ../edit_man.* ../man_alias.* man_db.renames + -rm -f Makefile *-config.1 ../edit_man.* ../man_alias.* man_db.renames MKterminfo.tmp diff --git a/contrib/ncurses/man/captoinfo.1m b/contrib/ncurses/man/captoinfo.1m index 4693b06b36e8..58dcb7359e07 100644 --- a/contrib/ncurses/man/captoinfo.1m +++ b/contrib/ncurses/man/captoinfo.1m @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: captoinfo.1m,v 1.63 2024/03/23 20:37:25 tom Exp $ -.TH @CAPTOINFO@ 1M 2024-03-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: captoinfo.1m,v 1.77 2025/11/12 01:03:56 tom Exp $ +.TH @CAPTOINFO@ 1M 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -51,52 +51,79 @@ convert a \fItermcap\fP description into a \fI\%term\%info\fP description .P .B "@CAPTOINFO@ \-V" .SH DESCRIPTION -\fB\%@CAPTOINFO@\fP translates terminal descriptions. -It looks in each given text \fIfile\fP for \fI\%termcap\fP entries and, +.B \%@CAPTOINFO@ +translates terminal descriptions. +It looks in each given text +.I file +for +.I termcap +entries and, for each one found, -writes an equivalent \fI\%\%term\%info\fP description to the standard -output stream. -\fI\%termcap\fP \fBtc\fP capabilities translate to \fI\%\%term\%info\fP -\*(``\fBuse\fP\*('' capabilities. +writes an equivalent +.I term\%info +description to the standard output stream. +.I termcap +.B tc +capabilities translate to +.I term\%info +.RB \*(`` use \*('' +capabilities. .PP -If no \fIfile\fPs are specified, -\fB\%@CAPTOINFO@\fP interprets the content of the environment variable -\fI\%TERMCAP\fP as a file name, -and extracts only the entry for the terminal named in the environment -variable \fITERM\fP from it. -If the environment variable \fI\%TERMCAP\fP is not set, -\fB\%@CAPTOINFO@\fP reads -.IR \%/etc/termcap . +If no +.IR file s +are specified, +.B \%@CAPTOINFO@ +interprets the content of the environment variable +.I \%TERMCAP +as a file name, +and extracts only the entry for the terminal type named +in the environment variable +.I TERM +from it. +If the environment variable +.I \%TERMCAP +is not set, +.B \%@CAPTOINFO@ +reads +.IR \%/etc/termcap "." .PP This utility is implemented as a link to \fB\%@TIC@\fP(1M), with the latter's .B \-I option implied. -You can use other \fB\%@TIC@\fP options such as +You can use other +.B \%@TIC@ +options such as .BR \-1 , .BR \-f , .BR \-v , .BR \-w , and .BR \-x . -The \fB\-V\fP option reports the version of \fI\%ncurses\fP associated -with this program and exits with a successful status. +The +.B \-V +option reports the version of +.I \%ncurses +associated with this program and exits with a successful status. .SS "Translations from Nonstandard Capabilities" -\fB\%@CAPTOINFO@\fP translates some obsolete, +.B \%@CAPTOINFO@ +translates some obsolete, nonstandard capabilities into standard -(SVr4/XSI Curses) -\fI\%\%term\%info\fP capabilities. +.I term\%info +capabilities. It issues a diagnostic to the standard error stream for each, inviting the user to check that it has not mistakenly translated an unknown or mistyped capability name. .PP -.\" DWB 3.3 tbl requires the two junk "L" specifiers in the first row. +.\" DWB 3.3 and Plan 9 tbl require the two junk "L" specifiers in the +.\" first row description. System V, GNU, and Heirloom Doctools tbl do +.\" not; they "rectangularize" the table geometry. .TS center; Cb S L L Cb Cb Cb Cb Cb Cb C Lb. -Name +\f(BItermcap\fP Code Obsolete Standard Origin \f(BIterminfo\fP capability _ BO mr AT&T enter_reverse_mode @@ -129,16 +156,18 @@ FC Sf Tektronix set_foreground HS mh IRIX enter_dim_mode .TE .PP -XENIX \fI\%termcap\fP had a set of extension capabilities, +XENIX +.I termcap +had a set of extension capabilities, corresponding to box drawing characters of CCSID (\*(``code page\*('') 437, as follows. .PP .TS center; -cb cb -cb l . -\f(BItermcap\fP Name Graphic +Cb Cb +Cb L . +\f(BItermcap\fP Code Graphic _ G2 upper left corner G3 lower left corner @@ -170,21 +199,30 @@ Gc double intersection GG ACS magic cookie count .TE .PP -\fB\%@CAPTOINFO@\fP composes single-line capabilities into an \fBacsc\fP -string, -and discards \fBGG\fP and double-line capabilities with a warning +.B \%@CAPTOINFO@ +composes single-line box-drawing capabilities into a +.I term\%info +.B \%acs_chars +.RB \%( acsc ) +string capability, +and discards +.B GG +and double-line capabilities with a warning diagnostic. .PP -IBM's AIX has a \fI\%\%term\%info\fP facility descended from SVr1 -\fI\%\%term\%info\fP, +AIX has a +.I term\%info +facility descended from SVr2 +.IR term\%info "," but which is incompatible with the SVr4 format. -\fB\%@CAPTOINFO@\fP translates the following AIX extensions. +.B \%@CAPTOINFO@ +translates the following AIX extensions. .PP .TS center; -cb cb -l l . -IBM XSI +Cb Cb +L L . +IBM X/Open _ ksel kslt kbtab kcbt @@ -194,25 +232,44 @@ font2 s2ds font3 s3ds .TE .PP -Additionally, -this program translates the AIX \fBbox1\fP capability to an \fBacsc\fP -string. +It furthermore translates the AIX +.B box1 +capability to an +.B \%acs_chars +.RB \%( acsc ) +string capability. .PP -The HP-UX \fI\%\%term\%info\fP library supports two nonstandard -\fI\%\%term\%info\fP capabilities, -\fBmeml\fP (memory lock) and \fBmemu\fP (memory unlock). -\fB\%@CAPTOINFO@\fP discards these with a warning message. +The HP-UX +.I \%term\%info +library supports two nonstandard +.I \%term\%info +capabilities: +.B \%memory_lock +.RB ( meml ) +and +.B \%memory_unlock +.RB ( memu ). +.B \%@CAPTOINFO@ +discards these with a warning message. .SH FILES .TP .I /etc/termcap -default \fI\%termcap\fP terminal capability database +default +.I termcap +terminal capability database +.SH EXTENSIONS +This command is an SVr4 +.I curses +and +.I \%ncurses +extension. .SH PORTABILITY -X/Open Curses, -Issue 7 (2009) describes \fBtic\fP briefly, -but omits this program. +X/Open Curses Issue\ 7 (2009) does not specify this command. .PP -SVr4 systems provide \fB\%captoinfo\fP as a separate application from -\fBtic\fP. +SVr4 systems provide +.I \%captoinfo +as a separate application from +.IR \%tic "." Its .B \-v option does not accept a trace level argument diff --git a/contrib/ncurses/man/clear.1 b/contrib/ncurses/man/clear.1 index a1034db7cb1a..3d3a68f85b6d 100644 --- a/contrib/ncurses/man/clear.1 +++ b/contrib/ncurses/man/clear.1 @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: clear.1,v 1.48 2024/03/16 15:35:01 tom Exp $ -.TH @CLEAR@ 1 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: clear.1,v 1.53 2025/04/05 21:56:26 tom Exp $ +.TH @CLEAR@ 1 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -91,8 +91,8 @@ exits with a successful status. .B \-x prevents \fB\%@CLEAR@\fP from attempting to clear the scrollback buffer. .SH PORTABILITY -Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7 -(POSIX.1-2008) nor X/Open Curses Issue 7 documents \fB\%@CLEAR@\fP. +Neither IEEE Std 1003.1/The Open Group Base Specifications Issue\ 7 +(POSIX.1-2008) nor X/Open Curses Issue\ 7 documents \fB\%@CLEAR@\fP. .PP The latter documents \fBtput\fP, which could be used to replace this utility either via a shell script or @@ -113,8 +113,10 @@ and replaced the \fBclear\fP program with a shell script that called .PP .RS 4 .EX +.nf /usr/bin/tput ${1:+\-T$1} clear 2> /dev/null exit +.fi .EE .RE .PP diff --git a/contrib/ncurses/man/curs_add_wch.3x b/contrib/ncurses/man/curs_add_wch.3x index d1eb9a311fc8..c413fcb1fcbf 100644 --- a/contrib/ncurses/man/curs_add_wch.3x +++ b/contrib/ncurses/man/curs_add_wch.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2001-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_add_wch.3x,v 1.62 2024/04/20 21:20:07 tom Exp $ -.TH curs_add_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_add_wch.3x,v 1.125 2025/11/12 01:06:36 tom Exp $ +.TH curs_add_wch 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -52,230 +52,442 @@ \fB\%mvwadd_wch\fP, \fB\%echo_wchar\fP, \fB\%wecho_wchar\fP \- -add a \fIcurses\fR complex character to a window and advance the cursor +add a \fIcurses\fR complex character to a window, possibly advancing the cursor .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint add_wch(const cchar_t *\fIwch\fP); -\fBint wadd_wch(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP); -\fBint mvadd_wch(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP); -\fBint mvwadd_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP); +\fBint add_wch(const cchar_t * \fIwch\fP); +\fBint wadd_wch(WINDOW * \fIwin\fP, const cchar_t * \fIwch\fP); +\fBint mvadd_wch(int \fIy\fP, int \fIx\fP, const cchar_t * \fIwch\fP); +\fBint mvwadd_wch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t * \fIwch\fP); .PP -\fBint echo_wchar(const cchar_t *\fIwch\fP); -\fBint wecho_wchar(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP); +\fBint echo_wchar(const cchar_t * \fIwch\fP); +\fBint wecho_wchar(WINDOW * \fIwin\fP, const cchar_t *\fIwch\fP); +.PP +\fI/* (integer) constants */\fP +/*\fI .\|.\|. */ \fBWACS_BLOCK;\fR +/*\fI .\|.\|. */ \fBWACS_BOARD;\fR +/*\fI .\|.\|. */ \fBWACS_BTEE;\fR +/*\fI .\|.\|. */ \fBWACS_BULLET;\fR +/*\fI .\|.\|. */ \fBWACS_CKBOARD;\fR +/*\fI .\|.\|. */ \fBWACS_DARROW;\fR +/*\fI .\|.\|. */ \fBWACS_DEGREE;\fR +/*\fI .\|.\|. */ \fBWACS_DIAMOND;\fR +/*\fI .\|.\|. */ \fBWACS_HLINE;\fR +/*\fI .\|.\|. */ \fBWACS_LANTERN;\fR +/*\fI .\|.\|. */ \fBWACS_LARROW;\fR +/*\fI .\|.\|. */ \fBWACS_LLCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_LRCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_LTEE;\fR +/*\fI .\|.\|. */ \fBWACS_PLMINUS;\fR +/*\fI .\|.\|. */ \fBWACS_PLUS;\fR +/*\fI .\|.\|. */ \fBWACS_RARROW;\fR +/*\fI .\|.\|. */ \fBWACS_RTEE;\fR +/*\fI .\|.\|. */ \fBWACS_S1;\fR +/*\fI .\|.\|. */ \fBWACS_S9;\fR +/*\fI .\|.\|. */ \fBWACS_TTEE;\fR +/*\fI .\|.\|. */ \fBWACS_UARROW;\fR +/*\fI .\|.\|. */ \fBWACS_ULCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_URCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_VLINE;\fR +\fI/* extensions */\fP +/*\fI .\|.\|. */ \fBWACS_GEQUAL;\fR +/*\fI .\|.\|. */ \fBWACS_LEQUAL;\fR +/*\fI .\|.\|. */ \fBWACS_NEQUAL;\fR +/*\fI .\|.\|. */ \fBWACS_PI;\fR +/*\fI .\|.\|. */ \fBWACS_S3;\fR +/*\fI .\|.\|. */ \fBWACS_S7;\fR +/*\fI .\|.\|. */ \fBWACS_STERLING;\fR +\fI/* extensions for thick lines */\fP +/*\fI .\|.\|. */ \fBWACS_T_BTEE;\fR +/*\fI .\|.\|. */ \fBWACS_T_HLINE;\fR +/*\fI .\|.\|. */ \fBWACS_T_LLCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_T_LRCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_T_LTEE;\fR +/*\fI .\|.\|. */ \fBWACS_T_PLUS;\fR +/*\fI .\|.\|. */ \fBWACS_T_RTEE;\fR +/*\fI .\|.\|. */ \fBWACS_T_TTEE;\fR +/*\fI .\|.\|. */ \fBWACS_T_ULCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_T_URCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_T_VLINE;\fR +\fI/* extensions for double lines */\fP +/*\fI .\|.\|. */ \fBWACS_D_BTEE;\fR +/*\fI .\|.\|. */ \fBWACS_D_HLINE;\fR +/*\fI .\|.\|. */ \fBWACS_D_LLCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_D_LRCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_D_LTEE;\fR +/*\fI .\|.\|. */ \fBWACS_D_PLUS;\fR +/*\fI .\|.\|. */ \fBWACS_D_RTEE;\fR +/*\fI .\|.\|. */ \fBWACS_D_TTEE;\fR +/*\fI .\|.\|. */ \fBWACS_D_ULCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_D_URCORNER;\fR +/*\fI .\|.\|. */ \fBWACS_D_VLINE;\fR .fi .SH DESCRIPTION -.SS add_wch -The -\fBadd_wch\fP, -\fBwadd_wch\fP, -\fBmvadd_wch\fP, and -\fBmvwadd_wch\fP -functions put the complex character \fIwch\fP into the given -window at its current position, -which is then advanced. -These functions perform -wrapping and special-character processing as follows: +.SS wadd_wch +.B \%wadd_wch +writes the +.I curses +complex character +.I wch +to the window +.IR win "," +then may advance the cursor position, +analogously to the standard C library's \fI\%putwchar\fP(3). +\fB\%ncurses\fP(3X) describes the variants of this function. +.PP +Construct a +.I curses +complex character +from a +.I wchar_t +with \fB\%setcchar\fP(3X). +A +.I \%cchar_t +can be copied from place to place using \fB\%win_wch\fP(3X) and +.BR \%wadd_wch "." +.I curses +defines constants to aid the manipulation of character attributes; +see \fB\%curs_attr\fP(3X). +A complex character whose only character component is a wide space, +and whose only attribute is +.BR \%WA_NORMAL , +is a +.IR "blank character" "," +and therefore combines with the window's background character; +see \fB\%curs_bkgrnd\fP(3X). +.PP +Much behavior depends on whether the wide characters in +.I wch +are spacing or non-spacing; +see subsection \*(``Complex Characters\*('' below. .bP -If \fIwch\fP refers to a spacing character, -then any previous character at that location is removed. -A new character specified by \fIwch\fP is -placed at that location with rendition specified by \fIwch\fP. -The cursor then advances after this spacing character, -to prepare for writing the next character on the screen. -.IP -The newly added spacing character is the base of the active complex character. -Subsequent non-spacing characters can be combined with this base -until another spacing character is written to the screen, -or the cursor is moved, e.g., using \fBwmove\fP. +If +.I wch +contains a spacing character, +then any character at the cursor is first removed. +The complex character +.IR wch "," +with its attributes and color pair identifier, +becomes the +.I base +of the +.IR "active complex character" "." +.bP +If +.I wch +contains only non-spacing characters, +.\" XXX: see wadd_wch_literal (the beginning of the array may be +.\" nonspacing) +they are combined with the active complex character. +.I curses +ignores its attributes and color pair identifier, +and does not advance the cursor. +.PP +Further non-spacing characters added with +.B \%wadd_wch +are not written at the new cursor position but combine with the active +complex character until another spacing character is written to the +window or the cursor is moved. +.PP +If +.I wch +is a +backspace, +carriage return, +line feed, +or +tab, +the cursor moves appropriately within the window. +.bP +Backspace moves the cursor one character left; +at the left margin of a window, +it does nothing. +.bP +Carriage return moves the cursor to the left margin on the same line of +the window. +.bP +Line feed does a \fB\%clrtoeol\fP(3X), +then advances as if from the right margin. .bP -If \fIwch\fP refers to a non-spacing character, -it is appended to the active complex character, -retaining the previous characters at that location. -The rendition specified by \fIwch\fP is ignored. +Tab advances the cursor to the next tab stop +(possibly on the next line); +these are placed at every eighth column by default. .IP -The cursor is not advanced after adding a non-spacing character. -Subsequent calls to add non-spacing characters will update the same position. +Alter the tab interval with the +.B \%TABSIZE +extension; +see \fB\%curs_variables\fP(3X). +.PP +If +.I wch +is any other nonprintable character, +.I curses +draws it in printable form using the same convention as +\fB\%wunctrl\fP(3X). +Calling \fB\%win_wch\fP(3X) on the location of a nonprintable character +does not retrieve the character itself, +but its \fB\%wunctrl\fP(3X) representation. +.PP +Adding spacing characters with \fB\%wadd_wch\fP +causes it to wrap at the right margin of the window: +.bP +If the cursor is not at the bottom of the scrolling region +and advancement occurs at the right margin, +the cursor automatically wraps to the beginning of the next line. +.bP +If the cursor is at the bottom of the scrolling region +when advancement occurs at the right margin, +and \fB\%scrollok\fP(3X) is enabled for +.IR win , +the scrolling region scrolls up one line +and the cursor wraps as above. +Otherwise, +advancement and scrolling do not occur, +and +.B \%wadd_wch +returns +.BR ERR "." +.PP +A window's margins may coincide with the screen boundaries. +This may be a problem when +.I \%ncurses +updates the screen to match the curses window. +When their right and bottom margins coincide, +.I \%ncurses +uses different strategies to handle the variations of scrolling and wrapping +at the lower-right corner +by depending on the terminal capabilities: +.bP +If the terminal does not automatically wrap as characters +are added at the right margin +(i.e., auto right margins), +.I \%ncurses +writes the character directly. .bP -If the character part of \fIwch\fP is -a tab, newline, backspace or other control character, -the window is updated and the cursor moves as if \fBaddch\fP were called. -.SS echo_wchar -The \fBecho_wchar\fP -function is functionally equivalent to a call to -\fBadd_wch\fP -followed by a call to -\fB\%refresh\fP(3X). -Similarly, the -\fBwecho_wchar\fP -is functionally equivalent to a call to -\fBwadd_wch\fP -followed by a call to -\fBwrefresh\fP. -The knowledge -that only a single character is being output is taken into consideration and, -for non-control characters, a considerable performance gain might be seen -by using the *\fBecho\fP* functions instead of their equivalents. -.SS "Line Graphics" -Like \fB\%addch\fP(3X), -\fBaddch_wch\fP accepts symbols which make it simple to draw lines and other -frequently used special characters. -These symbols correspond to the same VT100 line-drawing set as -\fB\%addch\fP(3X). +If the terminal has auto right margins, +but also has capabilities for turning auto margins off and on, +.I \%ncurses +turns the auto margin feature off temporarily +when writing to the lower-right corner. +.bP +If the terminal has an insertion mode which can be turned off and on, +.I \%ncurses +writes the character just before the lower-right corner, +and then inserts a character to push the update into the corner. +.SS wecho_wchar +.B \%echo_wchar +and +.B \%wecho_wchar +are equivalent to calling +.RB \%( w ) add_wch +followed by +.RB \%( w ) refresh +on +.B \%stdscr +or the specified window. +.I curses +interprets these functions as a hint that only a single (complex) +character is being output; +for non-control characters, +a considerable performance gain may be enjoyed by employing them. +.\" TODO: Combine the following with the "Line Drawing" subsection of +.\" terminfo(5) and replace this with a cross reference there. +.SS "Forms-Drawing Characters" +.I curses +defines macros starting with +.B \%WACS_ +that can be used with +.B \%wadd_wch +to write line-drawing and other symbols to the screen. +.I \%ncurses +terms these +.I "forms-drawing characters." +.I curses +uses the ACS default listed below if the terminal type lacks the +.B \%acs_chars +.RB \%( acsc ) +capability; +that capability does not define a replacement for the character; +or if the terminal type and locale configuration +require Unicode to access these characters, +but the library is unable to use Unicode. +The \*(``acsc char\*('' column corresponds to how the characters are +specified in the +.B \%acs_chars +.RB \%( acsc ) +string capability, +and the characters in it may appear on the screen if the terminal type's +database entry incorrectly advertises ACS support. +The name \*(``ACS\*('' originates in the Alternate Character Set feature +of the DEC VT100 terminal. .PP +.ie t .ne 4v +.el .ne 5v .TS Lb Lb Lb Lb Lb Lb Lb Lb Lb Lb -Lb L L L Lx. -\& Unicode ASCII acsc \& -ACS Name Default Default Char Glyph Name +Lb L L L Lw(15n)x. +\& Unicode ACS acsc \& +Symbol Default Default char Glyph Name _ -WACS_BLOCK 0x25ae # 0 T{ +WACS_BLOCK U+25ae # 0 T{ solid square block T} -WACS_BOARD 0x2592 # h board of squares -WACS_BTEE 0x2534 + v bottom tee -WACS_BULLET 0x00b7 o ~ bullet -WACS_CKBOARD 0x2592 : a T{ +WACS_BOARD U+2592 # h board of squares +WACS_BTEE U+2534 + v bottom tee +WACS_BULLET U+00b7 o ~ bullet +WACS_CKBOARD U+2592 : a T{ checker board (stipple) T} -WACS_DARROW 0x2193 v . T{ +WACS_DARROW U+2193 v . T{ arrow pointing down T} -WACS_DEGREE 0x00b0 ' f degree symbol -WACS_DIAMOND 0x25c6 + \(ga diamond -WACS_GEQUAL 0x2265 > > T{ +WACS_DEGREE U+00b0 ' f degree symbol +WACS_DIAMOND U+25c6 + \(ga diamond +WACS_GEQUAL U+2265 > > T{ +.if n .na \" avoid adjustment warning from groff greater-than-or-equal-to T} -WACS_HLINE 0x2500 \- q horizontal line -WACS_LANTERN 0x2603 # i lantern symbol -WACS_LARROW 0x2190 < , T{ +WACS_HLINE U+2500 \- q horizontal line +WACS_LANTERN U+2603 # i lantern symbol +WACS_LARROW U+2190 < , T{ arrow pointing left T} -WACS_LEQUAL 0x2264 < y T{ +WACS_LEQUAL U+2264 < y T{ +.if n .na \" avoid adjustment warning from groff less-than-or-equal-to T} -WACS_LLCORNER 0x2514 + m T{ +WACS_LLCORNER U+2514 + m T{ lower left-hand corner T} -WACS_LRCORNER 0x2518 + j T{ +WACS_LRCORNER U+2518 + j T{ lower right-hand corner T} -WACS_LTEE 0x2524 + t left tee -WACS_NEQUAL 0x2260 ! | not-equal -WACS_PI 0x03c0 * { greek pi -WACS_PLMINUS 0x00b1 # g plus/minus -WACS_PLUS 0x253c + n plus -WACS_RARROW 0x2192 > + T{ +WACS_LTEE U+2524 + t left tee +WACS_NEQUAL U+2260 ! | not-equal +WACS_PI U+03c0 * { greek pi +WACS_PLMINUS U+00b1 # g plus/minus +WACS_PLUS U+253c + n plus +WACS_RARROW U+2192 > + T{ arrow pointing right T} -WACS_RTEE 0x251c + u right tee -WACS_S1 0x23ba \- o scan line 1 -WACS_S3 0x23bb \- p scan line 3 -WACS_S7 0x23bc \- r scan line 7 -WACS_S9 0x23bd \&_ s scan line 9 -WACS_STERLING 0x00a3 f } T{ +WACS_RTEE U+251c + u right tee +WACS_S1 U+23ba \- o scan line 1 +WACS_S3 U+23bb \- p scan line 3 +WACS_S7 U+23bc \- r scan line 7 +WACS_S9 U+23bd \&_ s scan line 9 +WACS_STERLING U+00a3 f } T{ +.if n .na \" avoid adjustment warning from groff pound-sterling symbol T} -WACS_TTEE 0x252c + w top tee -WACS_UARROW 0x2191 ^ \- T{ +WACS_TTEE U+252c + w top tee +WACS_UARROW U+2191 ^ \- T{ arrow pointing up T} -WACS_ULCORNER 0x250c + l T{ +WACS_ULCORNER U+250c + l T{ upper left-hand corner T} -WACS_URCORNER 0x2510 + k T{ +WACS_URCORNER U+2510 + k T{ upper right-hand corner T} -WACS_VLINE 0x2502 | x vertical line +WACS_VLINE U+2502 | x vertical line .TE .PP -The wide-character configuration of \fI\%ncurses\fP also defines symbols -for thick lines (\fBacsc\fP \*(``J\*('' to \*(``V\*(''): +The +.I \%ncurses +wide API also defines symbols for thick lines +.RB \%( acsc +\*(``J\*('' through \*(``N\*('', +\*(``T\*('' through \*(``X\*('', +and \*(``Q\*(''): .PP .TS Lb Lb Lb Lb Lb Lb Lb Lb Lb Lb -Lb L L L Lx. +Lb L L L Lw(14n)x. \& Unicode ASCII acsc \& ACS Name Default Default Char Glyph Name _ -WACS_T_BTEE 0x253b + V T{ +WACS_T_BTEE U+253b + V T{ thick tee pointing up T} -WACS_T_HLINE 0x2501 - Q T{ +WACS_T_HLINE U+2501 - Q T{ thick horizontal line T} -WACS_T_LLCORNER 0x2517 + M T{ +WACS_T_LLCORNER U+2517 + M T{ thick lower left corner T} -WACS_T_LRCORNER 0x251b + J T{ +WACS_T_LRCORNER U+251b + J T{ thick lower right corner T} -WACS_T_LTEE 0x252b + T T{ +WACS_T_LTEE U+252b + T T{ thick tee pointing right T} -WACS_T_PLUS 0x254b + N T{ +WACS_T_PLUS U+254b + N T{ thick large plus T} -WACS_T_RTEE 0x2523 + U T{ +WACS_T_RTEE U+2523 + U T{ thick tee pointing left T} -WACS_T_TTEE 0x2533 + W T{ +WACS_T_TTEE U+2533 + W T{ thick tee pointing down T} -WACS_T_ULCORNER 0x250f + L T{ +WACS_T_ULCORNER U+250f + L T{ thick upper left corner T} -WACS_T_URCORNER 0x2513 + K T{ +WACS_T_URCORNER U+2513 + K T{ thick upper right corner T} -WACS_T_VLINE 0x2503 | X T{ +WACS_T_VLINE U+2503 | X T{ thick vertical line T} .TE .PP -and for double-lines (\fBacsc\fP \*(``A\*('' to \*(``I\*(''): +and for double lines +.RB \%( acsc +\*(``A\*('' through \*(``I\*('', +plus \*(``R\*('' and \*(``Y\*(''): .PP .TS Lb Lb Lb Lb Lb Lb Lb Lb Lb Lb -Lb L L L Lx. +Lb L L L Lw(14n)x. \& Unicode ASCII acsc \& ACS Name Default Default Char Glyph Name _ -WACS_D_BTEE 0x2569 + H T{ +WACS_D_BTEE U+2569 + H T{ double tee pointing up T} -WACS_D_HLINE 0x2550 - R T{ +WACS_D_HLINE U+2550 - R T{ double horizontal line T} -WACS_D_LLCORNER 0x255a + D T{ +WACS_D_LLCORNER U+255a + D T{ double lower left corner T} -WACS_D_LRCORNER 0x255d + A T{ +WACS_D_LRCORNER U+255d + A T{ double lower right corner T} -WACS_D_LTEE 0x2560 + F T{ +WACS_D_LTEE U+2560 + F T{ double tee pointing right T} -WACS_D_PLUS 0x256c + E T{ +WACS_D_PLUS U+256c + E T{ double large plus T} -WACS_D_RTEE 0x2563 + G T{ +WACS_D_RTEE U+2563 + G T{ double tee pointing left T} -WACS_D_TTEE 0x2566 + I T{ +WACS_D_TTEE U+2566 + I T{ double tee pointing down T} -WACS_D_ULCORNER 0x2554 + C T{ +WACS_D_ULCORNER U+2554 + C T{ double upper left corner T} -WACS_D_URCORNER 0x2557 + B T{ +WACS_D_URCORNER U+2557 + B T{ double upper right corner T} -WACS_D_VLINE 0x2551 | Y T{ +WACS_D_VLINE U+2551 | Y T{ double vertical line T} .TE @@ -291,26 +503,36 @@ U+2501 BOX DRAWINGS HEAVY HORIZONTAL .bP U+2550 BOX DRAWINGS DOUBLE HORIZONTAL .SH RETURN VALUE -All routines return the integer \fBERR\fP upon failure and \fBOK\fP on success. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses does not specify any error conditions. -This implementation returns an error +In +.IR \%ncurses , +these functions fail if .bP -if the window pointer is null or +the +.I curses +screen has not been initialized, .bP -if it is not possible to add a complete character in the window. -.PP -The latter may be due to different causes: +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, .bP -If \fB\%scrollok\fP(3X) is not enabled, -writing a character at the lower right margin succeeds. -However, -an error is returned because it is not possible to wrap to a new line. +wrapping to a new line is impossible because \fB\%scrollok\fP(3X) has +not been called on +.I win +(or +.BR \%stdscr "," +as applicable) +when writing to its bottom right location is attempted, +or .bP -If an error is detected when converting a multibyte character to a sequence -of bytes, -or if it is not possible to add all of the resulting bytes in the window, -an error is returned. +it is not possible to add a complete character at the cursor position. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -318,78 +540,155 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -Note that -\fBadd_wch\fP, -\fBmvadd_wch\fP, -\fBmvwadd_wch\fP, and -\fBecho_wchar\fP -may be macros. +.BR add_wch "," +.BR mvadd_wch "," +.BR mvwadd_wch "," +and +.B echo_wchar +may be implemented as macros. +.SH EXTENSIONS +The symbols +.IR \%WACS_S3 "," +.IR \%WACS_S7 "," +.IR \%WACS_LEQUAL "," +.IR \%WACS_GEQUAL "," +.IR \%WACS_PI "," +.IR \%WACS_NEQUAL "," +and +.I \%WACS_STERLING +are not standard. +However, +many publicly available +.I \%term\%info +entries include +.B \%acs_chars +.RB \%( acsc ) +capabilities in which their key characters +.RB ( pryz{|} ) +are embedded, +and a second-hand list of their character descriptions has come to +light. +The +.I \%ncurses +developers invented WACS-prefixed names for them. +.\" in v5_2_20020209 .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. -The defaults specified for line-drawing characters apply in the POSIX locale. -.SS "WACS Symbols" +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +These functions are described in X/Open Curses Issue\ 4. +It specifies no error conditions for them. +.PP +The defaults specified for forms-drawing characters apply in the POSIX +locale. X/Open Curses makes it clear that the WACS_ symbols should be defined as -a pointer to \fBcchar_t\fP data, e.g., in the discussion of \fBborder_set\fP. +a pointer to +.I \%cchar_t +data, e.g., in the discussion of +.IR \%border_set "." A few implementations are problematic: .bP -NetBSD curses defines the symbols as a \fBwchar_t\fP within a \fBcchar_t\fP. +NetBSD +.I curses +defines the symbols as a +.I \%wchar_t +within a +.IR \%cchar_t "." .bP -HP-UX curses equates some of the \fBACS_\fP symbols -to the analogous \fBWACS_\fP symbols as if the \fBACS_\fP symbols were +HP-UX +.I curses +equates some of the +.I \%ACS_ +symbols to the analogous +.I \%WACS_ +symbols as if the +.I \%ACS_ +symbols were wide characters. The misdefined symbols are the arrows and other symbols which are not used for line-drawing. .PP X/Open Curses does not specify symbols for thick- or double-lines. -SVr4 curses implementations defined their line-drawing symbols in -terms of intermediate symbols. -This implementation extends those symbols, providing new definitions -which are not in the SVr4 implementations. +SVr4 +.I curses +implementations defined their line-drawing symbols +in terms of intermediate symbols. +.I \%ncurses +extends those symbols, +providing new definitions not found in SVr4 implementations. .PP Not all Unicode-capable terminals provide support for VT100-style -alternate character sets (i.e., the \fBacsc\fP capability), +alternate character sets (i.e., the +.I \%acsc_chars +.RB ( acsc ) +capability), with their corresponding line-drawing characters. X/Open Curses did not address the aspect of integrating Unicode with line-drawing characters. -Existing implementations of Unix curses (AIX, HP-UX, Solaris) -use only the \fBacsc\fP character-mapping to provide this feature. -As a result, those implementations can only use single-byte line-drawing -characters. -\fI\%ncurses\fP 5.3 (2002) provided a table of Unicode values to solve +Existing implementations of System\ V +.I curses +(AIX, HP-UX, Solaris) +use only the +.I \%acsc_chars +.RB ( acsc ) +character-mapping to provide this feature. +As a result, +those implementations can use only single-byte line-drawing characters. +.I \%ncurses +5.3 (2002) provided a table of Unicode values to solve these problems. -NetBSD curses incorporated that table in 2010. +NetBSD +.I curses +incorporated that table in 2010. .PP -In this implementation, the Unicode values are used instead of the -terminal description's \fBacsc\fP mapping as discussed in +.I \%ncurses +uses the Unicode values instead of the terminal type description's +.I \%acsc_chars +.RB ( acsc ) +mapping as discussed in \fB\%ncurses\fP(3X) for the environment variable -\fINCURSES_NO_UTF8_ACS\fP. +.IR \%NCURSES_NO_UTF8_ACS "." In contrast, for the same cases, the line-drawing characters described in \fB\%addch\fP(3X) will use only the ASCII default values. .PP Having Unicode available does not solve all of the problems with -line-drawing for curses: +line-drawing for +.IR curses ":" .bP The closest Unicode equivalents to the -VT100 graphics \fIS1\fP, \fIS3\fP, \fIS7\fP and \fIS9\fP +VT100 graphics +.IR S1 "," +.IR S3 "," +.IR S7 "," +and +.I S9 frequently are not displayed at the regular intervals which the terminal used. .bP -The \fIlantern\fP is a special case. +The +.I lantern +is a special case. It originated with the AT&T 4410 terminal in the early 1980s. There is no accessible documentation depicting the lantern symbol on the AT&T terminal. .IP -Lacking documentation, most readers assume that a \fIstorm lantern\fP +Lacking documentation, most readers assume that a +.I "storm lantern" was intended. But there are several possibilities, all with problems. .IP Unicode 6.0 (2010) does provide two lantern symbols: U+1F383 and U+1F3EE. -Those were not available in 2002, and are irrelevant since -they lie outside the BMP and as a result are not generally available -in terminals. +Those were not available in 2002, +and are irrelevant since they lie outside the Basic Multilingual Plane +and as a result are unavailable on many terminals. They are not storm lanterns, in any case. .IP -Most \fIstorm lanterns\fP have a tapering glass chimney +Most +.I "storm lanterns" +have a tapering glass chimney (to guard against tipping); some have a wire grid protecting the chimney. .IP @@ -406,32 +705,77 @@ Others have suggested these alternatives: \[u256C] U+256C (forms double vertical and horizontal), and \[u2612] U+2612 (ballot box with x). .SS "Complex Characters" -The complex character type \fBcchar_t\fR -can store more than one wide character (\fBwchar_t\fR). -The X/Open Curses description does not mention this possibility, -describing only the cases where \fIwch\fP is a spacing character -or a non-spacing character. +The complex character type +.I \%cchar_t +can store more than one wide character +.RI \%( wchar_t ). +X/Open Curses does not mention this possibility, +specifying behavior only where +.I wch +is a single character, +either spacing or non-spacing. .PP -This implementation assumes that \fIwch\fP is constructed using -\fB\%setcchar\fP(3X), and in turn that the result +.I \%ncurses +assumes that +.I wch +is constructed using \fB\%setcchar\fP(3X), +and in turn that the result .bP -contains at most one spacing character in the beginning of its list of wide -characters, -and zero or more non-spacing characters +contains at most one spacing character at the beginning of its list of +wide characters, +and zero or more non-spacing characters, or .bP -may hold one non-spacing character. +holds one non-spacing character. .PP In the latter case, -\fI\%ncurses\fP adds the non-spacing character to the active -(base) spacing character. -.SS TABSIZE -The -.B TABSIZE -variable is implemented in SVr4 and other versions of -.IR curses , -but is not specified by X/Open Curses -(see \fBcurs_variables\fP(3X)). +.I \%ncurses +adds the non-spacing character to the active complex character. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition (SVID) Version\ 4 +of the same year +specified functions named +.I \%waddwch +(and the usual variants), +.IR \%echowchar "," +and +.IR \%wechowchar "." +.\" SVID 4, vol 3., p. 475 +These were later additions to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +They differed from X/Open's later +.I \%wadd_wch +and +.I \%wecho_wchar +in that they each took an argument of type +.I \%wchar_t +instead of +.IR \%cchar_t "." +SVID defined no +.I \% WACS_ +symbols. +.PP +X/Open Curses Issue\ 4 also defined many of the +.I WACS_ +constants, +excepting +.IR \%WACS_GEQUAL "," +.IR \%WACS_LEQUAL "," +.IR \%WACS_NEQUAL "," +.IR \%WACS_PI "," +.IR \%WACS_S3 "," +.IR \%WACS_S7 "," +and +.IR \%WACS_STERLING ";" +and those for drawing thick and double lines. +.PP +.I \%ncurses +5.3 (2002) +furnished the remaining +.I WACS_ +constants. .SH SEE ALSO \fB\%curs_addch\fP(3X) describes comparable functions of the .I \%ncurses @@ -441,6 +785,7 @@ library in its non-wide-character configuration. \fB\%curs_addwstr\fP(3X), \fB\%curs_add_wchstr\fP(3X), \fB\%curs_attr\fP(3X), +\fB\%curs_bkgrnd\fP(3X), \fB\%curs_clear\fP(3X), \fB\%curs_getcchar\fP(3X), \fB\%curs_outopts\fP(3X), diff --git a/contrib/ncurses/man/curs_add_wchstr.3x b/contrib/ncurses/man/curs_add_wchstr.3x index 5dd3e8f4e131..b5d30e60521b 100644 --- a/contrib/ncurses/man/curs_add_wchstr.3x +++ b/contrib/ncurses/man/curs_add_wchstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_add_wchstr.3x,v 1.39 2024/04/20 21:20:07 tom Exp $ -.TH curs_add_wchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_add_wchstr.3x,v 1.61 2025/10/21 00:06:34 tom Exp $ +.TH curs_add_wchstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,68 +46,91 @@ .. .SH NAME \fB\%add_wchstr\fP, -\fB\%add_wchnstr\fP, \fB\%wadd_wchstr\fP, -\fB\%wadd_wchnstr\fP, \fB\%mvadd_wchstr\fP, -\fB\%mvadd_wchnstr\fP, \fB\%mvwadd_wchstr\fP, +\fB\%add_wchnstr\fP, +\fB\%wadd_wchnstr\fP, +\fB\%mvadd_wchnstr\fP, \fB\%mvwadd_wchnstr\fP \- add a \fIcurses\fR complex character string to a window .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint add_wchstr(const cchar_t *\fIwchstr\fP); -\fBint wadd_wchstr(WINDOW * \fIwin\fP, const cchar_t *\fIwchstr\fP); -\fBint mvadd_wchstr(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP); -\fBint mvwadd_wchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP); +\fBint add_wchstr(const cchar_t * \fIwchstr\fP); +\fBint wadd_wchstr(WINDOW * \fIwin\fP, const cchar_t * \fIwchstr\fP); +\fBint mvadd_wchstr(int \fIy\fP, int \fIx\fP, const cchar_t * \fIwchstr\fP); +\fBint mvwadd_wchstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t * \fIwchstr\fP); .PP -\fBint add_wchnstr(const cchar_t *\fIwchstr\fP, int \fIn\fP); -\fBint wadd_wchnstr(WINDOW * \fIwin\fP, const cchar_t *\fIwchstr\fP, int \fIn\fP); -\fBint mvadd_wchnstr(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP, int \fIn\fP); -\fBint mvwadd_wchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP, int \fIn\fP); +\fBint add_wchnstr(const cchar_t * \fIwchstr\fP, int \fIn\fP); +\fBint wadd_wchnstr(WINDOW * \fIwin\fP, const cchar_t * \fIwchstr\fP, int \fIn\fP); +\fBint mvadd_wchnstr(int \fIy\fP, int \fIx\fP, const cchar_t * \fIwchstr\fP, int \fIn\fP); +\fBint mvwadd_wchnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, + const cchar_t * \fIwchstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -These functions copy the (null-terminated) -array of complex characters \fIwchstr\fP -into the window image structure -starting at the current cursor position. -.PP -The four functions with \fIn\fP as the last -argument copy at most \fIn\fP elements, -but no more than will fit on the line. -If \fBn\fP=\fB\-1\fP then the whole array is copied, -to the maximum number of characters that will fit on the line. +.B \%wadd_wchstr +copies the string of complex characters +.I \%wchstr +to the window +.IR win "." +A null complex character terminates the string. +If a complex character does not completely fit at the end of the line, +.I curses +fills its remaining cells with the window's background character; +see \fB\%bkgrnd\fP(3X). +.B \%wadd_wchnstr +does the same, +but copies at most +.I n +characters, +or as many as possible if +.I n +is +.BR \-1 "." +\fB\%ncurses\fP(3X) describes the variants of these functions. .PP -The window cursor is \fInot\fP advanced. -These functions are faster than \fBwaddnstr\fP. -On the other hand: +Because these functions do not call \fB\%wadd_wch\fP(3X) internally, +they are faster than \fB\%waddwstr\fP(3X) and \fB\%waddnwstr\fP(3X). +On the other hand, +they .bP -they do not perform checking -(such as for the newline, backspace, or carriage return characters), +do not treat the backspace, +carriage return, +or line feed characters specially; .bP -they do not advance the current cursor position, +do not represent unprintable characters with \fB\%wunctrl\fP(3X); .bP -they do not expand other control characters to ^-escapes, and +do not update the cursor position to follow the last character written; +and .bP -they truncate the string if it crosses the right margin, -rather than wrapping it around to the new line. -.PP -These functions end successfully -on encountering a null \fBcchar_t\fP, or -when they have filled the current line. -If a complex character cannot completely fit at the end of the current line, -the remaining columns are filled with the background character and rendition. +truncate the string at the window's right margin, +rather than wrapping it to the next line and potentially scrolling. .SH RETURN VALUE -All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses does not specify any error conditions. -This implementation returns an error +In +.IR \%ncurses "," +these functions fail if +.bP +the +.I curses +screen has not been initialized, .bP -if the \fIwin\fP parameter is null or +.I wchstr +is a null pointer, +or .bP -if the \fIwchstr\fP parameter is null. +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -115,9 +138,33 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All functions except \fBwadd_wchnstr\fP may be macros. +All of these functions except +.B \%wadd_wchnstr +may be implemented as macros. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 +of the same year +specified functions named +.I \%waddwchstr +and +.I \%waddwchnstr +(and the usual variants). +.\" SVID 4, vol 3., p. 477 +These were later additions to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +They differed from X/Open's later +.I \%wadd_wchstr +and +.I \%wadd_wchnstr +in that they each took an argument of type +.I \%wchar_t +instead of +.IR \%cchar_t "." .SH SEE ALSO \fB\%curs_addchstr\fP(3X) describes comparable functions of the .I \%ncurses diff --git a/contrib/ncurses/man/curs_addch.3x b/contrib/ncurses/man/curs_addch.3x index ad548520ce84..4fc248015698 100644 --- a/contrib/ncurses/man/curs_addch.3x +++ b/contrib/ncurses/man/curs_addch.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_addch.3x,v 1.85 2024/04/20 19:03:47 tom Exp $ -.TH curs_addch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_addch.3x,v 1.144 2025/11/12 01:04:12 tom Exp $ +.TH curs_addch 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -64,33 +64,91 @@ add a \fIcurses\fP character to a window and advance the cursor \fB#include <curses.h> .PP \fBint addch(const chtype \fIch\fP); -\fBint waddch(WINDOW *\fIwin\fP, const chtype \fIch\fP); +\fBint waddch(WINDOW * \fIwin\fP, const chtype \fIch\fP); \fBint mvaddch(int \fIy\fP, int \fIx\fP, const chtype \fIch\fP); -\fBint mvwaddch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const chtype \fIch\fP); +\fBint mvwaddch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const chtype \fIch\fP); .PP \fBint echochar(const chtype \fIch\fP); -\fBint wechochar(WINDOW *\fIwin\fP, const chtype \fIch\fP); +\fBint wechochar(WINDOW * \fIwin\fP, const chtype \fIch\fP); +.PP +\fI/* (integer) constants */\fP +/*\fI .\|.\|. */ \fBACS_BLOCK;\fR +/*\fI .\|.\|. */ \fBACS_BOARD;\fR +/*\fI .\|.\|. */ \fBACS_BTEE;\fR +/*\fI .\|.\|. */ \fBACS_BULLET;\fR +/*\fI .\|.\|. */ \fBACS_CKBOARD;\fR +/*\fI .\|.\|. */ \fBACS_DARROW;\fR +/*\fI .\|.\|. */ \fBACS_DEGREE;\fR +/*\fI .\|.\|. */ \fBACS_DIAMOND;\fR +/*\fI .\|.\|. */ \fBACS_HLINE;\fR +/*\fI .\|.\|. */ \fBACS_LANTERN;\fR +/*\fI .\|.\|. */ \fBACS_LARROW;\fR +/*\fI .\|.\|. */ \fBACS_LLCORNER;\fR +/*\fI .\|.\|. */ \fBACS_LRCORNER;\fR +/*\fI .\|.\|. */ \fBACS_LTEE;\fR +/*\fI .\|.\|. */ \fBACS_PLMINUS;\fR +/*\fI .\|.\|. */ \fBACS_PLUS;\fR +/*\fI .\|.\|. */ \fBACS_RARROW;\fR +/*\fI .\|.\|. */ \fBACS_RTEE;\fR +/*\fI .\|.\|. */ \fBACS_S1;\fR +/*\fI .\|.\|. */ \fBACS_S9;\fR +/*\fI .\|.\|. */ \fBACS_TTEE;\fR +/*\fI .\|.\|. */ \fBACS_UARROW;\fR +/*\fI .\|.\|. */ \fBACS_ULCORNER;\fR +/*\fI .\|.\|. */ \fBACS_URCORNER;\fR +/*\fI .\|.\|. */ \fBACS_VLINE;\fR +\fI/* extensions */\fP +/*\fI .\|.\|. */ \fBACS_GEQUAL;\fR +/*\fI .\|.\|. */ \fBACS_LEQUAL;\fR +/*\fI .\|.\|. */ \fBACS_NEQUAL;\fR +/*\fI .\|.\|. */ \fBACS_PI;\fR +/*\fI .\|.\|. */ \fBACS_S3;\fR +/*\fI .\|.\|. */ \fBACS_S7;\fR +/*\fI .\|.\|. */ \fBACS_STERLING;\fR .fi .SH DESCRIPTION -.SS "Adding Characters" +.SS waddch .B \%waddch -puts the character +writes the +.I curses +character .I ch -at the cursor position of window -.IR win , +to the window +.IR win "," then advances the cursor position, analogously to the standard C library's \fI\%putchar\fP(3). \fB\%ncurses\fP(3X) describes the variants of this function. .PP -If advancement occurs at the right margin, -.bP -the cursor automatically wraps to the beginning of the next line; -and -.bP -at the bottom of the current scrolling region, -and if \fB\%scrollok\fP(3X) is enabled for -.IR win , -the scrolling region scrolls up one line. +Construct a +.I curses +character +from a +.I char +by assignment or typecast. +Subsection \*(``Video Attributes\*('' of \fB\%attron\fP(3X) describes +how to manipulate its attributes and color pair. +(A color pair selection is not honored unless initialized; +see \fB\%start_color\fP(3X).) +.PP +The object or expression +.I ch +may contain attributes and/or a color pair identifier. +(A +.I \%chtype +can be copied from place to place using \fB\%winch\fP(3X) and +.BR \%waddch .) +.I curses +defines constants to aid the manipulation of character attributes; +see \fB\%curs_attr\fP(3X). +A +.I ch +whose character component is a space, +and whose only attribute is +.BR \%A_NORMAL , +is a +.IR "blank character" "," +and therefore combines with the window's background character; +see \fB\%curs_bkgd\fP(3X). .PP If .I ch @@ -106,18 +164,16 @@ Backspace moves the cursor one character left; at the left margin of a window, it does nothing. .bP -Carriage return moves the cursor to the left margin on the current line -of the window. +Carriage return moves the cursor to the left margin on the same line of +the window. .bP Line feed does a \fB\%clrtoeol\fP(3X), -then moves the cursor to the left margin on the next line of the window, -and if \fB\%scrollok\fP(3X) is enabled for -.IR win , -scrolls the window if the cursor was already on the last line. +then advances as if from the right margin. .bP Tab advances the cursor to the next tab stop (possibly on the next line); these are placed at every eighth column by default. +.IP Alter the tab interval with the .B \%TABSIZE extension; @@ -126,33 +182,74 @@ see \fB\%curs_variables\fP(3X). If .I ch is any other nonprintable character, -it is drawn in printable form, -using the same convention as \fB\%unctrl\fP(3X). -.PP +.I curses +draws it in printable form using the same convention as +\fB\%unctrl\fP(3X). Calling \fB\%winch\fP(3X) on the location of a nonprintable character does not return the character itself, but its \fB\%unctrl\fP(3X) representation. .PP -.I ch -may contain rendering and/or color attributes, -and others can be combined with the parameter -by logically \*(``or\*(''ing with it. -(A character with its attributes can be copied from place to place -using \fB\%winch\fP(3X) and -.BR \%waddch .) -See \fB\%curs_attr\fP(3X) for values of predefined video attribute -constants that can be usefully \*(``or\*(''ed with characters. -.SS "Echoing Characters" +Adding printable characters with \fB\%waddch\fP +causes it to wrap at the right margin of the window: +.bP +If the cursor is not at the bottom of the scrolling region +and advancement occurs at the right margin, +the cursor automatically wraps to the beginning of the next line. +.bP +If the cursor is at the bottom of the scrolling region +when advancement occurs at the right margin, +and \fB\%scrollok\fP(3X) is enabled for +.IR win , +the scrolling region scrolls up one line +and the cursor wraps as above. +Otherwise, +advancement and scrolling do not occur, +and +.B \%waddch +returns +.BR ERR "." +.PP +A window's margins may coincide with the screen boundaries. +This may be a problem when +.I \%ncurses +updates the screen to match the curses window. +When their right and bottom margins coincide, +.I \%ncurses +uses different strategies to handle the variations of scrolling and wrapping +at the lower-right corner +by depending on the terminal capabilities: +.bP +If the terminal does not automatically wrap as characters +are added at the right margin +(i.e., auto right margins), +.I \%ncurses +writes the character directly. +.bP +If the terminal has auto right margins, +but also has capabilities for turning auto margins off and on, +.I \%ncurses +turns the auto margin feature off temporarily +when writing to the lower-right corner. +.bP +If the terminal has an insertion mode which can be turned off and on, +.I \%ncurses +writes the character just before the lower-right corner, +and then inserts a character to push the update into the corner. +.SS wechochar .B \%echochar and .B \%wechochar are equivalent to calling .RB \%( w ) addch followed by -.RB \%( w ) refresh . +.RB \%( w ) refresh +on +.B \%stdscr +or the specified window. .I curses -interprets these functions as a hint that only a single character is -being output; +interprets these functions as a hint to its optimizer +that only a single character cell in the window +is being altered between refreshes; for non-control characters, a considerable performance gain may be enjoyed by employing them. .\" TODO: Combine the following with the "Line Drawing" subsection of @@ -163,26 +260,31 @@ defines macros starting with .B \%ACS_ that can be used with .B \%waddch -to write line-drawing and other special characters to the screen. +to write line-drawing and other symbols to the screen. .I \%ncurses terms these .I "forms-drawing characters." -The ACS default listed below is used if the +.I curses +uses the ACS default listed below if the terminal type lacks the .B \%acs_chars -.RB ( \%acsc ) -.I \%term\%info -capability does not define a terminal-specific replacement for it, -or if the terminal and locale configuration requires Unicode to access -these characters but the library is unable to use Unicode. +.RB \%( acsc ) +capability; +that capability does not define a replacement for the character; +or if the terminal type and locale configuration +require Unicode to access these characters, +but the library is unable to use Unicode. The \*(``acsc char\*('' column corresponds to how the characters are specified in the .B \%acs_chars +.RB \%( acsc ) string capability, -and the characters in it may appear on the screen if the terminal's +and the characters in it may appear on the screen if the terminal type's database entry incorrectly advertises ACS support. The name \*(``ACS\*('' originates in the Alternate Character Set feature of the DEC VT100 terminal. .PP +.ie t .ne 4v +.el .ne 5v .TS Lb Lb Lb Lb Lb Lb Lb Lb @@ -232,26 +334,40 @@ on failure. .PP In .IR \%ncurses , -.B \%waddch -returns -.B ERR -if it is not possible to add a complete character at the cursor -position, -as when conversion of a multibyte character to a byte sequence fails, -or at least one of the resulting bytes cannot be added to the window. -See section \*(``PORTABILITY\*('' below regarding the use of -.B \%waddch -with multibyte characters. +these functions fail if +.bP +the +.I curses +screen has not been initialized, +.bP +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, +.bP +wrapping to a new line is impossible because \fB\%scrollok\fP(3X) has +not been called on +.I win +(or +.BR \%stdscr "," +as applicable) +when a write to its bottom right location is attempted, +or +.bP +it is not possible to add a complete character at the cursor position. .PP +The last may be due to different causes: +.bP +conversion of a wide character to a multibyte character sequence can +fail, +or +.bP +at least one of the bytes resulting from wide character conversion to a +multibyte character sequence cannot be added to the window. +See section \*(``PORTABILITY\*('' below regarding the use of .B \%waddch -can successfully write a character at the bottom right location of the -window. -However, -.I \%ncurses -returns -.B ERR -if \fB\%scrollok\fP(3X) is not enabled in that event, -because it is not possible to wrap to a new line. +with wide characters. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -259,69 +375,163 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -.BR \%addch , -.BR \%mvaddch , -.BR \%mvwaddch , +.BR \%addch "," +.BR \%mvaddch "," +.BR \%mvwaddch "," and .B \%echochar may be implemented as macros. +.SH EXTENSIONS +The symbols +.IR \%ACS_S3 "," +.IR \%ACS_S7 "," +.IR \%ACS_LEQUAL "," +.IR \%ACS_GEQUAL "," +.IR \%ACS_PI "," +.IR \%ACS_NEQUAL "," +and +.I \%ACS_STERLING +were not documented in any publicly released System\ V +.\" And did not exist yet as late as SVr4. +.\" https://github.com/ryanwoodsmall/oldsysv/blob/master/\ +.\" sysvr4/svr4/lib/xlibcurses/screen/curses.ed +and are not standard. +However, +many publicly available +.I \%term\%info +entries include +.B \%acs_chars +.RB \%( acsc ) +capabilities in which their key characters +.RB ( pryz{|} ) +are embedded, +and a second-hand list of their character descriptions has come to light, +which identifies them as VT100 special characters. +.PP +The DEC Special Character and Line Drawing Set (VT100) is indexed by +an ASCII character in the range 96 (`) to 126 (~). +That index character is part of the definition for the curses +.B \%ACS_ +symbols. +The VT100 special characters can be categorized in three groups: +.bP +useful graphic symbols with a standard +.B \%ACS_ +symbol, +(e.g., the line-drawing symbols), +.bP +possibly useful characters (these non-standard symbols), +.bP +representations of control characters (e.g., newline and vertical tabulation). +.PP +A few +.B \%ACS_ +symbols do not fit into DEC's VT100 scheme. +The AT&T Teletype 5410v1 arrow symbols and +.B \%ACS_BLOCK +use indices outside the range 96 to 126. +Two of the Teletype symbols use indices in that range, +with different meaning versus the VT100: +.bP +.B \%ACS_BOARD +corresponds to the VT100 symbol for newline +.bP +.B \%ACS_LANTERN +corresponds to the VT100 symbol for vertical tabulation +.PP +AT&T defined +.B \%ACS_ +names for the most useful graphic symbols, +as well as for its own. +Its header file commented: +.PP +.EX +.nf +.\" Fill at 65 columns in your editor. +/* + * Standard alternate character set. The current ACS world is + * evolving, so we support only a widely available subset: the + * line drawing characters from the VT100, plus a few from the + * Teletype 5410v1. Eventually there may be support of more + * sophisticated ACS line drawing, such as that in the Teletype + * 5410, the HP line drawing set, and the like. There may be + * support for some non line oriented characters as well. + * + * Line drawing ACS names are of the form ACS_trbl, where t is + * the top, r is the right, b is the bottom, and l is the left. + * t, r, b, and l might be B (blank), S (single), D (double), or + * T (thick). The subset defined here only uses B and S. + */ +.fi +.EE +.PP +Although these less-useful graphic symbols were not given names, +they were used in +.I \%terminfo +entries. +The +.I \%ncurses +developers invented ACS-prefixed names for them. +.\" in v1_9_5_950928_e227 .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +X/Open Curses Issue\ 4 describes these functions. It specifies no error conditions for them. .PP -SVr4 -.I curses -describes a successful return value only as +SVr4 describes a successful return value only as \*(``an integer value other than -.BR ERR \*(''. +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 472 .PP The defaults specified for forms-drawing characters apply in the POSIX locale. .SS "ACS Symbols" X/Open Curses states that the -.B \%ACS_ +.I \%ACS_ definitions are .I char constants. -.PP Some implementations are problematic. .bP Solaris .IR curses , for example, -define the ACS symbols as constants; +defines the ACS symbols as constants; others define them as elements of an array. .IP -This implementation uses an array, -.BR \%acs_map , -as did SVr4 -.IR curses . -NetBSD also uses an array, +SVr4 used an array, +.IR \%acs_map , +as does +.IR \%ncurses "." +NetBSD +.I curses +also uses an array, actually named -.BR \%_acs_char , -with a -.B \%#define -for compatibility. +.IR \%_acs_char , +with a \%\*(``#define\*('' for compatibility. .bP HP-UX .I curses equates some of the -.B \%ACS_ +.I \%ACS_ symbols to the analogous -.B \%WACS_ +.I \%WACS_ symbols as if the -.B \%ACS_ +.I \%ACS_ symbols were wide characters (see \fB\%curs_add_wch\fP(3X)). The misdefined symbols are the arrows and others that are not used for line drawing. .bP X/Open Curses -(Issues 2 through 7) +(Issues\ 2 through 7) has a typographical error for the -.B \%ACS_LANTERN +.I \%ACS_LANTERN symbol, equating its \*(``VT100+ Character\*('' to \*(``I\*('' (capital I), while the header files for SVr4 @@ -341,39 +551,16 @@ its (AT&T PC6300 with EMOTS Terminal Emulator) description uses lowercase i. .PP -Some ACS symbols -.RB ( \%ACS_S3 , -.BR \%ACS_S7 , -.BR \%ACS_LEQUAL , -.BR \%ACS_GEQUAL , -.BR \%ACS_PI , -.BR \%ACS_NEQUAL , -and -.BR \%ACS_STERLING ) -were not documented in any publicly released System\ V. -However, -many publicly available -.I \%term\%info -entries include -.B \%acsc -strings in which their key characters -.BR ( pryz{|} ) -are embedded, -and a second-hand list of their character descriptions has come to -light. -The -.I \%ncurses -developers invented ACS-prefixed names for them. -.PP The .I displayed values of -.B \%ACS_ +.I \%ACS_ constants depend on .bP the .I \%ncurses -ABI\(emfor example, +ABI \(em +for example, wide-character versus non-wide-character configurations (the former is capable of displaying Unicode while the latter is not), and @@ -386,89 +573,111 @@ the terminal is unable to display forms-drawing characters by using UTF-8; see the discussion of the .I \%NCURSES_NO_UTF8_ACS -environment variable in \fB\%ncurses\fP(3X)). +environment variable in \fB\%ncurses\fP(3X). .SS "Character Set" X/Open Curses assumes that the parameter passed to -.B \%waddch +.I \%waddch contains a single character. -As discussed in \fB\%curs_attr\fP(3X), -that character may have been more than eight bits wide in an SVr3 or +That character may have been more than eight bits wide in an SVr3 or SVr4 implementation, -but in the X/Open Curses model, -the details are not given. -The important distinction between SVr4 -.I curses -and X/Open Curses is that the latter separates non-character information -(attributes and color) -from the character code, -which SVr4 packs into a +but X/Open Curses leaves the width of a non-wide character code +unspecified. +The standard further does not specify the internal structure of a +.IR chtype "," +though the use of bitwise operators to combine the character code with +attributes and a color pair identifier into a .I \%chtype for passage to -.BR \%waddch . +.I \%waddch +is common. +A portable application uses only the macros discussed in +\fB\%curs_attr\fP(3X) to manipulate a +.IR \%chtype "." .PP In .IR \%ncurses , .I \%chtype -holds an eight-bit character. -But the library allows a multibyte character to be passed in a +holds an eight-bit character, +but the library allows a multibyte character sequence to be passed via a succession of calls to -.BR \%waddch . +.IR \%waddch "." Other implementations do not; a -.B \%waddch +.I \%waddch call transmits exactly one character, which may be rendered in one or more screen locations depending on -whether it is printable. -.PP -Depending on the locale settings, +whether it is printable +(see \fB\%unctrl\fP(3X)). +Depending on the locale, .I \%ncurses inspects the byte passed in each -.B \%waddch -call, -and checks whether the latest call continues a multibyte sequence. +.I \%waddch +call and checks whether the latest call continues a multibyte character. When a character is -.IR complete , +.IR complete "," .I \%ncurses displays the character and advances the cursor. -.PP If the calling application interrupts the succession of bytes in -a multibyte character sequence by changing the current location\(emfor -example, -with \fB\%wmove\fP(3X)\(em\c +a multibyte character sequence by changing the current location \(em +for example, +with \fB\%wmove\fP(3X) \(em .I \%ncurses discards the incomplete character. .PP For portability to other implementations, -do not rely upon this behavior. +do not rely upon the foregoing behavior. Check whether a character can be represented as a single byte in the current locale. .bP If it can, call either -.B \%waddch -or \fB\%wadd_wch\fP(3X). +.I \%waddch +or +.IR \%wadd_wch "." .bP If it cannot, use only -\fB\%wadd_wch\fP(3X). -.SS TABSIZE -SVr4 and other versions of -.I curses -implement the -.B \%TABSIZE -variable, -but X/Open Curses does not specify it -(see \fB\%curs_variables\fP(3X)). +.IR \%wadd_wch "." +.SH HISTORY +4BSD (1980) +introduced +.I \%waddch +and its variants. +.PP +SVr3 (1987) +added the +.I \%echochar +and +.I \%wechochar +functions and most of the +.I ACS_ +constants, +except for +.IR \%ACS_GEQUAL "," +.IR \%ACS_LEQUAL "," +.IR \%ACS_NEQUAL "," +.IR \%ACS_PI "," +.IR \%ACS_S3 "," +.IR \%ACS_S7 "," +and +.IR \%ACS_STERLING "." +.PP +.I \%ncurses +1.9.6 (1995) +furnished the remaining +.I ACS_ +constants. .SH SEE ALSO \fB\%curs_add_wch\fP(3X) describes comparable functions of the .I \%ncurses library in its wide-character configuration -.RI ( \%ncursesw ). +.RI \%( ncursesw ). .PP \fB\%curses\fP(3X), \fB\%curs_addchstr\fP(3X), \fB\%curs_addstr\fP(3X), \fB\%curs_attr\fP(3X), +\fB\%curs_bkgd\fP(3X), \fB\%curs_clear\fP(3X), \fB\%curs_inch\fP(3X), \fB\%curs_outopts\fP(3X), diff --git a/contrib/ncurses/man/curs_addchstr.3x b/contrib/ncurses/man/curs_addchstr.3x index 25d322aff0be..99bbc9bcac54 100644 --- a/contrib/ncurses/man/curs_addchstr.3x +++ b/contrib/ncurses/man/curs_addchstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_addchstr.3x,v 1.45 2024/04/20 21:20:07 tom Exp $ -.TH curs_addchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_addchstr.3x,v 1.64 2025/08/16 19:56:13 tom Exp $ +.TH curs_addchstr 3X 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,62 +46,92 @@ .. .SH NAME \fB\%addchstr\fP, -\fB\%addchnstr\fP, \fB\%waddchstr\fP, -\fB\%waddchnstr\fP, \fB\%mvaddchstr\fP, -\fB\%mvaddchnstr\fP, \fB\%mvwaddchstr\fP, +\fB\%addchnstr\fP, +\fB\%waddchnstr\fP, +\fB\%mvaddchnstr\fP, \fB\%mvwaddchnstr\fP \- add a \fIcurses\fR character string to a window .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint addchstr(const chtype *\fIchstr\fP); -\fBint waddchstr(WINDOW *\fIwin\fP, const chtype *\fIchstr\fP); -\fBint mvaddchstr(int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP); -\fBint mvwaddchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP); +\fBint addchstr(const chtype * \fIchstr\fP); +\fBint waddchstr(WINDOW * \fIwin\fP, const chtype * \fIchstr\fP); +\fBint mvaddchstr(int \fIy\fP, int \fIx\fP, const chtype * \fIchstr\fP); +\fBint mvwaddchstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, + const chtype * \fIchstr\fP); .PP -\fBint addchnstr(const chtype *\fIchstr\fP, int \fIn\fP); -\fBint waddchnstr(WINDOW *\fIwin\fP, const chtype *\fIchstr\fP, int \fIn\fP); -\fBint mvaddchnstr(int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP, int \fIn\fP); -\fBint mvwaddchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP, int \fIn\fP); +\fBint addchnstr(const chtype * \fIchstr\fP, int \fIn\fP); +\fBint waddchnstr(WINDOW * \fIwin\fP, const chtype * \fIchstr\fP, int \fIn\fP); +\fBint mvaddchnstr(int \fIy\fP, int \fIx\fP, const chtype * \fIchstr\fP, int \fIn\fP); +\fBint mvwaddchnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, + const chtype * \fIchstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -These functions copy the (null-terminated) -\fIchstr\fP array -into the window image structure -starting at the current cursor position. -.PP -The four functions with \fIn\fP as the last -argument copy at most \fIn\fP elements, -but no more than will fit on the line. -If \fBn\fP=\fB\-1\fP then the whole array is copied, -to the maximum number of characters that will fit on the line. +.B \%waddchstr +copies the string of +.I curses +characters +.I \%chstr +to the window +.IR win "." +A null +.I curses +character terminates the string. +.B \%waddchnstr +does the same, +but copies at most +.I n +characters, +or as many as possible if +.I n +is +.BR \-1 "." +\fB\%ncurses\fP(3X) describes the variants of these functions. .PP -The window cursor is \fInot\fP advanced. -These functions are faster than \fBwaddnstr\fP. -On the other hand: +Because these functions do not call \fB\%waddch\fP(3X) internally, +they are faster than \fB\%waddstr\fP(3X) and \fB\%waddnstr\fP(3X). +On the other hand, +they .bP -they do not perform checking -(such as for the newline, backspace, or carriage return characters), +do not treat the backspace, +carriage return, +or line feed characters specially; .bP -they do not advance the current cursor position, +do not represent unprintable characters with \fB\%unctrl\fP(3X); .bP -they do not expand other control characters to ^-escapes, and +do not update the cursor position to follow the last character written; +and .bP -they truncate the string if it crosses the right margin, -rather than wrapping it around to the new line. +truncate the string at the window's right margin, +rather than wrapping it to the next line and potentially scrolling. .SH RETURN VALUE -All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses does not specify any error conditions. -This implementation returns an error +In +.IR \%ncurses "," +these functions fail if .bP -if the \fIwin\fP parameter is null or +the +.I curses +screen has not been initialized, .bP -if the \fIwchstr\fP parameter is null. +.I chstr +is a null pointer, +or +.bP +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -109,14 +139,24 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All functions except \fBwaddchnstr\fP may be macros. +All of these functions except +.B \%waddchnstr +may be implemented as macros. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 473 +.SH HISTORY +SVr3.1 (1987) +introduced these functions. .SH SEE ALSO \fB\%curs_add_wchstr\fP(3X) describes comparable functions of the .I \%ncurses library in its wide-character configuration -.RI ( \%ncursesw ). +.RI \%( ncursesw ). .PP \fB\%curses\fP(3X), \fB\%curs_addch\fP(3X), diff --git a/contrib/ncurses/man/curs_addstr.3x b/contrib/ncurses/man/curs_addstr.3x index 1244001dbd95..fbfb8e03b23f 100644 --- a/contrib/ncurses/man/curs_addstr.3x +++ b/contrib/ncurses/man/curs_addstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_addstr.3x,v 1.45 2024/04/20 19:18:18 tom Exp $ -.TH curs_addstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_addstr.3x,v 1.71 2025/10/21 00:09:34 tom Exp $ +.TH curs_addstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,53 +46,48 @@ .. .SH NAME \fB\%addstr\fP, -\fB\%addnstr\fP, \fB\%waddstr\fP, -\fB\%waddnstr\fP, \fB\%mvaddstr\fP, -\fB\%mvaddnstr\fP, \fB\%mvwaddstr\fP, +\fB\%addnstr\fP, +\fB\%waddnstr\fP, +\fB\%mvaddnstr\fP, \fB\%mvwaddnstr\fP \- add a string to a \fIcurses\fR window and advance the cursor .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint addstr(const char *\fIstr\fP); -\fBint mvaddstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP); -\fBint mvwaddstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP); -\fBint waddstr(WINDOW *\fIwin\fP, const char *\fIstr\fP); +\fBint addstr(const char * \fIstr\fP); +\fBint waddstr(WINDOW * \fIwin\fP, const char * \fIstr\fP); +\fBint mvaddstr(int \fIy\fP, int \fIx\fP, const char * \fIstr\fP); +\fBint mvwaddstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const char * \fIstr\fP); .PP -\fBint addnstr(const char *\fIstr\fP, int \fIn\fP); -\fBint mvaddnstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP); -\fBint mvwaddnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP); -\fBint waddnstr(WINDOW *\fIwin\fP, const char *\fIstr\fP, int \fIn\fP); +\fBint addnstr(const char * \fIstr\fP, int \fIn\fP); +\fBint waddnstr(WINDOW * \fIwin\fP, const char * \fIstr\fP, int \fIn\fP); +\fBint mvaddnstr(int \fIy\fP, int \fIx\fP, const char * \fIstr\fP, int \fIn\fP); +\fBint mvwaddnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const char * \fIstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -.B waddstr +.B \%waddstr writes the characters of the (null-terminated) string .I str to the window -.IR win . -Its process is similar to calling \fB\%waddch\fP(3X) for each +.IR win , +as if by calling \fB\%waddch\fP(3X) for each .I char in .IR str . -Control characters are processed as in \fB\%waddch\fP(3X). -.PP -.B waddnstr -writes at most +.B \%waddnstr +is similar, +but writes at most .I n -characters, -or until a terminating null character occurs in -.IR str . +characters. If .I n is \-1, -.B -.B waddnstr +.B \%waddnstr writes the entire string. -.PP \fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE These functions return @@ -101,18 +96,26 @@ on success and .B ERR on failure. .PP -X/Open Curses does not specify any error conditions. -.I \%ncurses -returns an error +In +.IR \%ncurses "," +these functions fail if .bP -if the window pointer is -.BR NULL , +the +.I curses +screen has not been initialized, .bP -if the string pointer is -.BR NULL , +.I str +is a null pointer, +.bP +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, or .bP -if an internal \fB\%waddch\fP(3X) call returns an error. +an internal \fB\%waddch\fP(3X) call returns +.BR ERR "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -120,15 +123,35 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All of these functions except \fBwaddnstr\fP may be macros. +All of these functions except +.B \%waddnstr +may be implemented as macros. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 474 +.SH HISTORY +4BSD (1980) +introduced +.I \%waddstr +along with its variants, +the latter defined as macros. +.PP +SVr3.1 (1987) +added +.I \%waddnstr +(and its variants) +redefining +.I \%waddstr +as a macro wrapping it. .SH SEE ALSO \fB\%curs_addwstr\fP(3X) describes comparable functions of the .I \%ncurses library in its wide-character configuration -.RI ( \%ncursesw ). +.RI \%( ncursesw ). .PP \fB\%curses\fP(3X), \fB\%curs_addch\fP(3X), diff --git a/contrib/ncurses/man/curs_addwstr.3x b/contrib/ncurses/man/curs_addwstr.3x index 78d5788ebc22..d618bf837cd2 100644 --- a/contrib/ncurses/man/curs_addwstr.3x +++ b/contrib/ncurses/man/curs_addwstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_addwstr.3x,v 1.37 2024/04/20 19:18:18 tom Exp $ -.TH curs_addwstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_addwstr.3x,v 1.60 2025/03/15 20:41:04 tom Exp $ +.TH curs_addwstr 3X 2025-03-15 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,36 +46,39 @@ .. .SH NAME \fB\%addwstr\fP, -\fB\%addnwstr\fP, \fB\%waddwstr\fP, -\fB\%waddnwstr\fP, \fB\%mvaddwstr\fP, -\fB\%mvaddnwstr\fP, \fB\%mvwaddwstr\fP, +\fB\%addnwstr\fP, +\fB\%waddnwstr\fP, +\fB\%mvaddnwstr\fP, \fB\%mvwaddnwstr\fP \- add a wide-character string to a \fIcurses\fR window and advance the cursor .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint addwstr(const wchar_t *\fIwstr\fP); -\fBint mvaddwstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP); -\fBint mvwaddwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP); -\fBint waddwstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP); +\fBint addwstr(const wchar_t * \fIwstr\fP); +\fBint waddwstr(WINDOW * \fIwin\fP, const wchar_t * \fIwstr\fP); +\fBint mvaddwstr(int \fIy\fP, int \fIx\fP, const wchar_t * \fIwstr\fP); +\fBint mvwaddwstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, + const wchar_t * \fIwstr\fP); .PP -\fBint addnwstr(const wchar_t *\fIwstr\fP, int \fIn\fP); -\fBint mvaddnwstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP); -\fBint mvwaddnwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP); -\fBint waddnwstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP, int \fIn\fP); +\fBint addnwstr(const wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint waddnwstr(WINDOW * \fIwin\fP, const wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint mvaddnwstr(int \fIy\fP, int \fIx\fP, const wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint mvwaddnwstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, + const wchar_t * \fIwstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -.B waddwstr +.B \%waddwstr writes the characters of the (wide-null-terminated) wide-character string .I wstr to the window -.IR win . -Its process is similar to constructing a +.IR win , +as if by +constructing a .I cchar_t for each .I wchar_t @@ -83,26 +86,20 @@ in .IR wstr , then calling \fB\%wadd_wch\fP(3X) with the resulting .IR cchar_t . -.bP -Spacing and non-spacing characters in the string -are processed one at a time, -and -.bP -control characters are processed as in \fB\%wadd_wch\fP(3X). -.PP -.B waddnwstr -writes at most +.I curses +processes spacing and non-spacing characters in +.I wstr +one at a time. +.B \%waddnwstr +is similar, +but writes at most .I n -wide characters, -or until a terminating wide null character occurs in -.IR wstr . +wide characters. If .I n is \-1, -.B -.B waddnwstr +.B \%waddnwstr writes the entire wide string. -.PP \fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE These functions return @@ -111,18 +108,26 @@ on success and .B ERR on failure. .PP -X/Open Curses does not specify any error conditions. -.I \%ncurses -returns an error +In +.IR \%ncurses "," +these functions fail if .bP -if the window pointer is -.BR NULL , +the +.I curses +screen has not been initialized, .bP -if the string pointer is -.BR NULL , +.I wstr +is a null pointer, +.bP +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, or .bP -if an internal \fB\%wadd_wch\fP(3X) call returns an error. +an internal \fB\%wadd_wch\fP(3X) call returns +.BR ERR "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -131,11 +136,27 @@ fail if the position is outside the window boundaries. .SH NOTES All of these functions except -.B waddnwstr +.B \%waddnwstr may be implemented as macros. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 478 +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 +of the same year +specified functions named +.I \%waddwstr +and +.I \%waddnwstr +(and the usual variants). +.\" SVID 4, vol 3., p. 478 +These were later additions to +.RI SVr4. x , +not appearing in the first SVr4 (1989). .SH SEE ALSO \fB\%curs_addstr\fP(3X) describes comparable functions of the .I \%ncurses diff --git a/contrib/ncurses/man/curs_attr.3x b/contrib/ncurses/man/curs_attr.3x index 37774602be8c..99c3941c70d5 100644 --- a/contrib/ncurses/man/curs_attr.3x +++ b/contrib/ncurses/man/curs_attr.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_attr.3x,v 1.105 2024/04/27 17:54:42 tom Exp $ -.TH curs_attr 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_attr.3x,v 1.142 2025/11/12 01:05:49 tom Exp $ +.TH curs_attr 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -142,68 +142,88 @@ of the given window to \fIattrs\fP, with color specified by \fIpair\fP. Use \fBwattr_get\fP to retrieve attributes for the given window. .PP Use \fBattr_on\fP and \fBwattr_on\fP to turn on window attributes, i.e., -values OR'd together in \fIattr\fP, +values logically \*(``or\*(''-ed together in \fIattr\fP, without affecting other attributes. Use \fBattr_off\fP and \fBwattr_off\fP to turn off window attributes, -again values OR'd together in \fIattr\fP, +again values logically \*(``or\*(''-ed together in \fIattr\fP, without affecting other attributes. .\" --------------------------------------------------------------------------- .SS "Legacy Window Attributes" The X/Open window attribute routines which \fIset\fP or \fIget\fP, turn \fIon\fP or \fIoff\fP are extensions of older routines -which assume that color pairs are OR'd into the attribute parameter. +which assume that color pairs are logically \*(``or\*(''-ed +into the attribute parameter. These newer routines use similar names, because X/Open simply added an underscore (\fB_\fP) for the newer names. .PP -The \fBint\fP datatype used in the legacy routines is treated as if -it is the same size as \fBchtype\fP (used by \fBaddch\fP(3X)). +The +.I int +datatype used in the legacy routines is treated as if +it is the same size as +.I \%chtype +(used by \fBaddch\fP(3X)). It holds the common video attributes (such as bold, reverse), as well as a few bits for color. Those bits correspond to the \fBA_COLOR\fP symbol. -The \fBCOLOR_PAIR\fP macro provides a value which can be OR'd into -the attribute parameter. +The \fBCOLOR_PAIR\fP macro provides a value which can be +logically \*(``or\*(''-ed into the attribute parameter. For example, as long as that value fits into the \fBA_COLOR\fP mask, then these calls produce similar results: .PP .RS 4 .EX +.nf attrset(A_BOLD | COLOR_PAIR(\fIpair\fP)); attr_set(A_BOLD, \fIpair\fP, NULL); +.fi .EE .RE .PP However, if the value does not fit, then the \fBCOLOR_PAIR\fP macro uses only the bits that fit. For example, -because in \fI\%ncurses\fP \fBA_COLOR\fP has eight (8) bits, +because in +.I \%ncurses +\fBA_COLOR\fP has eight (8) bits, then \fBCOLOR_PAIR(\fI259\fB)\fR is 4 (i.e., 259 is 4 more than the limit 255). .PP -The \fBPAIR_NUMBER\fP macro extracts a pair number from an \fBint\fP -(or \fBchtype\fP). +The \fBPAIR_NUMBER\fP macro extracts a pair number from an +.I int +(or +.IR \%chtype ")." For example, the \fIinput\fP and \fIoutput\fP values in these statements would be the same: .PP .RS 4 .EX +.nf int value = A_BOLD | COLOR_PAIR(\fIinput\fP); int \fIoutput\fP = PAIR_NUMBER(value); +.fi .EE .RE .PP -The \fBattrset\fP routine is a legacy feature predating SVr4 curses -but kept in X/Open Curses for the same reason that SVr4 curses kept it: +The \fBattrset\fP routine is a legacy feature predating SVr4 +.I curses +but kept in X/Open Curses for the same reason that SVr4 +.I curses +kept it: compatibility. .PP The remaining \fBattr\fP* functions operate exactly like the corresponding -\fBattr_\fP* functions, except that they take arguments of type \fBint\fP -rather than \fBattr_t\fP. +\fBattr_\fP* functions, except that they take arguments of type +.I int +rather than +.IR \%attr_t "." .PP There is no corresponding \fB\%attrget\fP function as such in X/Open Curses, -although \fI\%ncurses\fP provides \fB\%getattrs\fP +although +.I \%ncurses +provides \fB\%getattrs\fP (see \fB\%curs_legacy\fP(3X)). .\" --------------------------------------------------------------------------- .SS "Change Character Rendition" @@ -240,11 +260,18 @@ there is no ambiguity about the way the attributes might be combined with a color pair. .\" --------------------------------------------------------------------------- .SS "Video Attributes" -The following video attributes, defined in \fB<curses.h>\fP, can be passed to -the routines \fBattron\fP, \fBattroff\fP, and \fBattrset\fP, or OR'd with the -characters passed to \fBaddch\fP (see \fBcurs_addch\fP(3X)). +The following video attributes, +defined in +.IR \%curses.h "," +can be passed to +.BR \%attron "," +.BR \%attroff "," +.BR \%attrset "," +and +logically \*(``or\*(''-ed with characters passed to \fBaddch\fP(3X). .PP -.ne 15 +.if t .ne 15 +.if n .ne 16 .RS .TS Lb Lb @@ -252,9 +279,7 @@ Lb Lx. Name Description _ A_NORMAL Normal display (no highlight) -A_STANDOUT T{ -Best highlighting mode of the terminal -T} +A_STANDOUT Best highlighting mode available A_UNDERLINE Underlining A_REVERSE Reverse video A_BLINK Blinking @@ -264,16 +289,20 @@ A_PROTECT Protected mode A_INVIS Invisible or blank mode A_ALTCHARSET Alternate character set A_ITALIC Italics (non-X/Open extension) -A_CHARTEXT Bit-mask to extract a character -A_COLOR T{ -Bit-mask to extract a color (legacy routines) -T} +A_ATTRIBUTES Mask to extract character code +A_CHARTEXT Mask to extract attributes +A_COLOR Mask to extract color pair identifier .TE .RE .PP -These video attributes are supported by \fBattr_on\fP and related functions -(which also support the attributes recognized by \fBattron\fP, etc.): +.BR \%attr_on "," +.BR \%attr_off "," +and +.B \%attr_set +support the foregoing as well as the following additional attributes. .PP +.if t .ne 7 +.if n .ne 8 .RS .TS Lb Lb @@ -288,25 +317,40 @@ WA_TOP Top highlight WA_VERTICAL Vertical highlight .TE .RE -.PP -The return values of many of these routines are not meaningful (they are -implemented as macro-expanded assignments and simply return their argument). -The SVr4 manual page claims (falsely) that these routines always return \fB1\fP. .\" --------------------------------------------------------------------------- .SH RETURN VALUE -All routines return the integer \fBOK\fP on success, or \fBERR\fP on failure. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses does not specify any error conditions. +In +.IR \%ncurses "," +they return +.B ERR +if +.I win +is +.IR NULL "." .PP -This implementation -.bP -returns an error if the window pointer is null. -.bP -returns an error if the color pair parameter -for \fBwcolor_set\fP is outside the range 0..COLOR_PAIRS\-1. -.bP -does not return an error if either of the parameters of \fBwattr_get\fP -used for retrieving attribute or color pair values is \fBNULL\fP. +.B \%wcolor_set +returns +.B ERR +if +.I pair +is outside the range +.BR 0 .\|. COLOR_PAIRS\-1 . +.PP +.B \%wattr_get +does +.I not +fail if its +.I \%attrs +or +.I \%pair +parameter is +.IR NULL "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -315,20 +359,43 @@ fail if the position is outside the window boundaries. .\" --------------------------------------------------------------------------- .SH NOTES -These functions may be macros: -.sp -.RS -\fBattroff\fP, \fBwattroff\fP, \fBattron\fP, \fBwattron\fP, -\fBattrset\fP, \fBwattrset\fP, \fBstandend\fP and \fBstandout\fP. -.RE +.BR \%attr_on "," +.BR \%attr_off "," +.BR \%attr_set "," +.BR \%wattr_set "," +.BR \%chgat "," +.BR \%mvchgat "," +.BR \%mvwchgat "," +.BR \%wchgat "," +and +.B \%color_set +are part of +.IR \%ncurses "'s" +wide-character API, +and are not available in its non-wide-character configuration. .PP -Color pair values can only be OR'd with attributes if the pair -number is less than 256. +.BR \%attron "," +.BR \%wattron "," +.BR \%attroff "," +.BR \%wattroff "," +.BR \%attrset "," +.BR \%wattrset "," +.BR \%standout "," +and +.B \%standend +may be implemented as macros. +.PP +Color pair values may be logically \*(``or\*(''-ed with attributes +if the pair number is less than 256. The alternate functions such as \fBcolor_set\fP can pass a color pair value directly. -However, \fI\%ncurses\fP ABI 4 and 5 simply OR this value +However, +.I \%ncurses +ABI 4 and 5 simply logically \*(``or\*('' this value within the alternate functions. -You must use \fI\%ncurses\fP ABI 6 to support more than 256 color pairs. +You must use +.I \%ncurses +ABI 6 to support more than 256 color pairs. .\" --------------------------------------------------------------------------- .SH EXTENSIONS This implementation provides the \fBA_ITALIC\fP attribute for terminals @@ -342,32 +409,55 @@ This implementation makes the assumption that .PP Each of the functions added by XSI Curses has a parameter \fIopts\fP, which X/Open Curses still (after more than twenty years) documents -as reserved for future use, saying that it should be \fBNULL\fP. +as reserved for future use, saying that it should be +.IR NULL "." This implementation uses that parameter in ABI 6 for the functions which have a color pair parameter to support \fIextended color pairs\fP: .bP For functions which modify the color, e.g., \fBwattr_set\fP and \fBwattr_on\fP, -if \fIopts\fP is set it is treated as a pointer to \fBint\fP, -and used to set the color pair instead of the \fBshort\fP \fIpair\fP parameter. +if \fIopts\fP is set it is treated as a pointer to +.IR int "," +and used to set the color pair instead of the +.I short +.I pair +parameter. .bP For functions which retrieve the color, e.g., \fBwattr_get\fP, -if \fIopts\fP is set it is treated as a pointer to \fBint\fP, -and used to retrieve the color pair as an \fBint\fP value, +if \fIopts\fP is set it is treated as a pointer to +.IR int "," +and used to retrieve the color pair as an +.I int +value, in addition to -retrieving it via the standard pointer to \fBshort\fP parameter. +retrieving it via the standard pointer to +.I short +parameter. .bP For functions which turn attributes off, e.g., \fBwattr_off\fP, -the \fIopts\fP parameter is ignored except -except to check that it is \fBNULL\fP. +the \fIopts\fP parameter is ignored except to check that it is +.IR NULL "." .\" --------------------------------------------------------------------------- .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +These functions are described in X/Open Curses Issue\ 4. +It specifies no error conditions for them. +.PP The standard defined the dedicated type for highlights, -\fBattr_t\fP, which was not defined in SVr4 curses. -The functions taking \fBattr_t\fP arguments were not supported under SVr4. +.IR \%attr_t "," +which was not defined in SVr4 +.IR curses "." +The functions taking +.I \%attr_t +arguments were not supported under SVr4. +.PP +SVr4 describes the functions not taking +.I \%attr_t +or +.I pair +arguments as always returning +.BR 1 "." \" Courier roman in source; SVID 4, vol. 3, p. 480 .PP Very old versions of this library did not force an update of the screen when changing the attributes. @@ -378,7 +468,9 @@ X/Open Curses states that whether the traditional functions \fBA_BLINK\fP, \fBA_BOLD\fP, \fBA_DIM\fP, \fBA_REVERSE\fP, \fBA_STANDOUT\fP, or \fBA_UNDERLINE\fP is \*(``unspecified\*(''. Under this implementation as well as -SVr4 curses, these functions correctly manipulate all other highlights +SVr4 +.IR curses "," +these functions correctly manipulate all other highlights (specifically, \fBA_ALTCHARSET\fP, \fBA_PROTECT\fP, and \fBA_INVIS\fP). .PP X/Open Curses added these entry points: @@ -397,13 +489,11 @@ The older macros have direct counterparts in the newer set of names: .ne 9 .TS Lb Lb -Lb Lx. +Lb L . Name Description _ WA_NORMAL Normal display (no highlight) -WA_STANDOUT T{ -Best highlighting mode of the terminal -T} +WA_STANDOUT Best highlighting mode available WA_UNDERLINE Underlining WA_REVERSE Reverse video WA_BLINK Blinking @@ -423,18 +513,29 @@ information. .bP However, in some implementations, those symbols have unrelated values. .IP -For example, the Solaris \fIxpg4\fP (X/Open) curses declares -\fBattr_t\fP to be an unsigned short integer (16-bits), -while \fBchtype\fP is a unsigned integer (32-bits). +For example, the Solaris \fIxpg4\fP (X/Open) +.I curses +declares +.I \%attr_t +to be an unsigned short integer (16-bits), +while +.I \%chtype +is a unsigned integer (32-bits). The \fBWA_\fP symbols in this case are different from the \fBA_\fP symbols because they are used for a smaller datatype which does not represent \fBA_CHARTEXT\fP or \fBA_COLOR\fP. .IP In this implementation (as in many others), the values happen to be the same because it simplifies copying information between -\fBchtype\fP and \fBcchar_t\fP variables. +.I \%chtype +and +.I \%cchar_t +variables. .bP -Because \fI\%ncurses\fP's \fBattr_t\fP can hold a color pair +Because +.IR \%ncurses 's +.I \%attr_t +can hold a color pair (in the \fBA_COLOR\fP field), a call to \fBwattr_on\fP, @@ -444,7 +545,8 @@ may alter the window's color. If the color pair information in the attribute parameter is zero, no change is made to the window's color. .IP -This is consistent with SVr4 curses; +This is consistent with SVr4 +.IR curses ";" X/Open Curses does not specify this. .PP The X/Open Curses extended conformance level adds new highlights @@ -455,62 +557,123 @@ no known terminal provides these highlights (i.e., via the \fBsgr1\fP capability). .\" --------------------------------------------------------------------------- .SH HISTORY -X/Open Curses is largely based on SVr4 curses, -adding support for \*(``wide-characters\*('' (not specific to Unicode). -Some of the X/Open differences from SVr4 curses address the way -video attributes can be applied to wide-characters. -But aside from that, \fBattrset\fP and \fBattr_set\fP are similar. -SVr4 curses provided the basic features for manipulating video attributes. -However, earlier versions of curses provided a part of these features. +4BSD (1980) +used a +.I char +to represent each cell of the terminal screen. +It assumed 7-bit character codes, +employing the eighth bit of a byte to represent a +.I \%standout +attribute +(often implemented as bold and/or reverse video). +It introduced +.IR \%standout "," +.IR \%standend "," +.IR \%wstandout "," +and +.I \%wstandend +functions to manipulate this bit. +Despite their inflexibility, +they carried over into System\ V +.I curses +and ultimately X/Open Curses +due to their pervasive use in legacy applications. +While some 1980s terminals supported a variety of video attributes, +BSD +.I curses +could do nothing with them. .PP -As seen in 2.8BSD, curses assumed 7-bit characters, -using the eighth bit of a byte to represent the \fIstandout\fP -feature (often implemented as bold and/or reverse video). -The BSD curses library provided functions \fBstandout\fP and \fBstandend\fP -which were carried along into X/Open Curses due to their pervasive use -in legacy applications. +SVr2 (1984) +provided an improved +.I curses +library, +introducing +.I \%chtype +to create the abstract notion of a +.I curses +character; +this was by default an +.IR "unsigned short" "," +with a provision for compile-time redefinition to other integral types +(a freedom not necessarily available to users of shared libraries, +and in any event a source license was necessary to exercise it). +It added the functions +.IR \%attron "," +.IR \%attroff "," +.IR \%attrset "," +.IR \%wattron "," +.IR \%wattroff "," +and +.IR \%wattrset "," +and defined the +.I A_ +macros listed above +(except for +.I \%A_ITALIC +and +.IR \%A_COLOR ")" +for use by applications to manipulate other attributes. +The values of these macros +were not necessarily the same in different systems, +even among those certified as System\ V. .PP -Some terminals in the 1980s could support a variety of video attributes, -although the BSD curses library could do nothing with those. -System V (1983) provided an improved curses library. -It defined the \fBA_\fP symbols for use by applications to manipulate the -other attributes. -There are few useful references for the chronology. +SVr3.2 (1988) +added the +.I \%A_COLOR +macro along with a color system; +see \fBcurs_color\fP(3X). .PP -Goodheart's book -\fIUNIX Curses Explained\fP (1991) describes SVr3 (1987), -commenting on several functions: -.bP -the \fBattron\fP, \fBattroff\fP, \fBattrset\fP functions -(and most of the functions found in SVr4 but not in BSD curses) were -introduced by System V, -.bP -the alternate character set feature with \fBA_ALTCHARSET\fP was -added in SVr2 and improved in SVr3 (by adding \fBacs_map[]\fP), -.bP -\fBstart_color\fP and related color-functions were introduced by System V.3.2, -.bP -pads, soft-keys were added in SVr3, and -.PP -Goodheart did not mention the background character or the \fBcchar_t\fP type. -Those are respectively SVr4 and X/Open features. -He did mention the \fBA_\fP constants, but did not indicate their values. -Those were not the same in different systems, -even for those marked as System V. +X/Open Curses Issue\ 4 (1995) is largely based on SVr4 +.IR curses "," +but recognized that the +.I \%wchar_t +type of ISO C95 was intended to house only a single character code, +not a sequence of codes combining with a base character, +let alone could it reliably offer room for a color pair identifier +and a set of attribute bits with a potential for further growth \(em +thus the standard invented the +.I curses +complex character type +.I \%cchar_t +and a separate type +.I \%attr_t +for storage of attribute bits. +The new types brought along several new functions to manipulate them, +some corresponding to existing +.IR chtype -based +functions +.RI \%( attr_on , +.IR \%attr_off "," +.IR \%attr_set "," +.IR \%wattr_on "," +.IR \%wattr_off "," +and +.IR \%wattr_set ")," +and some new +.RI \%( chgat +and its variants, +.IR \%color_set "," +and +.IR \%wcolor_set ")." .PP -Different Unix systems used different sizes for the bit-fields in \fBchtype\fP -for \fIcharacters\fP and \fIcolors\fP, and took into account the different -integer sizes (32-bit versus 64-bit). +Different Unix systems used differently sized bit fields in +.I \%chtype +for the character code and the color pair identifier, +and took into account platforms' different integer sizes +(32- versus 64-bit). .PP -This table showing the number of bits for \fBA_COLOR\fP -and \fBA_CHARTEXT\fP -was gleaned from the curses header files for -various operating systems and architectures. -The inferred architecture and notes reflect -the format and size of the defined constants +The following table showing the number of bits for +.I \%A_COLOR +and +.I \%A_CHARTEXT +was gleaned from the +.I curses +header files for various operating systems and architectures. +The inferred architecture and notes +reflect the format and size of the defined constants as well as clues such as the alternate character set implementation. A 32-bit library can be used on a 64-bit system, -but not necessarily the reverse. +but not necessarily the converse. .PP .TS Lb Lb Lb Cb S Lb @@ -529,7 +692,7 @@ _ 1996 AIX 4.2 32 7 16 X/Open \fIcurses\fP 1996 OSF/1 r4 32 6 16 X/Open \fIcurses\fP 1997 HP-UX 11.00 32 6 8 X/Open \fIcurses\fP -2000 U/Win 32/64 7/31 16 uses \fIchtype\fP +2000 UWIN 32/64 7/31 16 uses \fIchtype\fP .TE .PP Notes: @@ -540,54 +703,85 @@ Regarding HP-UX, HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors in 1996. .bP HP-UX 10.30 (1997) marked \*(``curses_colr\*('' obsolete. -That version of curses was dropped with HP-UX 11.30 in 2006. +That version of +.I curses +was dropped with HP-UX 11.30 in 2006. .PP Regarding OSF/1 (and Tru64), .bP These used 64-bit hardware. -Like \fI\%ncurses\fP, -the OSF/1 curses interface is not customized for 32-bit and 64-bit +Like +.IR \%ncurses "," +the OSF/1 +.I curses +interface is not customized for 32-bit and 64-bit versions. .bP Unlike other systems which evolved from AT&T code, -OSF/1 provided a new implementation for X/Open curses. +OSF/1 provided a new implementation for X/Open Curses. .PP Regarding Solaris, .bP The initial release of Solaris was in 1992. .bP -The \fIxpg4\fP (X/Open) curses was developed by MKS from 1990 to 1995. +Its XPG4 +(X/Open Curses-conforming) +.I xcurses +library was developed by Mortice Kern Systems from 1990 to 1995. Sun's copyright began in 1996. .bP -Sun updated the X/Open curses interface +Sun updated the X/Open Curses interface after 64-bit support was introduced in 1997, -but did not modify the SVr4 curses interface. +but did not modify the SVr4 +.I curses +interface. .PP -Regarding U/Win, +Regarding UWIN, .bP -Development of the curses library began in 1991, stopped in 2000. +Development of the +.I curses +library began in 1991, stopped in 2000. .bP Color support was added in 1998. .bP -The library uses only \fBchtype\fP (no \fBcchar_t\fP). +The library uses only +.I \%chtype +(not +.IR \%cchar_t ")." .RE .PP -Once X/Open curses was adopted in the mid-1990s, the constraint of -a 32-bit interface with many colors and wide-characters for \fBchtype\fP +Once X/Open Curses was adopted in the mid-1990s, the constraint of +a 32-bit interface with many colors and wide-characters for +.I \%chtype became a moot point. -The \fBcchar_t\fP structure (whose size and -members are not specified in X/Open Curses) could be extended as needed. +The +.I \%cchar_t +structure +(whose size and members are not specified in X/Open Curses) +could be extended as needed. .PP -Other interfaces are rarely used now: +Other interfaces are rarely used now. .bP -BSD curses was improved slightly in 1993/1994 using Keith Bostic's -modification to make the library 8-bit clean for \fBnvi\fP(1). -He moved \fIstandout\fP attribute to a structure member. -.IP -The resulting 4.4BSD curses was replaced by \fI\%ncurses\fP over the -next ten years. +BSD +.I curses +was improved slightly in 1993/1994 using Keith Bostic's +modification to make the library 8-bit clean for \fInvi\fP(1). +He moved the +.I \%standout +attribute to a structure member. +The resulting 4.4BSD +.I curses +was replaced by +.I \%ncurses +over the next ten years. .bP -U/Win is rarely used now. +UWIN has been defunct since 2012. +.PP +.I \%ncurses +6.0 (2015) +added the +.I A_ITALIC +macro. .\" --------------------------------------------------------------------------- .SH SEE ALSO \fB\%curses\fP(3X), diff --git a/contrib/ncurses/man/curs_beep.3x b/contrib/ncurses/man/curs_beep.3x index 9806f42b3ad8..3221dfd4955c 100644 --- a/contrib/ncurses/man/curs_beep.3x +++ b/contrib/ncurses/man/curs_beep.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2005,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_beep.3x,v 1.29 2024/04/20 21:20:07 tom Exp $ -.TH curs_beep 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_beep.3x,v 1.42 2025/02/01 23:46:11 tom Exp $ +.TH curs_beep 3X 2025-02-01 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fB\%beep\fP, \fB\%flash\fP \- @@ -41,23 +41,70 @@ ring the (visual) bell of the terminal with \fIcurses\fR \fBint flash(void); .fi .SH DESCRIPTION -The \fBbeep\fP and \fBflash\fP routines are used to alert the terminal user. -The routine \fBbeep\fP sounds an audible alarm on the terminal, if possible; -otherwise it flashes the screen (visible bell). -The routine \fBflash\fP -flashes the screen, and if that is not possible, sounds the alert. -If neither -alert is possible, nothing happens. -Nearly all terminals have an audible alert -(bell or beep), but only some can flash the screen. +.B beep +and +.B flash +alert the terminal user: +the former by sounding the terminal's audible alarm, +and the latter by visibly attracting attention. +Commonly, +a terminal implements a visual bell by momentarily reversing the +character foreground and background colors on the entire display; +even a monochrome device can do this. +These functions each attempt the other alert type if the one requested +is unavailable. +If neither is available, +.I curses +performs no action. +Nearly all terminals have an audible alert mechanism such as a bell or +piezoelectric buzzer, +but only some can flash the screen. .SH RETURN VALUE -These routines return \fBOK\fP if they succeed in beeping or flashing, -\fBERR\fP otherwise. +These functions return +.B OK +on success and +.B ERR +on failure. +.PP +In +.IR \%ncurses "," +.B beep +and +.B flash +return +.B OK +if the terminal type supports the corresponding capability: +.B bell +.RB ( bel ) +for +.B beep +and +.B \%flash_screen +.RB ( flash ) +for +.BR flash "." +Otherwise they return +.BR ERR "." .SH EXTENSIONS -SVr4's beep and flash routines always returned \fBOK\fP, so it was not -possible to tell when the beep or flash failed. +In +.IR \%ncurses "," +these functions can return +.BR ERR "." .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. -Like SVr4, it specifies that they always return \fBOK\fP. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +On SVr4 +.IR curses "," +they always return +.IR OK "," +and X/Open Curses specifies them as doing so. +.SH HISTORY +SVr2 (1984) +introduced +.I beep +and +.IR flash "." .SH SEE ALSO -\fB\%curses\fP(3X) +\fB\%curses\fP(3X), +\fB\%terminfo\fP(5) diff --git a/contrib/ncurses/man/curs_bkgd.3x b/contrib/ncurses/man/curs_bkgd.3x index 25ba1f9f72c8..e61b48bce615 100644 --- a/contrib/ncurses/man/curs_bkgd.3x +++ b/contrib/ncurses/man/curs_bkgd.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_bkgd.3x,v 1.61 2024/04/20 18:54:36 tom Exp $ -.TH curs_bkgd 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_bkgd.3x,v 1.76 2025/08/23 22:39:20 tom Exp $ +.TH curs_bkgd 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -64,37 +64,55 @@ manipulate background of a \fIcurses\fR window of characters \fBchtype getbkgd(WINDOW *\fIwin\fP); .fi .SH DESCRIPTION -The -.I background -of a +Every .I curses -window -(in the library's non-\*(``wide\*('' configuration) -is a -.I \%chtype -combining a set of attributes -(see \fB\%curs_attr\fP(3X)) -with a character called the -.I "blank character." -.PP -The blank character is a spacing character that populates a window's -character cells when their contents are erased without replacement. -The background's attributes are combined with all non-blank characters -written to the window, -as with the \fB\%waddch\fP(3X) and \fB\%winsch\fP(3X) families of -functions. +window has a +.I "background character" +property: +in the library's non-wide-character configuration, +it is a +.I curses +character +.RI \%( chtype ) +that combines a set of attributes +(and, +if colors are enabled, +a color pair identifier) +with a character code. +When erasing +(parts of) +a window, +.I curses +replaces the erased cells with the background character. .PP -The blank character and attributes of the background combine with -characters written to the window as described below. -The background becomes a property of the character and moves with it -through any scrolling and insert/delete line/character operations. +.I curses +also uses the background character when writing characters to a +populated window. +.bP +The attribute part of the background character combines with all +non-blank character cells in the window, +as populated by the \fB\%waddch\fP(3X) and \fB\%winsch\fP(3X) +families of functions +(and those that call them). +.bP +Both the character code and attributes of the background character +combine with blank character cells in the window. .PP -To the extent possible on a given terminal, -the attribute part of the background is displayed as the graphic -rendition of the character put on the screen. +The background character's set of attributes becomes a property +of the character cell +and move with it through any scrolling +and insert/delete line/character operations. +To the extent possible on the terminal type, +.I curses +displays the attributes of the background character +as the graphic rendition of a character cell on the display. .SS "bkgd, wbkgd" -\fB\%bkgd\fP and \fB\%wbkgd\fP set the background property of -\fB\%stdscr\fP or the specified window and then apply this setting to +.B \%bkgd +and +.B \%wbkgd +set the background property of +.B \%stdscr +or the specified window and then apply this setting to every character cell in that window. .bP The rendition of every character in the window changes to the new @@ -106,19 +124,19 @@ it changes to the new background character. .I \%ncurses updates the rendition of each character cell by comparing the character, non-color attributes, -and colors. -The library applies to following procedure to each cell in the window, +and color pair selection. +The library applies the following procedure to each cell in the window, whether or not it is blank. .bP .I \%ncurses -first compares the cell's character to the previously specified blank -character; +first compares the cell's character to the previously specified +background character; if they match, .I \%ncurses -writes the new blank character to the cell. +writes the new background character to the cell. .bP .I \%ncurses -then checks if the cell uses color, +then checks whether the cell uses color; that is, its color pair value is nonzero. If not, @@ -141,85 +159,146 @@ updates only the non-color attributes, first removing those that may have come from the current background, and then adding attributes from the new background. .PP +If the new background's character is non-spacing +(for example, +if it is a control character), .I \%ncurses -treats a background character value of zero (0) as a blank character. +retains the existing background character, +except for one special case: +.I \%ncurses +treats a background character code of zero (0) as a space. .PP If the terminal does not support color, or if color has not been initialized with \fB\%start_color\fP(3X), .I \%ncurses -ignores the new background character's color attribute. +ignores the new background character's color pair selection. .SS "bkgdset, wbkgdset" -\fB\%bkgdset\fP and \fB\%wbkgdset\fP manipulate the background of -the applicable window, -without updating the character cells as \fB\%bkgd\fP and -\fB\%wbkgd\fP do; +.B \%bkgdset +and +.B \%wbkgdset +manipulate the background of the applicable window, +without updating the character cells as +.B \%bkgd +and +.B \%wbkgd +do; only future writes reflect the updated background. .SS getbkgd -\fB\%getbkgd\fP obtains the given window's background character and -attribute combination. +.B \%getbkgd +returns the given window's background character, +attributes, +and color pair as a +.IR \%chtype "." .SH RETURN VALUE -Functions returning an \fIint\fP return \fBOK\fP on success. -\fB\%bkgd\fP returns \fBERR\fP if the library has not been initialized. -\fB\%wbkgd\fP and \fB\%getbkgd\fP return \fBERR\fP if a \fI\%WINDOW\fP -pointer argument is null. +.B \%bkgdset +and +.B \%wbkgdset +do not return a value. .PP -\fB\%bkgdset\fP and \fBwbkgdset\fP do not return a value. +Functions returning an +.I int +return +.B ERR +upon failure and +.B OK +upon success. +In +.IR \%ncurses "," +failure occurs if +.bP +the +.I curses +screen has not been initialized, +or +.bP +.I win +is +.IR NULL "." .PP -\fB\%getbkgd\fP returns a window's background character and attribute -combination. +.BR \%getbkgd 's +return value is as described above. .SH NOTES Unusually, -there is no \fB\%wgetbkgd\fP function; -\fB\%getbkgd\fP behaves as one would expect \fB\%wgetbkgd\fP to, -accepting a \fI\%WINDOW\fP pointer argument. +there is no +.B \%wgetbkgd +function; +.B \%getbkgd +behaves as one would expect +.B \%wgetbkgd +to, +accepting a +.I \%WINDOW +pointer argument. .PP -\fB\%bkgd\fP and -\fB\%bkgdset\fP +.B \%bkgd +and +.B \%bkgdset may be implemented as macros. .PP X/Open Curses mentions that the character part of the background must be a single-byte value. -\fI\%ncurses\fP, -like SVr4 \fIcurses\fP, -checks to ensure that, -and will reuse the old background character if the check fails. +.IR \%ncurses "," +like SVr4 +.IR curses "," +checks to ensure that it is, +and retains the existing background character if the check fails. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. -It specifies that -\fB\%bkgd\fP, -\fB\%wbkgd\fP, +X/Open Curses Issue\ 4 describes these functions. +It indicates that +.IR bkgd "," +.IR wbkgd "," and -\fB\%getbkgd\fP -return \fBERR\fP on failure +.I getbkgd +return +.I ERR +on failure (in the case of the last, this value is cast to .IR \%chtype ), -but describes no failure conditions. +but specifies no error conditions for them. .PP -The SVr4.0 manual says that \fB\%bkgd\fP and \fB\%wbkgd\fP may return -\fBOK\fP -\*(``or a non-negative integer if \fB\%immedok\fP is set\*('', -which refers to the return value from \fB\%wrefresh\fP(3X), -used to implement the immediate repainting. -SVr4 \fIcurses\fP's \fB\%wrefresh\fP returns the number of characters -written to the screen during the refresh. -\fI\%ncurses\fP does not do that. +SVr4 documentation +.\" SVID 4, vol. 3, p. 482 +says that +.I \%bkgd +and +.I \%wbkgd +return +.I OK +\*(``or a non-negative integer if +.I \%immedok() \" Courier roman in source +is set\*('', +referring to the return value from +.IR \%wrefresh "," +which in SVr4 returns a count of characters +written to the window if its +.I \%immedok +property is set; +.\" ...though its wrefresh() man page says nothing about immedok()... +in +.IR \%ncurses "," +it does not. .PP Neither X/Open Curses nor the SVr4 manual pages detail how the rendition -of characters on the screen updates when \fB\%bkgd\fP or \fB\%wbkgd\fP +of characters in the window updates when +.I \%bkgd +or +.I \%wbkgd changes the background character. -.IR \%ncurses , +.IR \%ncurses "," like SVr4 -.IR curses , +.IR curses "," does not -(in its non-\*(``wide\*('' configuration) +(in its non-wide-character configuration) store the background and window attribute contributions to each character cell separately. +.SH HISTORY +SVr3.1 (1987) +introduced these functions. .SH SEE ALSO \fB\%curs_bkgrnd\fP(3X) describes the corresponding functions in the -\*(``wide\*('' configuration of -.IR \%ncurses . +wide configuration of +.IR \%ncurses "." .PP \fB\%curses\fP(3X), \fB\%curs_addch\fP(3X), diff --git a/contrib/ncurses/man/curs_bkgrnd.3x b/contrib/ncurses/man/curs_bkgrnd.3x index 2551924c11a3..1239a7a924c1 100644 --- a/contrib/ncurses/man/curs_bkgrnd.3x +++ b/contrib/ncurses/man/curs_bkgrnd.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,19 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_bkgrnd.3x,v 1.42 2024/04/20 18:54:36 tom Exp $ -.TH curs_bkgrnd 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" -.ie \n(.g \{\ -.ds `` \(lq -.ds '' \(rq -.\} -.el \{\ -.ie t .ds `` `` -.el .ds `` "" -.ie t .ds '' '' -.el .ds '' "" -.\} -. +.\" $Id: curs_bkgrnd.3x,v 1.60 2025/08/23 22:39:20 tom Exp $ +.TH curs_bkgrnd 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -66,37 +55,55 @@ manipulate background of a \fIcurses\fP window of wide characters \fBint wgetbkgrnd(WINDOW *\fIwin\fP, cchar_t *\fIwch\fP); .fi .SH DESCRIPTION -The -.I background -of a +Every .I curses -window -(in the library's \*(``wide\*('' configuration) -is a -.I \%cchar_t -combining a set of attributes -(see \fB\%curs_attr\fP(3X)) -with a complex character called the -.I "blank character." -.PP -The blank character is a spacing character that populates a window's -character cells when their contents are erased without replacement. -The background's attributes are combined with all non-blank characters -written to the window, -as with the \fB\%wadd_wch\fP(3X) and \fB\%wins_wch\fP(3X) families of -functions. +window has a +.I "background character" +property: +in the library's wide configuration, +it is a +.I curses +complex character +.RI \%( cchar_t ) +that combines a set of attributes +(and, +if colors are enabled, +a color pair identifier) +with a character code. +When erasing +(parts of) +a window, +.I curses +replaces the erased cells with the background character. .PP -The blank character and attributes of the background combine with -characters written to the window as described below. -The background becomes a property of the character and moves with it -through any scrolling and insert/delete line/character operations. +.I curses +also uses the background character when writing characters to a +populated window. +.bP +The attribute part of the background character combines with all +non-blank character cells in the window, +as populated by the \fB\%wadd_wch\fP(3X) and \fB\%wins_wch\fP(3X) +families of functions +(and those that call them). +.bP +Both the character code and attributes of the background character +combine with blank character cells in the window. .PP -To the extent possible on a given terminal, -the attribute part of the background is displayed as the graphic -rendition of the character put on the screen. +The background character's set of attributes becomes a property +of the character cell +and move with it through any scrolling +and insert/delete line/character operations. +To the extent possible on the terminal type, +.I curses +displays the attributes of the background character +as the graphic rendition of a character cell on the display. .SS "bkgrnd, wbkgrnd" -\fB\%bkgrnd\fP and \fB\%wbkgrnd\fP set the background property of -\fB\%stdscr\fP or the specified window and then apply this setting to +.B \%bkgrnd +and +.B \%wbkgrnd +set the background property of +.B \%stdscr +or the specified window and then apply this setting to every character cell in that window. .bP The rendition of every character in the window changes to the new @@ -108,19 +115,19 @@ it changes to the new background character. .I \%ncurses updates the rendition of each character cell by comparing the character, non-color attributes, -and colors. +and color pair selection. The library applies to following procedure to each cell in the window, whether or not it is blank. .bP .I \%ncurses -first compares the cell's character to the previously specified blank -character; +first compares the cell's character to the previously specified +background character; if they match, .I \%ncurses -writes the new blank character to the cell. +writes the new background character to the cell. .bP .I \%ncurses -then checks if the cell uses color, +then checks whether the cell uses color; that is, its color pair value is nonzero. If not, @@ -143,73 +150,100 @@ updates only the non-color attributes, first removing those that may have come from the current background, and then adding attributes from the new background. .PP +If the new background's character is non-spacing, +.I \%ncurses +reuses the old background character, +except for one special case: .I \%ncurses -treats a background character value of zero (0) as a blank character. +treats a background character code of zero (0) as a space. .PP If the terminal does not support color, or if color has not been initialized with \fB\%start_color\fP(3X), .I \%ncurses -ignores the new background character's color attribute. +ignores the new background character's color pair selection. .SS "bkgrndset, wbkgrndset" -\fB\%bkgrndset\fP and \fB\%wbkgrndset\fP manipulate the background of -the applicable window, -without updating the character cells as \fB\%bkgrnd\fP and -\fB\%wbkgrnd\fP do; +.B \%bkgrndset +and +.B \%wbkgrndset +manipulate the background of the applicable window, +without updating the character cells as +.B \%bkgrnd +and +.B \%wbkgrnd +do; only future writes reflect the updated background. .SS "getbkgrnd, wgetbkgrnd" -The \fB\%getbkgrnd\fP and \fB\%wgetbkgrnd\fP functions obtain the -background character and attribute pair of \fB\%stdscr\fP or the -specified window and store it via the +.B \%getbkgrnd +and +.B \%wgetbkgrnd +respectively obtain +.BR \%stdscr 's +or the given window's background character, +attributes, +and color pair, +and store it in their .I wch -pointer. +argument. .SH RETURN VALUE -\fBbkgrndset\fP and \fBwbkgrndset\fP do not return a value. +.B \%bkgrndset +and +.B \%wbkgrndset +do not return a value. .PP -The other functions return +Functions returning an +.I int +return .B ERR upon failure and .B OK upon success. In -.IR \%ncurses , +.IR \%ncurses "," failure occurs if .bP -a -.I \%WINDOW -pointer +the +.I curses +screen has not been initialized, +.bP .I win -is null, or +is +.IR NULL "," +or .bP -a -.I \%cchar_t -pointer .I wch -is null. +is +.IR NULL "." .SH NOTES -\fB\%bkgrnd\fP, -\fB\%bkgrndset\fP, and -\fB\%getbkgrnd\fP +.BR \%bkgrnd "," +.BR \%bkgrndset "," +and +.B \%getbkgrnd may be implemented as macros. .PP -Unlike their counterparts in the non-\*(``wide\*('' configuration of -.IR \%ncurses , -\fB\%getbkgrnd\fP and \fB\%wgetbkgrnd\fP supply the background character -and attribute in a modifiable +Unlike their counterparts in the non-wide-character configuration of +.IR \%ncurses "," +.B \%getbkgrnd +and +.B \%wgetbkgrnd +store the background character in a modifiable .I \%cchar_t parameter, -not as the return value. +rather than supplying it as the return value. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. It specifies no error conditions for them. .PP X/Open Curses does not provide details of how the rendition is updated. -This implementation follows the approach used in SVr4 -.IR curses . +.I \%ncurses +follows the approach used in SVr4 +.IR curses 's +non-wide functions for manipulating the window background. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. .SH SEE ALSO \fB\%curs_bkgd\fP(3X) describes the corresponding functions in the -non-\*(``wide\*('' configuration of -.IR \%ncurses . +non-wide-character configuration of +.IR \%ncurses "." .PP \fB\%curses\fP(3X), \fB\%curs_add_wch\fP(3X), diff --git a/contrib/ncurses/man/curs_border.3x b/contrib/ncurses/man/curs_border.3x index 2a5e72c141e2..c5aed64d2f8d 100644 --- a/contrib/ncurses/man/curs_border.3x +++ b/contrib/ncurses/man/curs_border.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2007,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_border.3x,v 1.49 2024/04/20 21:20:07 tom Exp $ -.TH curs_border 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_border.3x,v 1.65 2025/10/20 23:42:24 tom Exp $ +.TH curs_border 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -39,6 +39,11 @@ .ie t .ds '' '' .el .ds '' "" .\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fB\%border\fP, \fB\%wborder\fP, @@ -57,93 +62,131 @@ draw borders and lines in a \fIcurses\fR window of characters \fB#include <curses.h> .PP \fBint border(chtype \fIls\fP, chtype \fIrs\fP, chtype \fIts\fP, chtype \fIbs\fP, - \fBchtype \fItl\fB, chtype \fItr\fB, chtype \fIbl\fB, chtype \fIbr\fB);\fR + \fBchtype \fItl\fB, chtype \fItr\fB, chtype \fIbl\fB, chtype \fIbr\fB);\fR \fBint wborder(WINDOW *\fIwin\fB, chtype \fIls\fB, chtype \fIrs\fB,\fR - \fBchtype \fIts\fB, chtype \fIbs\fB, chtype \fItl\fB, chtype \fItr\fB,\fR - \fBchtype \fIbl\fB, chtype \fIbr\fB);\fR + \fBchtype \fIts\fB, chtype \fIbs\fB, chtype \fItl\fB, chtype \fItr\fB,\fR + \fBchtype \fIbl\fB, chtype \fIbr\fB);\fR .PP \fBint box(WINDOW *\fIwin\fB, chtype \fIverch\fB, chtype \fIhorch\fB);\fR .PP \fBint hline(chtype \fIch\fB, int \fIn\fB);\fR \fBint whline(WINDOW *\fIwin\fB, chtype \fIch\fB, int \fIn\fB);\fR -\fBint vline(chtype \fIch\fB, int \fIn\fB);\fR -\fBint wvline(WINDOW *\fIwin\fB, chtype \fIch\fB, int \fIn\fB);\fR -.PP \fBint mvhline(int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR \fBint mvwhline(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR +.PP +\fBint vline(chtype \fIch\fB, int \fIn\fB);\fR +\fBint wvline(WINDOW *\fIwin\fB, chtype \fIch\fB, int \fIn\fB);\fR \fBint mvvline(int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR \fBint mvwvline(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR .fi .SH DESCRIPTION -The \fBborder\fP, \fBwborder\fP and \fBbox\fP routines -draw a box around the edges of a window. -Other than the window, each argument is a character with attributes: -.sp +.B \%wborder +and +.B \%border +draw a box at the edges of the specified window or +.BR \%stdscr "," +respectively. +Each +.I \%chtype +argument corresponds to a geometric component of the border as follows: .RS -\fIls\fP \- left side, +.I ls +\- left side, .br -\fIrs\fP \- right side, +.I rs +\- right side, .br -\fIts\fP \- top side, +.I ts +\- top side, .br -\fIbs\fP \- bottom side, +.I bs +\- bottom side, .br -\fItl\fP \- top left-hand corner, +.I tl +\- top left-hand corner, .br -\fItr\fP \- top right-hand corner, +.I tr +\- top right-hand corner, .br -\fIbl\fP \- bottom left-hand corner, and +.I bl +\- bottom left-hand corner, and .br -\fIbr\fP \- bottom right-hand corner. +.I br +\- bottom right-hand corner. .RE .PP -If any of these arguments is zero, then the corresponding -default values (defined in \fBcurses.h\fP) are used instead: -.sp +If any +.I \%chtype +argument is +.BR 0 "," +then +.I curses +uses forms-drawing characters +(see \fBaddch\fP(3X)) +in the following correspondence: .RS -\fBACS_VLINE\fP, +.BR \%ACS_VLINE "," .br -\fBACS_VLINE\fP, +.BR \%ACS_VLINE "," .br -\fBACS_HLINE\fP, +.BR \%ACS_HLINE "," .br -\fBACS_HLINE\fP, +.BR \%ACS_HLINE "," .br -\fBACS_ULCORNER\fP, +.BR \%ACS_ULCORNER "," .br -\fBACS_URCORNER\fP, +.BR \%ACS_URCORNER "," .br -\fBACS_LLCORNER\fP, +.BR \%ACS_LLCORNER "," +and .br -\fBACS_LRCORNER\fP. +.BR \%ACS_LRCORNER "." .RE .PP -\fBbox(\fIwin\fB, \fIverch\fB, \fIhorch\fB)\fR is a shorthand -for the following call: \fBwborder(\fIwin\fB,\fR \fIverch\fB,\fR -\fIverch\fB,\fR \fIhorch\fB,\fR \fIhorch\fB, 0, 0, 0, 0)\fR. +.BI \%box( win "," +.IB verch , +.IB horch ) +is shorthand for +.RB \%\*(`` wborder(\c +.IB win , +.IB verch , +.IB verch , +.IB horch , +.IB horch , +.BR "0, 0, 0, 0)" "\*(''." .PP -The \fBhline\fP and \fBwhline\fP functions draw a horizontal (left to right) -line using \fIch\fP starting at the current cursor position in the window. -The -current cursor position is not changed. -The line is at most \fIn\fP characters -long, or as many as fit into the window. -.PP -The \fBvline\fP and \fBwvline\fP functions draw a vertical (top to bottom) line -using \fIch\fP starting at the current cursor position in the window. -The -current cursor position is not changed. -The line is at most \fIn\fP characters -long, or as many as fit into the window. +.B \%whline +draws a horizontal line of +.I ch +from left to right, +and +.B \%wvline +a vertical one from top to bottom, +stopping once +.I n +characters have been drawn or upon reaching the boundary of +.IR win "." +These functions do not update the cursor position +(beyond any motion directed by their \*(``mv\*('' variants). +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All routines return the integer \fBOK\fP. -The SVr4.0 manual says -\*(``or a non-negative integer if \fB\%immedok\fP is set\*('', -but this appears to be an error. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses does not specify any error conditions. -This implementation returns an error -if the window pointer is null. +In +.IR \%ncurses "," +.bP +these functions fail if the screen is not initialized; +and +.bP +functions taking a +.I \%WINDOW +pointer argument fail if +.I win +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -151,12 +194,90 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -The borders generated by these functions are \fIinside\fP borders (this -is also true of SVr4 curses, though the fact is not documented). +Unusually, +there is no +.B \%wbox +function; +.B \%box +behaves as one would expect +.B \%wbox +to, +accepting a +.I \%WINDOW +pointer argument. +.PP +.BR \%border "," +.BR \%box "," +.BR \%hline "," +.BR \%mvhline "," +.BR \%mvwhline "," +.BR \%vline "," +.BR \%mvvline "," +and +.B \%mvwvline +may be implemented as macros. .PP -Note that \fBborder\fP and \fBbox\fP may be macros. +Borders drawn by these functions are +.I interior +borders. +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/libcurses/box.c .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +These functions are described in X/Open Curses Issue\ 4. +It specifies no error conditions for them. +.PP +SVr4 documentation +.\" SVID 4, vol. 3, p. 483 +says that these functions return +.I OK +\*(``or a non-negative integer if +.I \%immedok() \" Courier roman in source +is set\*('', +referring to the return value from +.IR \%wrefresh "," +which in SVr4 returns a count of characters +written to the window if its +.I \%immedok +property is set; +.\" ...though its wrefresh() man page says nothing about immedok()... +in +.IR \%ncurses "," +it does not. +.PP +BSD +.I curses +drew boxes with +.I horch +in +.I every +character cell of the top and bottom lines of the window, +whereas SVr3.1 and later +.IR curses "," +because its +.I box +wrapped +.IR wborder "," +used the default corner characters. +.\" https://github.com/ryanwoodsmall/oldsysv/blob/master/sysvr3/31/\ +.\" usr/src/lib/libcurses/screen/curses.ed#L454 +.SH HISTORY +4BSD (1980) +introduced +.IR box "," +defining it as a function. +.PP +SVr3.1 (1987) +added +.I \%whline +and +.I \%wvline +and their variants, +as well as +.I \%border +and +.IR \%wborder "," +redefining +.I \%box +as a macro wrapping the latter. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_outopts\fP(3X) diff --git a/contrib/ncurses/man/curs_border_set.3x b/contrib/ncurses/man/curs_border_set.3x index 3077da6b49f7..d41460a4041d 100644 --- a/contrib/ncurses/man/curs_border_set.3x +++ b/contrib/ncurses/man/curs_border_set.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2011,2012 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_border_set.3x,v 1.36 2024/04/20 21:20:07 tom Exp $ -.TH curs_border_set 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_border_set.3x,v 1.50 2025/10/21 00:10:56 tom Exp $ +.TH curs_border_set 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -56,46 +56,31 @@ draw borders and lines in a \fIcurses\fR window of wide characters .nf \fB#include <curses.h> .PP -\fBint border_set( - \fBconst cchar_t *\fIls\fB, const cchar_t *\fIrs\fP, - \fBconst cchar_t *\fIts\fB, const cchar_t *\fIbs\fP, - \fBconst cchar_t *\fItl\fB, const cchar_t *\fItr\fP, - \fBconst cchar_t *\fIbl\fB, const cchar_t *\fIbr\fB);\fR +\fBint border_set(const cchar_t *\fIls\fB, const cchar_t *\fIrs\fP, + \fBconst cchar_t *\fIts\fB, const cchar_t *\fIbs\fP, + \fBconst cchar_t *\fItl\fB, const cchar_t *\fItr\fP, + \fBconst cchar_t *\fIbl\fB, const cchar_t *\fIbr\fB);\fR .br -\fBint wborder_set(\fP - \fBWINDOW *\fIwin\fP, - \fBconst cchar_t *\fIls\fB, const cchar_t *\fIrs\fP, - \fBconst cchar_t *\fIts\fB, const cchar_t *\fIbs\fP, - \fBconst cchar_t *\fItl\fB, const cchar_t *\fItr\fP, - \fBconst cchar_t *\fIbl\fB, const cchar_t *\fIbr\fB);\fR -\fBint box_set(\fP - \fBWINDOW *\fIwin\fP, - \fBconst cchar_t *\fIverch\fP, - \fBconst cchar_t *\fIhorch\fB);\fR -\fBint hline_set(\fP - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR -\fBint whline_set(\fP - \fBWINDOW *\fIwin\fP, - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR -\fBint mvhline_set(\fP - \fBint \fIy\fB, int \fIx\fP, - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR -\fBint mvwhline_set(\fP - \fBWINDOW *\fIwin\fP, - \fBint \fIy\fB, int \fIx\fP, - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR -\fBint vline_set(\fP - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR -\fBint wvline_set(\fP - \fBWINDOW *\fIwin\fP, - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR -\fBint mvvline_set(\fP - \fBint \fIy\fB, int \fIx\fP, - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR -\fBint mvwvline_set(\fP - \fBWINDOW *\fIwin\fP, - \fBint \fIy\fB, int \fIx\fP, - \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR +\fBint wborder_set(\fBWINDOW *\fIwin\fP, + \fBconst cchar_t *\fIls\fB, const cchar_t *\fIrs\fP, + \fBconst cchar_t *\fIts\fB, const cchar_t *\fIbs\fP, + \fBconst cchar_t *\fItl\fB, const cchar_t *\fItr\fP, + \fBconst cchar_t *\fIbl\fB, const cchar_t *\fIbr\fB);\fR +.PP +\fBint box_set(\fBWINDOW *\fIwin\fP, \fBconst cchar_t *\fIverch\fP, + \fBconst cchar_t *\fIhorch\fB);\fR +.PP +\fBint hline_set(const cchar_t *\fIwch\fB, int \fIn\fB);\fR +\fBint whline_set(WINDOW *\fIwin\fP, \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR +\fBint mvhline_set(int \fIy\fB, int \fIx\fP, \fBconst cchar_t *\fIwch\fB,\fR \fBint \fIn\fB);\fR +\fBint mvwhline_set(WINDOW *\fIwin\fP, \fBint \fIy\fB, int \fIx\fP, + \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR +.PP +\fBint vline_set(const cchar_t *\fIwch\fB, int \fIn\fB);\fR +\fBint wvline_set(WINDOW *\fIwin\fP, \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR +\fBint mvvline_set(int \fIy\fB, int \fIx\fP, \fBconst cchar_t *\fIwch\fB,\fR \fBint \fIn\fB);\fR +\fBint mvwvline_set(WINDOW *\fIwin\fP, \fBint \fIy\fB, int \fIx\fP, + \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR .fi .SH DESCRIPTION The @@ -177,7 +162,9 @@ Upon successful completion, these functions return Otherwise, they return \fBERR\fP. .PP -Functions using a window parameter return an error if it is null. +Functions using a window parameter return +.B ERR +if it is null. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -185,17 +172,20 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -Note that -\fBborder_set\fP, -\fBhline_set\fP, -\fBmvhline_set\fP, -\fBmvvline_set\fP, -\fBmvwhline_set\fP, -\fBmvwvline_set\fP, and -\fBvline_set\fP -may be macros. +.BR \%border_set "," +.BR \%hline_set "," +.BR \%mvhline_set "," +.BR \%mvvline_set "," +.BR \%mvwhline_set "," +.BR \%mvwvline_set "," +and +.B \%vline_set +may be implemented as macros. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_add_wch\fP(3X), diff --git a/contrib/ncurses/man/curs_clear.3x b/contrib/ncurses/man/curs_clear.3x index 0ab00645197a..8a25bd45f6dc 100644 --- a/contrib/ncurses/man/curs_clear.3x +++ b/contrib/ncurses/man/curs_clear.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_clear.3x,v 1.48 2024/04/20 21:20:07 tom Exp $ -.TH curs_clear 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_clear.3x,v 1.58 2025/01/19 00:49:39 tom Exp $ +.TH curs_clear 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -93,24 +93,44 @@ to the right of the cursor, inclusive, to the end of the current line. .SH RETURN VALUE All routines return the integer \fBOK\fP on success and \fBERR\fP on failure. .PP -X/Open defines no error conditions. In this implementation, .bP -functions using a window pointer parameter return an error if it is null +functions using a window pointer parameter return +.B ERR +if it is null .bP \fBwclrtoeol\fP returns an error if the cursor position is about to wrap. .SH NOTES -Note that \fBerase\fP, \fBwerase\fP, \fBclear\fP, \fBwclear\fP, -\fBclrtobot\fP, and \fBclrtoeol\fP may be macros. +.BR \%erase "," +.BR \%werase "," +.BR \%clear "," +.BR \%wclear "," +.BR \%clrtobot "," +and +.B \%clrtoeol +may be implemented as macros. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -The SVr4.0 manual says that these functions could return -\*(``or a non-negative integer if \fB\%immedok\fP is set\*('', -referring to the return-value of \fBwrefresh\fP. -In that implementation, \fBwrefresh\fP would return a count of -the number of characters written to the terminal. +SVr4 documentation +.\" SVID 4, vol. 3, p. 485 +says that these functions return +.I OK +\*(``or a non-negative integer if +.I \%immedok() \" Courier roman in source +is set\*('', +referring to the return value from +.IR \%wrefresh "," +which in SVr4 returns a count of characters +written to the window if its +.I \%immedok +property is set; +.\" ...though its wrefresh() man page says nothing about immedok()... +in +.IR \%ncurses "," +it does not. .PP Some historic curses implementations had, as an undocumented feature, the ability to do the equivalent of \fBclearok(..., 1)\fP by saying diff --git a/contrib/ncurses/man/curs_color.3x b/contrib/ncurses/man/curs_color.3x index 7a5a02f27de3..799f462bb6e6 100644 --- a/contrib/ncurses/man/curs_color.3x +++ b/contrib/ncurses/man/curs_color.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_color.3x,v 1.100 2024/04/20 21:24:19 tom Exp $ -.TH curs_color 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_color.3x,v 1.126 2025/08/23 22:39:20 tom Exp $ +.TH curs_color 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -69,7 +69,8 @@ \fB\%COLOR_BLUE\fP, \fB\%COLOR_MAGENTA\fP, \fB\%COLOR_CYAN\fP, -\fB\%COLOR_WHITE\fP \- +\fB\%COLOR_WHITE\fP, +\fB\%A_COLOR\fP \- manipulate terminal colors with \fIcurses\fR .SH SYNOPSIS .nf @@ -99,8 +100,18 @@ manipulate terminal colors with \fIcurses\fR \fI/* extension */ \fBvoid reset_color_pairs(void); .PP +\fI/* macros */ \fBint COLOR_PAIR(int \fIn\fP); \fBPAIR_NUMBER(int \fIattr\fP); +\fBCOLOR_BLACK +\fBCOLOR_RED +\fBCOLOR_GREEN +\fBCOLOR_YELLOW +\fBCOLOR_BLUE +\fBCOLOR_MAGENTA +\fBCOLOR_CYAN +\fBCOLOR_WHITE +\fBA_COLOR .fi .SH DESCRIPTION .SS Overview @@ -160,9 +171,8 @@ pairs in an internal function called from \fB\%waddch\fP: .bP If the parameter passed to \fB\%waddch\fP is \fIblank\fP, and it uses the special color pair 0, -.RS -.bP \fIcurses\fP next checks the window attribute. +.RS .bP If the window attribute does not use color pair 0, \fIcurses\fP uses the color pair from the window attribute. @@ -182,24 +192,36 @@ Those do not combine its parameter with a color pair. Consequently those calls use only the window attribute or the background character. .SH CONSTANTS -In \fB\%<curses.h>\fP the following macros are defined. -These are the standard colors (ISO-6429). -\fIcurses\fP also assumes that \fB\%COLOR_BLACK\fP is the default -background color for all terminals. -.PP -.nf - \fBCOLOR_BLACK\fP - \fBCOLOR_RED\fP - \fBCOLOR_GREEN\fP - \fBCOLOR_YELLOW\fP - \fBCOLOR_BLUE\fP - \fBCOLOR_MAGENTA\fP - \fBCOLOR_CYAN\fP - \fBCOLOR_WHITE\fP -.fi +ISO\ 6429 and ECMA-48 +define eight standard colors +(also known as \*(``ANSI\*('' colors). +.I curses\.h +defines object-like macros +.BR \%COLOR_BLACK "," +.BR \%COLOR_RED "," +.BR \%COLOR_GREEN "," +.BR \%COLOR_YELLOW "," +.BR \%COLOR_BLUE "," +.BR \%COLOR_MAGENTA "," +.BR \%COLOR_CYAN "," +and +.B \%COLOR_WHITE +accordingly. +.I curses +assumes that +.B \%COLOR_BLACK +is the default background color for all terminals. +.I \%ncurses +offers an extension to override that assumption; +see \fB\%assume_default_colors\fP(3X). +Some terminals support additional colors that lack standard names. .PP -Some terminals support more than the eight (8) \*(``ANSI\*('' colors. -There are no standard names for those additional colors. +.B \%A_COLOR +is a bit mask that, +when bitwise \*(``and\*(''-ed with a +.IR \%chtype "," +.\" XXX: and right-shifted by...? +extracts its color pair identifier. .SH VARIABLES .SS COLORS is initialized by \fB\%start_color\fP to the maximum number of colors @@ -291,12 +313,48 @@ Color pair \fB0\fP is assumed to be white on black, but is actually whatever the terminal implements before color is initialized. It cannot be modified by the application. .SS has_colors -The \fB\%has_colors\fP routine requires no arguments. -It returns \fBTRUE\fP if -the terminal can manipulate colors; otherwise, it returns \fBFALSE\fP. -This routine facilitates writing terminal-independent programs. -For example, a programmer can use it to decide -whether to use color or some other video attribute. +.B \%has_colors +returns +.B TRUE +if the terminal supports colors and +.B FALSE +if it does not. +\fB\%initscr\fP(3X) or \fB\%newterm\fP(3X) must be called first, +but +.B \%start_color +need not be. +An application might call +.B \%has_colors +to decide whether to use color +or a video attribute like +.B \%A_BOLD +to render text. +.PP +Color support in +.I curses +requires that the terminal type description +support the capabilities +.B \%max_colors +.RB \%( colors ), +.B \%max_pairs +.RB \%( pairs ), +and any of +.bP +.B \%set_foreground +.RB ( setf ) +and +.B \%set_background +.RB ( setb ); +.bP +.B \%set_a_foreground +.RB ( setaf ) +and +.B \%set_a_background +.RB ( setab ); +or +.bP +.B \%set_color_pair +.RB ( scp ). .SS can_change_color The \fB\%can_change_color\fP routine requires no arguments. It returns \fBTRUE\fP if the terminal supports colors @@ -418,87 +476,173 @@ rather than the legacy functions such as \fB\%attrset\fP. \fIattr\fP parameter and returns it as a color pair number; it is the inverse operation of \fB\%COLOR_PAIR\fP. .SH RETURN VALUE -The routines \fB\%can_change_color\fP and \fB\%has_colors\fP return \fBTRUE\fP -or \fBFALSE\fP. -.PP -All other routines return the integer \fBERR\fP upon failure and an \fBOK\fP -(SVr4 specifies only \*(``an integer value -other than \fBERR\fP\*('') upon successful completion. +.B \%can_change_color +and +.B \%has_colors +return +.B TRUE +or +.BR FALSE "." +The other functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open defines no error conditions. -SVr4 does document some error conditions which apply in general: +In +.IR \%ncurses "," +functions returning an +.I int +recognize several error conditions. .bP -This implementation will return \fBERR\fP on attempts to -use color values outside the range \fB0\fP to \fB\%COLORS\fP\-1 -(except for the default colors extension), -or use color pairs outside the range \fB0\fP to \fB\%COLOR_PAIRS\-1\fP. -.IP -Color values used in \fB\%init_color\fP must be -in the range \fB0\fP to \fB1000\fP. -.IP -An error is returned from all functions -if the terminal has not been initialized. -.IP -An error is returned from secondary functions such as \fB\%init_pair\fP -if \fB\%start_color\fP was not called. +All return +.B ERR +if the screen has not been initialized; +see \fBinitscr\fP(3X) or \fBnewterm\fP(3X). +.bP +All except +.B \%start_color +return +.B ERR +if +.B \%start_color +has not been called, +or itself returned +.BR ERR "." .bP -SVr4 does much the same, except that -it returns \fBERR\fP from \fB\%pair_content\fP if the pair was not initialized -using \fB\%init_pairs\fP +.B \%start_color +returns +.B ERR +if it cannot allocate memory for its color pair table. +.bP +.B \%init_color +returns +.B ERR +if the terminal type does not support assignable color values; +that is, +if the +.B \%initialize_color +.RB ( initc ) +capability is absent from its description. +.bP +.B \%init_color +returns +.B ERR +if any of its +.IR r "," +.IR g "," +.I b +arguments is outside the range 0-1000 inclusive. +.bP +.BR \%init_pair "," +.BR \%init_color "," +.BR \%init_extended_pair "," +.BR \%init_extended_color "," +.BR \%color_content "," +.BR \%pair_content "," +.BR \%extended_color_content "," and -it returns \fBERR\fP from \fB\%color_content\fP -if the terminal does not support changing colors. -.IP -This implementation does not return \fBERR\fP for either case. -.PP -Specific functions make additional checks: -.RS 3 -.TP 5 -\fB\%init_color\fP -returns an error if the terminal does not support -this feature, e.g., if the \fB\%initialize_color\fP capability is absent -from the terminal description. -.TP 5 -\fB\%start_color\fP -returns an error if the color table cannot be allocated. +.B \%extended_pair_content +return +.B ERR +on attempts to use +.RS +.bP +color identifiers outside the range +.RB \%0- COLORS \-1 +inclusive, +the default colors extension notwithstanding, +or +.bP +color pair identifiers outside the range +.RB \%0- COLOR_PAIRS \-1 +inclusive. .RE .SH NOTES -In the \fI\%ncurses\fP implementation, -there is a separate color activation flag, -color palette, color pairs table, -and associated \fB\%COLORS\fP and \fB\%COLOR_PAIRS\fP counts -for each screen; the \fB\%start_color\fP function only affects the current -screen. -The SVr4/XSI interface is not really designed with this in mind, and +In +.IR \%ncurses "," +.B \%init_pair +accepts negative foreground and background color arguments +to support its \fB\%use_default_colors\fP(3X) extension, +but only after the latter function has been called. +.PP +The assumption that +.B \%COLOR_BLACK +is the terminal's default background color can be overridden using +.IR \%ncurses 's +\fB\%assume_default_colors\fP(3X) extension. +.PP +In +.IR \%ncurses "," +each pointer passed to +.B \%color_content +and +.B \%pair_content +can be null, +in which case the library ignores it, +permitting the application to disregard unnecessary information. +.PP +In +.IR \%ncurses "," +each screen has a +color activation flag, +color palette, +color pair table, +and associated +.B \%COLORS +and +.B \%COLOR_PAIRS +values; +.B \%start_color +affects only the current screen. +The SVr4 and X/Open Curses interface was not really designed +with this in mind; historical implementations may use a single shared color palette. .PP Setting an implicit background color via a color pair affects only character cells that a character write operation explicitly touches. -To change -the background color used when parts of a window are blanked by erasing or -scrolling operations, see \fB\%curs_bkgd\fP(3X). +To change the background color used +when parts of a window are blanked by erasing or scrolling operations, +see \fB\%curs_bkgd\fP(3X). .PP -Several caveats apply on older x86 machines -(e.g., i386, i486) with VGA-compatible graphics: +Several caveats apply to IBM PC-compatible machines +of the 80486 era and earlier +with CGA/EGA/VGA video. .bP -COLOR_YELLOW is actually brown. -To get yellow, use COLOR_YELLOW combined with the \fBA_BOLD\fP attribute. +.B \%COLOR_YELLOW +was frequently converted, +in the analog domain, +to a shade of brown if the intensity bit was not set. +.\" https://nerdlypleasures.blogspot.com/2023/03/the-saga-of-color-brown-in-early-years.html +To get yellow on such devices, +one would combine +.B \%COLOR_YELLOW +with the +.B \%A_BOLD +attribute. .bP -The A_BLINK attribute should in theory cause the background to go bright. -This often fails to work, and even some cards for which it mostly works -(such as the -Paradise and compatibles) do the wrong thing when you try to set a bright -\*(``yellow\*('' background (you get a blinking yellow foreground instead). +The +.B \%A_BLINK +attribute should in theory make the background bright. +This often fails to work, +and even VGA controllers for which it mostly works, +such as those from Paradise and compatibles, +do the wrong thing +when you try to set a bright \*(``yellow\*('' background \(em +you get a blinking yellow foreground instead. .bP -Color RGB values are not settable. +Color RGB values are not configurable on these devices +(in text mode). .SH EXTENSIONS -The functions marked as extensions were designed for -\fB\%ncurses\fP(3X), +The functions marked as extensions originated in +.IR \%ncurses "," and are not found in SVr4 .IR curses , 4.4BSD .IR curses , -or any other previous curses implementation. +or any other previous +.I curses +implementation. .SH PORTABILITY Applications employing .I \%ncurses @@ -506,81 +650,149 @@ extensions should condition their use on the visibility of the .B \%NCURSES_VERSION preprocessor macro. .PP -This implementation satisfies X/Open Curses's minimum maximums -for \fB\%COLORS\fP and \fB\%COLOR_PAIRS\fP. -.PP -The \fB\%init_pair\fP routine accepts negative values of foreground -and background color to support the \fB\%use_default_colors\fP(3X) extension, -but only if that routine has been first invoked. -.PP -The assumption that \fB\%COLOR_BLACK\fP is the default -background color for all terminals can be modified using the -\fB\%assume_default_colors\fP(3X) extension. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -This implementation checks the pointers, -e.g., for the values returned by -\fB\%color_content\fP and \fB\%pair_content\fP, -and will treat those as optional parameters when null. +.I \%ncurses +satisfies X/Open Curses's minimum maximums for +.I \%COLORS +and +.IR \%COLOR_PAIRS "." .PP X/Open Curses does not specify a limit for the number of colors and color pairs which a terminal can support. -However, in its use of \fBshort\fP for the parameters, +However, +in its use of +.I short +for the parameters, it carries over SVr4's implementation detail for the compiled -terminfo database, which uses signed 16-bit numbers. -This implementation provides extended versions of those functions -which use \fBshort\fP parameters, -allowing applications to use larger color- and pair-numbers. +.I \%term\%info +database, +which uses signed 16-bit numbers. +.I \%ncurses +provides extended versions of the functions using +.I short +parameters, +allowing applications to use larger color and pair identifiers. .PP -The \fB\%reset_color_pairs\fP function is an extension of -\fI\%ncurses\fP. +SVr4 +.I curses +returns +.I ERR +from +.I \%pair_content +if its +.I pair +argument +was not initialized using +.IR \%init_pairs , +and from +.I \%color_content +if the terminal does not support changing colors. +.I \%ncurses +does neither. .SH HISTORY -SVr3.2 introduced color support to curses in 1987. -.PP -SVr4 made internal changes, -e.g., moving the storage for the color state -from \fBSP\fP (the \fISCREEN\fP structure) -to \fB\%cur_term\fP (the \fI\%TERMINAL\fP structure), -but provided the same set of library functions. +SVr3.2 (1987) introduced color support to +.I curses +with all of the symbols +in the synopsis above except those marked as extensions. +It reserved color pair 0 as the terminal's initial, +\*(``uncolored\*('' state, +.\" "we assume that color 0 is always a default background.", SVr3.2 +.\" usr/src/lib/libcurses/screen/start_col.c +and limited the number of possible color pairs to 64, +because the color pair datum was encoded in six bits of a +.IR \%chtype "." .PP -SVr4 curses limits the number of color pairs to 64, -reserving color pair zero (0) as the terminal's initial uncolored state. -This limit arises because the color pair information is a bitfield -in the \fB\%chtype\fP data type (denoted by \fB\%A_COLOR\fP). +SVr4 made only internal changes, +such as moving the storage of color state +from the +.I SCREEN +structure +(pointed to by +.IR SP ) +to the +.I \%TERMINAL +structure +(pointed to by +.IR \%cur_term ")." .PP -Other implementations of curses had different limits: +Other +.I curses +implementations impose different limits on the number of colors and +color pairs. .bP -PCCurses (1987-1990) provided for only eight (8) colors. +.I \%PCCurses +(1987-1990) provided for only 8 colors +(and therefore required at most 8\(mu8 = 64 color pairs). .bP -PDCurses (1992-present) inherited the 8-color limitation from PCCurses, +.I \%PDCurses +(1992-present) inherited the 8-color limitation from +.IR \%PCCurses , but changed this to 256 in version 2.5 (2001), -along with changing \fB\%chtype\fP from 16-bits to 32-bits. +and widened its +.I \%chtype +from 16 to 32 bits. .bP X/Open Curses (1992-present) -added a new structure \fB\%cchar_t\fP to store the character, -attributes and color pair values, allowing increased range of color pairs. -Both color pairs and color-values used a signed \fBshort\fP, -limiting values to 15 bits. +specified a new structure type, +.IR \%cchar_t "," +to store the character code, +attribute flags, +and color pair identifier, +allowing an increased range of color pairs. +It specifies a +.I short +as storing identifiers for colors and color pairs, +limiting portable values to 15 bits; +negative values are invalid in System\ V. .bP -\fI\%ncurses\fP (1992-present) uses eight bits -for \fB\%A_COLOR\fP in \fB\%chtype\fP values. +.I \%ncurses +(1992-present), +in its non-wide-character configuration, +uses 8 bits of +.I \%chtype +for the color pair identifier. .IP -Version 5.3 provided a wide-character interface (2002), -but left color pairs as part of the attributes-field. +Version 5.3 (2002) offered a wide-character interface, +but encoded the color pair identifier with attributes +in the character type. .IP Since version 6 (2015), -ncurses uses a separate \fBint\fP for color pairs in the \fB\%cchar_t\fP values. -When those color pair values fit in 8 bits, -ncurses allows color pairs to be manipulated -via the functions using \fB\%chtype\fP values. +.I \%ncurses +uses a separate +.I int +for the color pair identifier in a +.IR \%cchar_t "," +introducing extension functions to manage the wider type. +When a color pair value fits in 8 bits, +.I \%ncurses +permits color pair data to be manipulated +via the functions taking +.I \%chtype +arguments, +even when a +.I curses +window uses wide-character cells. .bP -NetBSD curses used 6 bits from -2000 (when colors were first supported) until 2004. -At that point, NetBSD changed to use 10 bits. -As of 2021, that size is unchanged. -Like \fI\%ncurses\fP before version 6, -the NetBSD color pair information is stored in -the attributes field of \fB\%cchar_t\fP, limiting the number of color pairs -by the size of the bitfield. +NetBSD +.I curses +used 6 bits for the color pair identifier from 2000 +(when it first added color support) +until 2004. +At that point, +NetBSD widened the color pair identifier to use 9 bits. +As of 2025, +that size is unchanged. +.\" http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libcurses/curses.h?rev=1.133 +.\" indicates a mask of 0x03fe0000. +Like +.I \%ncurses +before version 6, +the NetBSD color pair datum is stored in +the attributes field of +.IR \%cchar_t "," +limiting the number of color pairs. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_attr\fP(3X), diff --git a/contrib/ncurses/man/curs_delch.3x b/contrib/ncurses/man/curs_delch.3x index e62ecc130de1..e4bf86cba174 100644 --- a/contrib/ncurses/man/curs_delch.3x +++ b/contrib/ncurses/man/curs_delch.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2006,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_delch.3x,v 1.34 2024/04/20 19:24:14 tom Exp $ -.TH curs_delch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_delch.3x,v 1.49 2025/04/05 21:59:53 tom Exp $ +.TH curs_delch 3X 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -39,6 +39,11 @@ .ie t .ds '' '' .el .ds '' "" .\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fB\%delch\fP, \fB\%wdelch\fP, @@ -50,27 +55,25 @@ delete a character from a \fIcurses\fR window \fB#include <curses.h> .PP \fBint delch(void); -\fBint wdelch(WINDOW *\fIwin\fP); +\fBint wdelch(WINDOW * \fIwin\fP); \fBint mvdelch(int \fIy\fP, int \fIx\fP); -\fBint mvwdelch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); +\fBint mvwdelch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP); .fi .SH DESCRIPTION .B \%wdelch deletes the character at the cursor position in .IR win . -\fB\%ncurses\fP(3X) describes the variants of this function. -.PP -.B \%wdelch -moves all characters to the right of the cursor on the same line to the -left one position and replaces the contents of the rightmost position on -the line with the window's blank character; +It moves all characters to the right of the cursor on the same line to +the left one position and replaces the contents of the rightmost +position on the line with the window's background character; see \fB\%bkgd\fP(3X) -(wide-character API users may consult \fB\%bkgrnd\fP(3X) instead). +(wide-character API users: \fB\%bkgrnd\fP(3X)). The cursor position does not change (after moving to .RI ( y , .IR x ), if specified). +\fB\%ncurses\fP(3X) describes the variants of this function. .SH RETURN VALUE These functions return .B OK @@ -78,10 +81,20 @@ on success and .B ERR on failure. .PP -Functions taking a +In +.IR \%ncurses , +these functions fail if +.bP +the +.I curses +screen has not been initialized, +or +.bP +(for functions taking a .I \%WINDOW -pointer argument fail if the pointer is -.BR NULL . +pointer argument) +.I win +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -101,13 +114,14 @@ A terminal's capability is not necessarily employed. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -SVr4 -.I curses -describes a successful return value only as +SVr4 describes a successful return value only as \*(``an integer value other than -.BR ERR \*(''. +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 489 +.SH HISTORY +SVr2 (1984) introduced +.IR \%wdelch "." .SH SEE ALSO \fB\%curses\fP(3X) diff --git a/contrib/ncurses/man/curs_deleteln.3x b/contrib/ncurses/man/curs_deleteln.3x index 6d70a4358c4f..46a9554629e3 100644 --- a/contrib/ncurses/man/curs_deleteln.3x +++ b/contrib/ncurses/man/curs_deleteln.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2007,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_deleteln.3x,v 1.38 2024/04/20 21:20:07 tom Exp $ -.TH curs_deleteln 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_deleteln.3x,v 1.55 2025/07/05 12:46:36 tom Exp $ +.TH curs_deleteln 3X 2025-07-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -43,62 +43,106 @@ .SH NAME \fB\%deleteln\fP, \fB\%wdeleteln\fP, -\fB\%insdelln\fP, -\fB\%winsdelln\fP, \fB\%insertln\fP, -\fB\%winsertln\fP \- +\fB\%winsertln\fP, +\fB\%insdelln\fP, +\fB\%winsdelln\fP \- delete or insert lines in a \fIcurses\fR window .SH SYNOPSIS .nf \fB#include <curses.h> .PP \fBint deleteln(void); -\fBint wdeleteln(WINDOW *\fIwin\fP); -.PP -\fBint insdelln(int \fIn\fP); -\fBint winsdelln(WINDOW *\fIwin\fP, int \fIn\fP); +\fBint wdeleteln(WINDOW * \fIwin\fP); .PP \fBint insertln(void); -\fBint winsertln(WINDOW *\fIwin\fP); +\fBint winsertln(WINDOW * \fIwin\fP); +.PP +\fBint insdelln(int \fIn\fP); +\fBint winsdelln(WINDOW * \fIwin\fP, int \fIn\fP); .fi .SH DESCRIPTION -The \fBdeleteln\fP and \fBwdeleteln\fP routines delete the line under the -cursor in the window; all lines below the current line are moved up one line. -The bottom line of the window is cleared. +.B \%wdeleteln +deletes the line at the cursor in +.IR win ; +all lines below it move up one line. +.I curses +then fills the bottom line of +.I win +with the background character +configured by \fB\%wbkgdset\fP(3X) +(wide-character API users: \fB\%wbkgrndset\fP(3X)). The cursor position does not change. .PP -The \fBinsdelln\fP and \fBwinsdelln\fP routines, for positive \fIn\fP, insert -\fIn\fP lines into the specified window above the current line. -The \fIn\fP -bottom lines are lost. -For negative \fIn\fP, delete \fIn\fP lines (starting -with the one under the cursor), and move the remaining lines up. -The bottom -\fIn\fP lines are cleared. -The current cursor position remains the same. +.B \%winsertln +inserts a new, empty line of characters above the line at the cursor in +.IR win , +shifting the existing lines down by one. +The content of the window's bottom line is lost; +.I curses +fills the new line with the background character. +The cursor position does not change. .PP -The \fBinsertln\fP and \fBwinsertln\fP routines insert a blank line above the -current line and the bottom line is lost. +.B \%winsdelln +inserts or deletes +.IR n\ lines +in +.I win +as +.I n +is positive or negative, +respectively, +as if by repeatedly calling +.B \%winsertln +or +.BR \%wdeleteln "." +.BR \%winsdelln( ".\|.\|." ", 0)" +performs no operation. .SH RETURN VALUE -These routines return the integer \fBERR\fP upon failure and an \fBOK\fP -(SVr4 specifies only -\*(``an integer value other than \fBERR\fP\*('') -upon successful completion. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open defines no error conditions. -In this implementation, -if the window parameter is null, an error is returned. +In +.IR \%ncurses "," +they fail if +.I win +is +.IR NULL "." .SH NOTES -Note that all but \fBwinsdelln\fP may be macros. +All of these functions except +.B \%winsdelln +may be implemented as macros. .PP -These routines do not require a hardware line delete or insert feature in the -terminal. -In fact, they will not use hardware line delete/insert unless -\fBidlok(..., TRUE)\fP has been set on the current window. +These functions do not require the terminal +to possess hardware line deletion or insertion capabilities. +Even if available, +by default +.I curses +does not use them; +see \fB\%idlok\fP(3X). .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. -The -standard specifies that they return \fBERR\fP on failure, but specifies no -error conditions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 490 +.SH HISTORY +4BSD (1980) +introduced +.IR \%deleteln "," +.IR \%wdeleteln "," +.IR \%insertln "," +and +.IR \%winsertln "." +.PP +SVr3.1 (1987) +added +.I \%insdelln +and +.IR \%winsdelln "." .SH SEE ALSO \fB\%curses\fP(3X) diff --git a/contrib/ncurses/man/curs_extend.3x b/contrib/ncurses/man/curs_extend.3x index 01cf9d2ece71..1e5e2cfe1770 100644 --- a/contrib/ncurses/man/curs_extend.3x +++ b/contrib/ncurses/man/curs_extend.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1999-2010,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,8 +29,8 @@ .\" .\" Author: Thomas E. Dickey 1999-on .\" -.\" $Id: curs_extend.3x,v 1.46 2024/03/16 15:35:01 tom Exp $ -.TH curs_extend 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_extend.3x,v 1.67 2025/11/12 00:46:51 tom Exp $ +.TH curs_extend 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -44,59 +44,89 @@ .SH NAME \fB\%curses_version\fP, \fB\%use_extended_names\fP \- -miscellaneous \fIcurses\fR extensions +miscellaneous \fIncurses\fR extensions .SH SYNOPSIS .nf \fB#include <curses.h> .PP \fBconst char * curses_version(void); -\fBint use_extended_names(bool \fIenable\fP); +\fBint use_extended_names(bool \fIbf\fP); .fi .SH DESCRIPTION -These functions are extensions to the curses library -which do not fit easily into other categories. +These +.I \%ncurses +extensions to the +.I curses +library do not fit easily into other functional categories. .SS curses_version -Use \fBcurses_version\fP -to get the version number, including patch level of the library, -prefixed by \*(``ncurses\*('', e.g., -.RS -.sp -.B ncurses 5.0.19991023 -.RE +.B \%curses_version +returns a pointer to a string containing the library's name +and version number, +including its patch level, +for example +\*(``ncurses 6.5.20240720\*(''. .SS use_extended_names -The \fBuse_extended_names\fP -function controls whether the calling application -is able to use user-defined or nonstandard names -which may be compiled into the terminfo -description, i.e., via the terminfo or termcap interfaces. -Normally these names are available for use, since the essential decision -is made by using the \fB\-x\fP option of \fB@TIC@\fP to compile -extended terminal definitions. -However you can disable this feature -to ensure compatibility with other implementations of curses. +.B \%use_extended_names +configures whether the library recognizes +user-defined or nonstandard +.I \%term\%info +capability names that may be compiled into terminal type descriptions +via the \fB\%curs_terminfo\fP(3X) or \fB\%curs_termcap\fP(3X) interfaces. +Normally these names are available for use, +since the essential decision +is made through use of \fB\%@TIC@\fP(1)'s +.B \-x +option to include such extensions in terminal type descriptions. +.B \%use_extended_names(FALSE) +prevents +.I \%ncurses +from recognizing these capabilities +to ensure compatibility with other implementations of +.IR curses . .SH RETURN VALUE -\fBcurses_version\fP returns a pointer to static memory; you should not free -this in your application. +.B \%curses_version +returns a constant string. .PP -\fBuse_extended_names\fP returns the previous state, allowing you to -save this and restore it. +.B \%use_extended_names +returns the previous state of extended capability name recognition, +allowing you to save this property and restore it. +.SH NOTES +The pointer returned by +.B \%curses_version +corresponds to statically allocated memory; +do not attempt to \fIfree\fP(3) it. .SH EXTENSIONS -These functions are \fB\%ncurses\fP(3X) extensions, +These functions are +.I \%ncurses +extensions, and are not found in SVr4 .IR curses , 4.4BSD .IR curses , -or any other previous curses implementation. +or any other previous +.I curses +implementation. .SH PORTABILITY Applications employing .I \%ncurses extensions should condition their use on the visibility of the .B \%NCURSES_VERSION preprocessor macro. +.PP +NetBSD 9 added a +.I \%curses_version +function +that intentionally returns a string devoid of version information. +.\" See https://mail-index.netbsd.org/tech-userlevel/2019/08/27/\ +.\" msg012068.html and follow-up messages. .SH AUTHORS -Thomas Dickey. +Thomas Dickey .SH SEE ALSO +.I \%ncurses +offers several other extensions to the X/Open Curses API. +.PP \fB\%curs_getch\fP(3X), +\fB\%curs_inopts\fP(3X), \fB\%curs_mouse\fP(3X), \fB\%curs_print\fP(3X), \fB\%curs_util\fP(3X), @@ -104,5 +134,6 @@ Thomas Dickey. \fB\%define_key\fP(3X), \fB\%keybound\fP(3X), \fB\%keyok\fP(3X), +\fB\%new_pair\fP(3X), \fB\%resizeterm\fP(3X), \fB\%wresize\fP(3X) diff --git a/contrib/ncurses/man/curs_get_wch.3x b/contrib/ncurses/man/curs_get_wch.3x index 02932b91a6e4..55d9ff264600 100644 --- a/contrib/ncurses/man/curs_get_wch.3x +++ b/contrib/ncurses/man/curs_get_wch.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_get_wch.3x,v 1.40 2024/04/20 19:23:03 tom Exp $ -.TH curs_get_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_get_wch.3x,v 1.71 2025/08/16 19:11:47 tom Exp $ +.TH curs_get_wch 3X 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -50,27 +50,25 @@ \fB\%mvget_wch\fP, \fB\%mvwget_wch\fP, \fB\%unget_wch\fP \- -get (or push back) a wide character from \fIcurses\fR terminal keyboard +get (or push back) a wide character from \fIcurses\fR terminal keyboard buffer .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint get_wch(wint_t *\fIwch\fP); -\fBint wget_wch(WINDOW *\fIwin\fP, wint_t *\fIwch\fP); -\fBint mvget_wch(int \fIy\fP, int \fIx\fP, wint_t *\fIwch\fP); -\fBint mvwget_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t *\fIwch\fP); +\fBint get_wch(wint_t * \fIwch\fP); +\fBint wget_wch(WINDOW * \fIwin\fP, wint_t * \fIwch\fP); +\fBint mvget_wch(int \fIy\fP, int \fIx\fP, wint_t * \fIwch\fP); +\fBint mvwget_wch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t * \fIwch\fP); .PP \fBint unget_wch(const wchar_t \fIwc\fP); .fi .SH DESCRIPTION .SS "Reading Characters" .B \%wget_wch -gathers a key stroke -.I wch -from the terminal keyboard associated with a +gathers a key event from the terminal keyboard associated with a .I curses window -.IR win , +.IR win "," returning .B OK if a wide character is read, @@ -84,48 +82,55 @@ if no key event is available. When input is pending, .B \%wget_wch stores an integer -identifying the key stroke in -.IR wch ; +identifying the key event in +.IR wch ";" for alphanumeric and punctuation keys, this value corresponds to the character encoding used by the terminal. -Use of the control key as a modifier often results in a distinct code. +Use of the control key as a modifier, +by holding it down while pressing and releasing another key, +often results in a distinct code. The behavior of other keys depends on whether .I win is in keypad mode; -see subsections \*(``Keypad Mode\*('' and \*(``Predefined Key Codes\*('' +see subsections \*(``Keypad Mode\*('' and \*(``Key Codes\*('' in \fB\%getch\fP(3X). .PP If no input is pending, then if the no-delay flag is set in the window (see \fB\%nodelay\fP(3X)), the function returns -.BR ERR ; +.BR ERR ";" otherwise, .I curses waits until the terminal has input. -If \fB\%cbreak\fP(3X) +If \fB\%cbreak\fP(3X) or \fB\%raw\fP(3X) has been called, this happens after one character is read. -If \fB\%nocbreak\fP(3X) +If \fB\%nocbreak\fP(3X) or \fB\%noraw\fP(3X) has been called, it occurs when the next newline is read. +(Because the terminal's canonical or \*(``cooked\*('' mode +is line-buffered, +multiple +.B \%wget_wch +calls may then be necessary to empty the input queue.) If \fB\%halfdelay\fP(3X) has been called, .I curses -waits until a character is typed or the specified delay elapses. +waits until input is available or the specified delay elapses. .PP If \fB\%echo\fP(3X) has been called, and the window is not a pad, .I curses -writes -.I wch +writes the wide character +from the input queue to the window (at the cursor position) per the following rules. .bP -If -.I wch -matches the terminal's erase character, +If the wide character +matches the terminal's erase character +(see \fB\%erasewchar\fP(3X)), the cursor moves leftward one position and the new position is erased as if \fB\%wmove\fP(3X) and then \fB\%wdelch\fP(3X) were called. @@ -138,62 +143,73 @@ are handled the same way. .bP .I curses writes any other -.I wch +wide character to the window, as with \fB\%wecho_wchar\fP(3X). .bP -If the window has been moved or modified since the last call to +If the window +.I win +has been moved or modified since the last call to \fB\%wrefresh\fP(3X), .I curses calls -.BR \%wrefresh . +.B \%wrefresh +on it. .PP -If -.I wch +If the wide character is a carriage return and \fBnl\fP(3X) has been called, -.B \%wgetch -stores the the character code for newline -(line feed) -in +.B \%wget_wch +stores the wide character code for line feed in .I wch instead. .SS "Ungetting Characters" .B \%unget_wch places -.I wch -into the input queue to be returned by the next call to -.BR \%wget_wch . -A single input queue serves all windows. +.I wc +into the input queue to be retrieved by the next call to +.BR \%wget_wch "." +A single input queue serves all windows associated with the screen. .SH RETURN VALUE .B \%wget_wch returns .B OK -when it reads a wide character and +when it reads a wide character, .B \%KEY_CODE_YES -when it reads a function key code. -It returns +when it reads a function key code, +and .B ERR -if +on failure. +.B \%wget_wch +fails if +its timeout expires without any data arriving, +which cannot happen if \fB\%nodelay\fP(3X) is in effect on the window. +.PP +In +.IR \%ncurses , +.B \%wget_wch +also fails if .bP the -.I \%WINDOW -pointer is -.BR NULL , -or +.I curses +screen has not been initialized, .bP -its timeout expires without any data arriving, +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, or .bP execution was interrupted by a signal, in which case -.B \%errno +.I \%errno is set to -.BR \%EINTR . +.IR \%EINTR "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position .RI ( y , -.IR x ) +.IR x ")" is outside the window boundaries. .PP .B \%unget_wch @@ -201,7 +217,18 @@ returns .B OK on success and .B ERR -if there is no more room in the input queue. +on failure. +In +.IR \%ncurses , +.B \%unget_wch +fails if +.bP +the +.I curses +screen has not been initialized, +or +.bP +there is no more room in the input queue. .SH NOTES See the \*(``NOTES\*('' section of \fB\%wgetch\fP(3X). .PP @@ -213,23 +240,21 @@ may be implemented as macros. .PP Unlike \fB\%wgetch\fP(3X), .B \%wget_wch -and its variants store the value of the input character in an additional +stores the value of the input character in an additional .I wch parameter instead of the return value. .PP Unlike -.BR \%ungetch , +.BR \%ungetch "," .B \%unget_wch -cannot distinguish function key codes -.B \%wget_wch -from conventional character codes. +cannot distinguish function key codes from conventional character codes. An application can overcome this limitation by pushing function key codes with .B \%ungetch and subsequently checking the return value of .B \%wget_wch for a match with -.BR \%KEY_CODE_YES . +.BR \%KEY_CODE_YES "." .SH EXTENSIONS See the \*(``EXTENSIONS\*('' section of \fB\%wgetch\fP(3X). .SH PORTABILITY @@ -239,14 +264,44 @@ extensions should condition their use on the visibility of the .B \%NCURSES_VERSION preprocessor macro. .PP -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. It specifies no error conditions for them. .PP See the \*(``PORTABILITY\*('' section of \fB\%wgetch\fP(3X) regarding the interaction of -.B \%wget_wch +.I \%wget_wch with signal handlers. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 +of the same year +specified functions named +.I \%wgetwch +(with its variants) +.IR \%ungetwch "." +.\" SVID 4, vol 3., pp. 496-499 +These were later additions to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +They differ from X/Open's later +.I \%wget_wch +and +.I \%unget_wch +in that +.I \%wgetwch +takes no +.I wch +argument, +but returns the (wide) key code as an +.I int +(with no provision for distinguishing a character code +from a function key code); +and +.I \%ungetwch +takes a +.RI non- const +.I int +argument. .SH SEE ALSO \fB\%curs_getch\fP(3X) describes comparable functions of the .I \%ncurses diff --git a/contrib/ncurses/man/curs_get_wstr.3x b/contrib/ncurses/man/curs_get_wstr.3x index 32ae541abaf9..b6daab6b64fe 100644 --- a/contrib/ncurses/man/curs_get_wstr.3x +++ b/contrib/ncurses/man/curs_get_wstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,17 +27,19 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_get_wstr.3x,v 1.48 2024/04/20 19:18:18 tom Exp $ -.TH curs_get_wstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_get_wstr.3x,v 1.79 2025/10/21 00:08:50 tom Exp $ +.TH curs_get_wstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq +.ds ^ \(ha .\} .el \{\ .ie t .ds `` `` .el .ds `` "" .ie t .ds '' '' .el .ds '' "" +.ds ^ ^ .\} . .de bP @@ -53,99 +55,136 @@ \fB\%mvgetn_wstr\fP, \fB\%mvwget_wstr\fP, \fB\%mvwgetn_wstr\fP \- -get a wide-character string from a \fIcurses\fR terminal keyboard +read a wide-character string from a \fIcurses\fR terminal keyboard .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint get_wstr(wint_t *\fIwstr\fP); -\fBint getn_wstr(wint_t *\fIwstr\fP, int \fIn\fP); -\fBint wget_wstr(WINDOW *\fIwin\fP, wint_t *\fIwstr\fP); -\fBint wgetn_wstr(WINDOW *\fIwin\fP, wint_t *\fIwstr\fP, int \fIn\fP); +\fBint get_wstr(wint_t * \fIwstr\fP); +\fBint wget_wstr(WINDOW * \fIwin\fP, wint_t * \fIwstr\fP); +\fBint mvget_wstr(int \fIy\fP, int \fIx\fP, wint_t * \fIwstr\fP); +\fBint mvwget_wstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t * \fIwstr\fP); .PP -\fBint mvget_wstr(int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP); -\fBint mvgetn_wstr(int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP, int \fIn\fP); -\fBint mvwget_wstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP); -\fBint mvwgetn_wstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP, int \fIn\fP); +\fBint getn_wstr(wint_t * \fIwstr\fP, int \fIn\fP); +\fBint wgetn_wstr(WINDOW * \fIwin\fP, wint_t * \fIwstr\fP, int \fIn\fP); +\fBint mvgetn_wstr(int \fIy\fP, int \fIx\fP, wint_t * \fIwstr\fP, int \fIn\fP); +\fBint mvwgetn_wstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t * \fIwstr\fP, int \fIn\fP); .fi .SH DESCRIPTION +.B \%wget_wstr +populates a user-supplied wide-character string buffer +.I wstr +by repeatedly calling \fBwget_wch\fP(3X) +with the +.I win +argument +until a line feed or carriage return character is input. The function -\fBwgetn_wstr\fP -is equivalent to a series of calls to -\fBwget_wch\fP(3X) -until a newline or carriage return terminates the series: .bP -The terminating character is not included in the returned string. +does not copy the terminating character to +.IR wstr ";" .bP -An end-of-file condition is represented by \fBWEOF\fP, -as defined in \fB<wchar.h>\fP. +populates +.I wstr +with +.I WEOF +(as defined in +.IR \%wchar.h ) +if an end-of-file condition occurs on the input; .bP -In all instances, the end of the string is terminated -by a null \fBwchar_t\fP. +always terminates the string with a null wide character +(after any +.IR WEOF ); .bP -The function stores the result in the area pointed to -by the \fIwstr\fP parameter. +interprets the screen's wide erase and wide kill characters +(see \fB\%erasewchar\fP(3X) and \fB\%killwchar\fP(3X)); .bP -The function reads at most \fIn\fP characters, -thus preventing a possible overflow of the input buffer. -.IP -Any attempt to enter more characters -(other than the terminating newline or carriage return) -causes a beep. -.IP -Function keys also cause a beep and are ignored. +recognizes function keys only if the screen's keypad option is enabled +(see \fB\%keypad\fP(3X)); +.bP +treats the function keys +.B \%KEY_LEFT +and +.B \%KEY_BACKSPACE +the same as the wide erase character; +and +.bP +discards function key inputs other than those +treated as the wide erase or wide kill characters, +calling \fBbeep\fP(3X). +.PP +The wide erase character replaces the character at the end of the buffer +with a null wide character, +while the wide kill character does the same for the entire buffer. .PP -The user's \fIerase\fP and \fIkill\fP characters are interpreted: +If the screen's echo option is enabled +(see \fBecho\fP(3X)), +.B \%wget_wstr +updates +.I win +with \fB\%wadd_wch\fP(3X). +Further, .bP -The \fIerase\fP character (e.g., \fB^H\fP) erases the character -at the end of the buffer, moving the cursor to the left. -.IP -If \fIkeypad\fP mode is on for the window, -\fBKEY_LEFT\fP and \fBKEY_BACKSPACE\fP -are both considered equivalent to the user's \fIerase\fP character. +the wide erase character +and its function key synonyms +move the cursor to the left, +and .bP -The \fIkill\fP character (e.g., \fB^U\fP) erases the entire buffer, -leaving the cursor at the beginning of the buffer. +the wide kill character returns the cursor to where it was located when +.B \%wget_wstr +was called. .PP -Characters input are echoed only if \fBecho\fP is currently on. -In that case, -backspace is echoed as deletion of the previous character -(typically a left motion). +.B \%wgetn_wstr +is similar, +but reads at most +.I n +wide characters, +aiding the application to avoid overrunning the buffer to which +.I wstr +points. +.I curses +ignores an attempt to input more than +.I n +wide characters +(other than the terminating line feed or carriage return), +calling \fBbeep\fP(3X). +If +.I n +is negative, +.B \%wgetn_wstr +reads up to +.I LINE_MAX +wide characters +(see +.IR sysconf (3)). .PP -The -\fBgetn_wstr\fP, -\fBmvgetn_wstr\fP, -\fBmvwgetn_wstr\fP, and -\fBwgetn_wstr\fP -functions are identical -to the -\fBget_wstr\fP, -\fBmvget_wstr\fP, -\fBmvwget_wstr\fP, and -\fBwget_wstr\fP -functions, respectively, -except that the -\fB*n_*\fP -versions read at most -\fIn\fP -characters, letting the application prevent overflow of the -input buffer. +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All of these functions return the integer \fBOK\fP upon successful completion. -If unsuccessful, they return \fBERR\fP. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open defines no error conditions. -.PP -In this implementation, -these functions return an error +In +.IR \%ncurses "," +these functions fail if +.bP +the +.I curses +screen has not been initialized, .bP -if the window pointer is null, +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, .bP -if its timeout expires without having any data, or +.I wstr +is a null pointer, +or .bP -if the associated call to -\fBwget_wch\fP -failed. +an internal \fB\%wget_wch\fP(3X) call fails. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -153,70 +192,206 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -Any of these functions other than -\fBwgetn_wstr\fP -may be macros. +All of these functions except +.B \%wgetn_wstr +may be implemented as macros. +.PP +Reading input that overruns the buffer pointed to by +.I wstr +causes undefined results. +Use the +.BR n -infixed +functions, +and allocate sufficient storage for +.I wstr +\(em at least +.IR n +1 +times +.BR sizeof(wchar_t) "." .PP -Using -\fBget_wstr\fP, -\fBmvget_wstr\fP, -\fBmvwget_wstr\fP, or -\fBwget_wstr\fP -to read a line that -overflows the array pointed to by -\fBwstr\fP -causes undefined -results. -The use of -\fBgetn_wstr\fP, -\fBmvgetn_wstr\fP, -\fBmvwgetn_wstr\fP, or -\fBwgetn_wstr\fP, -respectively, is recommended. +These functions cannot store a +.B KEY_ +value in +.I wstr +because there is no way to distinguish it +from a valid +.I \%wchar_t +value. .PP -These functions cannot return \fBKEY_\fP values because there -is no way to distinguish a \fBKEY_\fP value from a valid \fBwchar_t\fP value. +While these functions conceptually implement +a series of calls to +.BR \%wget_wch "," +they also temporarily change properties of the +.I curses +screen to permit simple editing of the input buffer. +Each function saves the screen's state, +calls \fBnl\fP(3X), +and, +if the screen was in canonical (\*(``cooked\*('') mode, +\fB\%cbreak\fP(3X). +Before returning, +it restores the saved screen state. +Other implementations differ in detail, +affecting which control characters they can accept in the buffer; +see section \*(``PORTABILITY\*('' below. +.PP +Unlike \fBgetstr\fP(3X) and related functions of +.IR \%ncurses 's +non-wide API, +these functions do not return +.B \%KEY_RESIZE +if a +.I \%SIGWINCH +event interrupts the function. +.SH EXTENSIONS +.BR \%getn_wstr "," +.BR \%wgetn_wstr "," +.BR \%mvgetn_wstr "," +and +.BR \%mvwgetn_wstr "'s" +handing of negative +.I n +values is an +.I \%ncurses +extension. .SH PORTABILITY -These functions are described in The Single Unix Specification, Version 2. -No error conditions are defined. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. .PP -This implementation returns \fBERR\fP if the window pointer is null, -or if the lower-level \fBwget_wch\fP call returns an \fBERR\fP. -In the latter case, -an \fBERR\fP return without other data is treated as an end-of-file condition, -and the returned array contains a \fBWEOF\fP followed by a null \fBwchar_t\fP. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -X/Open curses documented these functions to pass an array of \fBwchar_t\fP -in 1997, but that was an error because of this part of the description: +Issue\ 4 documented these functions as passing an array of +.IR wchar_t "," +but that was an error, +conflicting with the following language in the standard. .RS .PP -The effect of \fBget_wstr\fP is as though a series of calls to -\fBget_wch\fP were made, until a newline character, end-of-line character, or -end-of-file character is processed. +The effect of +.IR \%get_wstr "()" +is as though a series of calls to +.IR \%get_wch "()" +were made, +until a newline character, +end-of-line character, +or end-of-file character is processed. +.\" X/Open Curses Issue 4, Version 2, p. 96. .RE .PP -The latter function \fIget_wch\fP can return a negative value, -while \fBwchar_t\fP is a unsigned type. -All of the vendors implement this using \fBwint_t\fP, following the standard. +.I \%get_wch +can return a negative value +.RI ( WEOF ), +but +.I \%wchar_t +is a unsigned type. +All of the vendors implement these functions using +.IR \%wint_t "," +following the Issue\ 7 standard. .PP -X/Open Curses, Issue 7 (2009) is unclear regarding whether -the terminating \fInull \fBwchar_t\fR -value is counted in the length parameter \fIn\fP. -X/Open Curses, Issue 7 revised the corresponding description -of \fBwgetnstr\fP to address this issue. -The unrevised description of \fBwget_nwstr\fP can be interpreted either way. -This implementation counts the terminator in the length. +X/Open Curses Issue\ 7 is unclear whether the terminating null wide character +counts toward the length parameter +.IR n "." +A similar issue affected +.I \%wgetnstr +in Issue\ 4, +Version\ 2; +Issue\ 7 revised that function's description to address the issue, +but not that of +.IR \%wget_nwstr "," +leaving it ambiguous. +.I \%ncurses +counts the terminator in the length. .PP -X/Open Curses does not specify what happens if the length \fIn\fP is negative. +X/Open Curses does not specify what happens if the length +.I n +is negative. +.bP +For consistency with +.IR \%wgetnstr "," +.I \%ncurses +6.2 uses a limit based on +.IR LINE_MAX "." +.bP +Some other implementations +(such as Solaris +.IR xcurses ) +do the same, +while others +.RI \%( PDCurses ) +do not permit a negative +.IR n "." .bP -For analogy with \fBwgetnstr\fP, -\fI\%ncurses\fP 6.2 uses a limit (based on \fBLINE_MAX\fP). +NetBSD\ 7 +.I curses +imitates +.I \%ncurses +6.1 and earlier, +treating a negative +.I n +as an unbounded count of wide characters. +.PP +Implementations vary in their handling of input control characters. .bP -Some other implementations (such as Solaris xcurses) do the same, -while others (PDCurses) do not allow this. +While they may enable the screen's echo option, +some do not take it out of raw mode, +and may take cbreak mode into account +when deciding whether to handle echoing within +.I \%wgetn_wstr +or to rely on it as a side effect of calling +.IR \%wget_wch "." +.IP +Since 1995, +.I \%ncurses +has provided handlers for +.I SIGINTR +and +.I SIGQUIT +events, +which are typically generated at the keyboard with +.B \*^C +and +.B \*^\e +respectively. +In cbreak mode, +those handlers catch a signal and stop the program, +whereas other implementations write those characters into the buffer. .bP -NetBSD 7 curses imitates \fI\%ncurses\fP 6.1 in this regard, -treating a \fB\-1\fP as an indefinite number of characters. +Starting with +.I \%ncurses +6.3 (2021), +.I \%wgetn_wstr +preserves raw mode if the screen was already in that state, +allowing one to enter the characters the terminal interprets +as interrupt and quit events +into the buffer, +for consistency with SVr4 +.IR curses 's +.IR \%wgetnstr . +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 +of the same year +specified functions named +.I \%wgetwstr +and +.I \%wgetnwstr +(and the usual variants). +.\" SVID 4, vol 3., p. 500 +These were later additions to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +Except in name, +their declarations did not differ from X/Open's later +.I \%wget_wstr +and +.I \%wgetn_wstr +until +X/Open Curses Issue 7 (2009) +eventually changed the type of the buffer argument to a pointer to +.IR \%wint_t "." .SH SEE ALSO \fB\%curs_getstr\fP(3X) describes comparable functions of the .I \%ncurses diff --git a/contrib/ncurses/man/curs_getcchar.3x b/contrib/ncurses/man/curs_getcchar.3x index 523cc99df92c..3318c4f7f816 100644 --- a/contrib/ncurses/man/curs_getcchar.3x +++ b/contrib/ncurses/man/curs_getcchar.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2001-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,16 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_getcchar.3x,v 1.49 2024/04/20 18:55:09 tom Exp $ -.TH curs_getcchar 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_getcchar.3x,v 1.57 2025/02/23 13:48:31 tom Exp $ +.TH curs_getcchar 3X 2025-02-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds ' \(aq +.\} +.el \{\ +.ie t .ds ' \(aq +.el .ds ' ' +.\} +. .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -41,146 +49,302 @@ convert between a wide-character string and a \fIcurses\fR complex character .nf \fB#include <curses.h> .PP -\fBint getcchar( -.B " const cchar_t *\fIwch\fP," -.B " wchar_t *\fIwc\fP," -.B " attr_t *\fIattrs\fP," -.B " short *\fIcolor_pair\fP," -.B " void *\fIopts\fP );" -.PP -.B "int setcchar(" -.B " cchar_t *\fIwch\fP," -.B " const wchar_t *\fIwc\fP," -.B " const attr_t \fIattrs\fP," -.B " short \fIcolor_pair\fP," -.B " const void *\fIopts\fP );" +\fBint getcchar(const cchar_t * \fIwch\fP, wchar_t * \fIwc\fP, + attr_t * \fIattrs\fP, short * \fIpair\fP, void * \fIopts\fP); +\fBint setcchar(cchar_t * \fIwch\fP, const wchar_t * \fIwc\fP, + const attr_t \fIattrs\fP, short \fIpair\fP, const void * \fIopts\fP); .fi .SH DESCRIPTION +The +.I curses +complex character data type +.I \%cchar_t +is a structure type comprising +a wide-character string, +a set of attributes, +and +a color pair identifier. +The +.I \%cchar_t +structure is opaque; +do not attempt to access its members directly. +The library provides functions to manipulate this type. .SS getcchar -The \fBgetcchar\fP function gets a wide-character string -and rendition from a \fBcchar_t\fP argument. -When \fIwc\fP is not a null pointer, -the \fBgetcchar\fP function does the following: -.bP -Extracts information from a \fBcchar_t\fP value \fIwch\fP +.B \%getcchar +destructures a +.I \%cchar_t +into its components. +.PP +If +.I wc +is not a null pointer, +.BR \%getcchar : .bP -Stores the character attributes in the location pointed to by \fIattrs\fP +stores the wide-character string in the +.I curses +complex character +.I wch +into +.IR wc ; .bP -Stores the color pair in the location pointed to by \fIcolor_pair\fP +stores the attributes in +.IR attrs ; +and .bP -Stores the wide-character string, -characters referenced by \fIwch\fP, into the array pointed to by \fIwc\fP. +stores the color pair identifier in +.IR pair . .PP -When -\fIwc\fP -is a null pointer, the -\fBgetcchar\fP -function does the following: -.bP -Obtains the number of wide characters pointed to by \fIwch\fP -.bP -Does not change the data referenced by -\fIattrs\fP -or -\fIcolor_pair\fP +If +.I wc +is a null pointer, +.B \%getcchar +counts the +.I \%wchar_t +wide characters in +.IR wch , +returns that value, +and leaves +.I attrs +and +.I pair +unchanged. .SS setcchar -The \fBsetcchar\fP function initializes the location pointed to by \fIwch\fP -by using: -.bP -The character attributes in -\fIattrs\fP -.bP -The color pair in -\fIcolor_pair\fP -.bP -The wide-character string pointed to by \fIwc\fP. -The string must be L'\e0' terminated, -contain at most one spacing character, -which must be the first. -.IP -Up to \fBCCHARW_MAX\fP\-1 non-spacing characters may follow. -Additional non-spacing characters are ignored. -.IP +.B \%setcchar +constructs a +.I curses +complex character +.I wch +from the components +.IR wc , +.IR attrs , +and +.IR pair . +The wide-character string +.I wch +must be terminated with a null wide character +.B L\*'\e0\*' +and must contain at most one spacing character, +which, +if present, +must be the first wide character in the string. +.PP +Up to +.BR \%CCHARW_MAX\ \-\ 1 +non-spacing characters may follow +(see \fB\%curs_variables\fP(3X)). +.I \%ncurses +ignores any additional non-spacing characters. +.PP The string may contain a single control character instead. -In that case, no non-spacing characters are allowed. +In that case, +no non-spacing characters are allowed. .SH RETURN VALUE -When \fIwc\fP is a null pointer, -\fBgetcchar\fP returns the number of wide characters referenced by -\fIwch\fP, -including one for a trailing null. +If +.B \%getcchar +is passed a null pointer as its +.I wc +argument, +it returns the number of wide characters for a given +.I wch +that it would store in +.IR wc "," +counting a trailing null wide character. +If +.B \%getcchar +is not passed a null pointer as its +.I wc +argument, +it returns +.B OK +on success and +.B ERR +on failure. +.PP +In +.IR \%ncurses , +.B \%getcchar +returns +.B ERR +if either +.I attrs +or +.I pair +is a null pointer and +.I wc +is not. .PP -When \fIwc\fP is not a null pointer, -\fBgetcchar\fP returns \fBOK\fP upon successful completion, -and \fBERR\fP otherwise. +.B \%setcchar +returns +.B OK +on success and +.B ERR +on failure. .PP -Upon successful completion, \fBsetcchar\fP returns \fBOK\fP. -Otherwise, it returns \fBERR\fP. +In +.IR \%ncurses , +.B \%setcchar +returns +.B ERR +if +.bP +.I wch +is a null pointer, +.bP +.I wc +starts with a (wide) control character +and contains any other wide characters, +or +.bP +.I pair +has a negative value. .SH NOTES -The \fIwch\fP argument may be a value generated by a call to -\fBsetcchar\fP or by a function that has a \fBcchar_t\fP output argument. -If \fIwch\fP is constructed by any other means, the effect is unspecified. +.I wch +may be a value stored by +.B \%setcchar +or another +.I curses +function with a writable +.I \%cchar_t +argument. +If +.I wch +is constructed by any other means, +the library's behavior is unspecified. .SH EXTENSIONS -X/Open Curses documents the \fIopts\fP argument as reserved for future use, -saying that it must be null. -This implementation -uses that parameter in ABI 6 for the functions which have a color pair -parameter to support extended color pairs: +X/Open Curses documents the +.I opts +argument as reserved for future use, +saying that it must be a null pointer. +The +.IR \%ncurses \ 6 +ABI uses it with functions that have a color pair parameter +to support extended color pairs. .bP -For functions which modify the color, e.g., \fBsetcchar\fP, -if \fIopts\fP is set it is treated as a pointer to \fBint\fP, -and used to set the color pair instead of the \fBshort\fP pair parameter. +In functions that assign colors, +such as +.BR \%setcchar "," +if +.I opts +is not a null pointer, +.I \%ncurses +treats it as a pointer to +.IR int "," +and interprets it instead of the +.I short +.I pair +parameter as a color pair identifier. .bP -For functions which retrieve the color, e.g., \fBgetcchar\fP, -if \fIopts\fP is set it is treated as a pointer to \fBint\fP, -and used to retrieve the color pair as an \fBint\fP value, -in addition retrieving it via the standard pointer to \fBshort\fP parameter. +In functions that retrieve colors, +such as +.BR \%getcchar "," +if +.I opts +is not a null pointer, +.I \%ncurses +treats it as a pointer to +.IR int "," +and stores the retrieved color pair identifier there +as well as in the +.I short +.I pair +parameter +(which may therefore undergo a narrowing conversion). .SH PORTABILITY -The \fBCCHARW_MAX\fP symbol is specific to \fI\%ncurses\fP. -X/Open Curses does not provide details for the layout of the \fBcchar_t\fP -structure. -It tells what data are stored in it: +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +These functions are described in X/Open Curses Issue\ 4. +It specifies no error conditions for them. +.PP +X/Open Curses does not detail the layout of the +.I \%cchar_t +structure, +describing only its minimal required contents: .bP -a spacing character (\fBwchar_t\fP, i.e., 32-bits). +a spacing wide character +.RI \%( wchar_t ), .bP -non-spacing characters (again, \fBwchar_t\fP's). +at least five non-spacing wide characters +.RI \%( wchar_t ; +see below), .bP -attributes (at least 16 bits, inferred from the various ACS- and WACS-flags). +attributes +(at least 15 bits' worth, +inferred from the count of specified +.I WA_ +constants), +.\" See X/Open Curses Issue 7, p. 307. .bP -color pair (at least 16 bits, inferred from the \fBunsigned short\fP type). +a color pair identifier +(at least 16 bits, +inferred from the +.I short +type used to encode it). .PP -The non-spacing characters are optional, -in the sense that zero or more may be stored in a \fBcchar_t\fP. +Non-spacing characters are optional, +in the sense that zero or more may be stored in a +.IR \%cchar_t "." XOpen/Curses specifies a limit: .RS 4 .PP -Implementations may limit the number of non-spacing characters that can be -associated with a spacing character, provided any limit is at least 5. +Implementations may limit the number of non-spacing characters that can +be associated with a spacing character, +provided any limit is at least 5. .RE .PP -The Unix implementations at the time follow that limit: +Then-contemporary Unix implementations adhered to that limit. .bP -AIX\ 4 and OSF1\ 4 use the same declaration with an array of 5 non-spacing -characters \fIz\fP and a single spacing character \fIc\fP. +AIX\ 4 and OSF/1\ 4 used the same declaration with +a single spacing wide character +.I c +and an array of 5 non-spacing wide characters +.IR z "." .bP -HP-UX\ 10 uses an opaque structure with 28 bytes, -which is large enough for the 6 \fBwchar_t\fP values. +HP-UX\ 10 used an opaque structure of 28 bytes, +large enough for 6 +.I \%wchar_t +values. .bP -Solaris \fIxpg4\fP curses uses a single array of 6 \fBwchar_t\fP values. +Solaris +.I xcurses +uses a single array of 6 +.I \%wchar_t +values. .PP -This implementation's \fBcchar_t\fP was defined in 1995 -using \fB5\fP for the total of spacing and non-spacing characters -(\fBCCHARW_MAX\fP). +.I \%ncurses +defined its +.I \%cchar_t +in 1995 using 5 as the +.I total +of spacing and non-spacing characters +.RB \%( CCHARW_MAX ). That was probably due to a misreading of the AIX\ 4 header files, -because the X/Open Curses document was not generally available at that time. -Later (in 2002), this detail was overlooked when beginning to implement -the functions using the structure. +because the X/Open Curses document +was not generally available at that time. +Later (in 2002), +this detail was overlooked when work began to implement the functions +using the structure. .PP -In practice, even four non-spacing characters may seem enough. -X/Open Curses documents possible uses for non-spacing characters, -including using them for ligatures between characters -(a feature apparently not supported by any curses implementation). -Unicode does not limit the (analogous) number of combining characters, -so some applications may be affected. +In practice, +a mere four non-spacing characters may seem adequate. +X/Open Curses documents possible applications of non-spacing characters, +including their use as ligatures +(a feature apparently not supported by any +.I curses +implementation). +Unicode does not limit the (analogous) number of combining characters +in a grapheme cluster; +some applications may be affected. +.I \%ncurses +can be compiled with a different +.B CCHARW_MAX +value; +doing so alters the library's ABI. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_attr\fP(3X), diff --git a/contrib/ncurses/man/curs_getch.3x b/contrib/ncurses/man/curs_getch.3x index 9433c6148583..1d32d89f4d45 100644 --- a/contrib/ncurses/man/curs_getch.3x +++ b/contrib/ncurses/man/curs_getch.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_getch.3x,v 1.87 2024/04/20 19:18:18 tom Exp $ -.TH curs_getch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_getch.3x,v 1.134 2025/11/12 01:06:36 tom Exp $ +.TH curs_getch 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -57,15 +57,15 @@ \fB\%mvwgetch\fP, \fB\%ungetch\fP, \fB\%has_key\fP \- -get (or push back) characters from \fIcurses\fR terminal keyboard +get (or push back) characters from \fIcurses\fR terminal keyboard buffer .SH SYNOPSIS .nf .B #include <curses.h> .PP .B int getch(void); -.B int wgetch(WINDOW *\fIwin\fP); +.B int wgetch(WINDOW * \fIwin\fP); .B int mvgetch(int \fIy\fP, int \fIx\fP); -.B int mvwgetch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); +.B int mvwgetch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP); .PP .B int ungetch(int \fIc\fP); .PP @@ -76,18 +76,25 @@ get (or push back) characters from \fIcurses\fR terminal keyboard .SH DESCRIPTION .SS "Reading Characters" .B \%wgetch -gathers a key stroke from the terminal keyboard associated with a +gathers a key event from the terminal keyboard associated with a .I curses window -.IR win . +.IR win "." \fB\%ncurses\fP(3X) describes the variants of this function. .PP When input is pending, .B \%wgetch -returns an integer identifying the key stroke; +returns an integer identifying the key event; for alphanumeric and punctuation keys, +the space bar, +and (usually) the Backspace, +Tab, +Return, +and Escape keys, this value corresponds to the character encoding used by the terminal. -Use of the control key as a modifier often results in a distinct code. +Use of the control key as a modifier, +by holding it down while pressing and releasing another key, +often results in a distinct code. The behavior of other keys depends on whether .I win is in keypad mode; @@ -97,20 +104,29 @@ If no input is pending, then if the no-delay flag is set in the window (see \fB\%nodelay\fP(3X)), the function returns -.BR ERR ; +.BR ERR ";" otherwise, .I curses waits until the terminal has input. -If \fB\%cbreak\fP(3X) +If \fB\%cbreak\fP(3X) or \fB\%raw\fP(3X) has been called, -this happens after one character is read. -If \fB\%nocbreak\fP(3X) +this happens after +.I curses +reads one key event. +If \fB\%nocbreak\fP(3X) or \fB\%noraw\fP(3X) has been called, -it occurs when the next newline is read. +it occurs when +.I curses +reads a newline. \" "newline" because canonical mode normalizes NL/CR +(Because the terminal's canonical or \*(``cooked\*('' mode +is line-buffered, +multiple +.B \%wgetch +calls may then be necessary to empty the input queue.) If \fB\%halfdelay\fP(3X) has been called, .I curses -waits until a character is typed or the specified delay elapses. +waits until input is available or the specified delay elapses. .PP If \fB\%echo\fP(3X) has been called, and the window is not a pad, @@ -123,7 +139,9 @@ per the following rules. .bP If .I c -matches the terminal's erase character, +matches the terminal's erase character +(see \fB\%erasechar\fP(3X)), +and the cursor is not at the window's leftmost column, the cursor moves leftward one position and the new position is erased as if \fB\%wmove\fP(3X) and then \fB\%wdelch\fP(3X) were called. @@ -140,11 +158,14 @@ writes any other to the window, as with \fB\%wechochar\fP(3X). .bP -If the window has been moved or modified since the last call to +If the window +.I win +has been moved or modified since the last call to \fB\%wrefresh\fP(3X), .I curses calls -.BR \%wrefresh . +.B \%wrefresh +on it. .PP If .I c @@ -152,48 +173,52 @@ is a carriage return and \fBnl\fP(3X) has been called, .B \%wgetch returns the character code for line feed instead. .SS "Keypad Mode" -To -.IR curses , -key strokes not from the alphabetic section of the keyboard -(those corresponding to the ECMA-6 character set\(emsee -\fIascii\fP(7)\(emoptionally modified by either the control or shift -keys) -are treated as +Call \fB\%keypad\fP(3X) on a window to configure keypad mode +when reading input from it. +In +.IR "keypad mode" "," +.I curses +treats key strokes not from the alphabetic section of the keyboard +(those corresponding to the ECMA-6 character set \(em +see \fI\%ascii\fP(7) \(em +optionally modified by either the control or shift keys) +as .I function keys. (In -.IR curses , +.IR curses "," the term \*(``function key\*('' includes but is not limited to keycaps engraved with \*(``F1\*('', \*(``PF1\*('', and so on.) -If the window is in keypad mode, -these produce a numeric code corresponding to the +If a window is in keypad mode, +.B \%wgetch +translates these key strokes to a numeric code corresponding to the .B KEY_ -symbols listed in subsection \*(``Predefined Key Codes\*('' below; -otherwise, -they transmit a sequence of codes typically starting with the escape -character, -and which must be collected with multiple +symbols listed in subsection \*(``Key Codes\*('' below. +If the window is not in keypad mode, +the input queue populates with +the characters of the function key's escape sequence, +which the application must collect individually with multiple .B \%wgetch calls. .bP The .I \%curses.h header file declares many -.I "predefined function keys" +.I "function keys" whose names begin with -.BR KEY_ ; -these object-like macros have values outside the range of eight-bit -character codes. +.BR KEY_ ";" +these object-like macros +have integer values outside the range of eight-bit character codes. .bP In -.IR \%ncurses , +.IR \%ncurses "," .I "user-defined function keys" are configured with \fB\%define_key\fP(3X); they have no names, -but are also expected to have values outside the range of eight-bit -codes. +but are also expected to +have integer values outside the range of eight-bit character codes. .PP A variable intended to hold a function key code must thus be of type .I short @@ -204,55 +229,78 @@ their function keys produce character sequences prefixed with the escape character ESC. This fact implies that .I curses -cannot know whether the terminal has sent an ESC key stroke or the -beginning of a function key's character sequence without waiting to see -if, +cannot distinguish a user's press of the escape key +(assuming it sends ESC) +from the beginning of a function key's character sequence without +waiting to see if, and how soon, further input arrives. -When -.I curses -reads such an ambiguous character, -it sets a timer. -If the remainder of the sequence does not arrive within the designated -time, +.bP +If the escape sequence +matches a string capability defining a function key +for the terminal type +(such as +.B \%key_home +.RB \%( khome ) +or +.B \%key_up +.RB \%( kuu1 )), .B \%wgetch -returns the prefix character; -otherwise, -it returns the function key code corresponding to the unique sequence +returns the function key code corresponding to the unique sequence defined by the terminal. +.bP +If the escape sequence matches no function keys +defined for the terminal type, +call +.B \%wgetch +repeatedly to obtain +the codes of the individual characters of the sequence, +in the order they occurred in the input. +.bP +If +.B \%wgetch +cannot decide the validity of the input as a function key +because it has not read enough characters to disambiguate it, +the function waits until it has this information or the +.I "escape delay" +elapses. +Configure the escape delay +with the global variable +.BR \%ESCDELAY "," +an extension +(see section \*(``EXTENSIONS\*('' below), +or the environment variable of the same name +(see section \*(``ENVIRONMENT\*('' of \fB\%ncurses\fP(3X)), +also an extension. +.PP Consequently, a user of a .I curses -application may experience a delay after pressing ESC while +application that employs keypad mode +may experience a pause or \*(``hang\*('' +after pressing the escape key while .I curses -disambiguates the input; -see section \*(``EXTENSIONS\*('' below. +collects sufficient characters to disambiguate the input. If the window is in \*(``no time-out\*('' mode, -the timer does not expire; -it is an infinite -(or very large) -value. -See \fB\%notimeout\fP(3X). -Because function key sequences usually begin with an escape character, -the terminal may appear to hang in no time-out mode after the user has -pressed ESC. -Generally, +the escape delay is effectively infinite; +see \fB\%notimeout\fP(3X). +In the event of such a pause, further typing \*(``awakens\*('' -.IR curses . +.IR curses "." .SS "Ungetting Characters" .B \%ungetch places .I c into the input queue to be returned by the next call to -.BR \%wgetch . -A single input queue serves all windows. -.SS "Predefined Key Codes" +.BR \%wgetch "." +A single input queue serves all windows associated with the screen. +.SS "Key Codes" The header file .I \%curses.h defines the following function key codes. .bP Except for the special case of -.BR \%KEY_RESIZE , +.BR \%KEY_RESIZE "," a window's keypad mode must be enabled for .B \%wgetch to read these codes from it. @@ -273,10 +321,11 @@ dominant position in industry. .\" get_wch(3X) or having that page cross reference this one? .TS Lb Lb -Lb Lx. +Lb Lw(36n)x. Symbol Key name = KEY_BREAK Break key +.ne 4 KEY_DOWN Arrow keys KEY_UP \^ KEY_LEFT \^ @@ -394,13 +443,15 @@ correspond to a physical key. .bP .B \%wgetch returns -.BR \%KEY_RESIZE , +.BR \%KEY_RESIZE "," even if the window's keypad mode is disabled, -when +if .I \%ncurses -handles a -.B \%SIGWINCH -signal; +has handled a +.I \%SIGWINCH +signal since +.B \%wgetch +was called; see \fB\%initscr\fP(3X) and \fB\%resizeterm\fP(3X). .bP .B \%wgetch @@ -410,59 +461,92 @@ to indicate that a mouse event is pending collection; see \fB\%curs_mouse\fP(3X). Receipt of this code requires a window's keypad mode to be enabled, because to interpret mouse input -(as with with \fI\%xterm\fP(1)'s mouse prototocol), +(as with \fI\%xterm\fP(1)'s mouse protocol), .I \%ncurses must read an escape sequence, as with a function key. .SS "Testing Key Codes" In -.IR \%ncurses , +.IR \%ncurses "," .B \%has_key returns a Boolean value indicating whether the terminal type recognizes its parameter as a key code value. See also \fB\%define_key\fP(3X) and \fB\%key_defined\fP(3X). .SH RETURN VALUE -Except for -.BR \%has_key , -these functions return -.B OK -on success and +.B \%wgetch +returns a key code identifying the key event as described above, +which may include +.B \%KEY_RESIZE +or +.B \%KEY_MOUSE +indicating non-key events, +or .B ERR on failure. +.B \%wgetch +fails if +its timeout expires without any data arriving, +which cannot happen if \fB\%nodelay\fP(3X) is in effect on the window. .PP -Functions taking a +In +.IR \%ncurses , +.B \%wgetch +also fails if +.bP +the +.I curses +screen has not been initialized, +.bP +(for functions taking a .I \%WINDOW -pointer argument fail if the pointer is -.BR NULL . +pointer argument) +.I win +is a null pointer, +or +.bP +execution was interrupted by a signal, +in which case the library sets +.I \%errno +to +.IR \%EINTR "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position .RI ( y , -.IR x ) +.IR x ")" is outside the window boundaries. .PP -.B \%wgetch -also fails if +.B \%ungetch +returns +.B OK +on success and +.B ERR +on failure. +In +.IR \%ncurses , +.B \%ungetch +fails if .bP -its timeout expires without any data arriving, +the +.I curses +screen has not been initialized, or .bP -execution was interrupted by a signal, -in which case -.B \%errno -is set to -.BR \%EINTR . -.PP -.B \%ungetch -fails if there is no more room in the input queue. +there is no more room in the input queue. .PP .B \%has_key returns .B TRUE or -.BR FALSE . +.BR FALSE "." .SH NOTES +.BR \%getch "," +.BR \%mvgetch "," +and +.B \%mvwgetch +may be implemented as macros. +.PP .I curses discourages assignment of the ESC key to a discrete function by the programmer because the library requires a delay while it awaits the @@ -472,7 +556,7 @@ Some key strokes are indistinguishable from control characters; for example, .B \%KEY_ENTER may be the same as -.BR \*^M , +.BR \*^M "," .\" as with att630 or pccon+keys and .B \%KEY_BACKSPACE @@ -480,17 +564,17 @@ may be the same as .B \*^H .\" as with att505 or vt52-basic or -.BR \*^? . +.BR \*^? "." .\" as with pccon+keys or vt320 -Consult the terminal's +Consult the .I \%term\%info -entry to determine whether this is the case; +entry for the terminal type to determine whether this is the case; see \fB\%infocmp\fP(1). Some .I curses implementations, including -.IR \%ncurses , +.IR \%ncurses "," honor the .I \%term\%info key definitions; @@ -502,7 +586,7 @@ sections of a keyboard because (most) terminals do. .B \%KEY_ENTER refers to the key on the numeric keypad and, like other function keys, -and is reliably recognized only if the window's keypad mode is enabled. +is reliably recognized only if the window's keypad mode is enabled. .bP The .I \%term\%info @@ -529,7 +613,7 @@ Depending on the terminal mode (raw, cbreak, or -\*(``cooked\*(''), +canonical), and whether \fB\%nl\fP(3X) or \fB\%nonl\fP(3X) has been called, .B \%wgetch may return either a carriage return or line feed upon an Enter or Return @@ -541,22 +625,22 @@ with \fB\%echo\fP(3X) and neither \fB\%cbreak\fP(3X) nor \fB\%raw\fP(3X) is not well-defined. .PP Historically, -the list of key code macros above was influenced by the -function-key-rich keyboard of the AT&T 7300 +the list of key code macros above was influenced by the keyboard of the +AT&T 7300 (also known variously as the \*(``3B1\*('', \*(``Safari 4\*('', and \*(``UNIX PC\*(''), -a 1985 machine. -Today's computer keyboards are based that of the IBM PC/AT and tend to -have fewer. +a 1985 machine rich in function keys. +Today's computer keyboards are based on that of the IBM PC/AT +and tend to have fewer. A .I curses application can expect such a keyboard to transmit key codes -.BR \%KEY_UP , -.BR \%KEY_DOWN , -.BR \%KEY_LEFT , -.BR \%KEY_RIGHT , -.BR \%KEY_HOME , -.BR \%KEY_END , +.BR \%KEY_UP "," +.BR \%KEY_DOWN "," +.BR \%KEY_LEFT "," +.BR \%KEY_RIGHT "," +.BR \%KEY_HOME "," +.BR \%KEY_END "," .B \%KEY_PPAGE (Page Up), .B \%KEY_NPAGE @@ -565,20 +649,23 @@ application can expect such a keyboard to transmit key codes (Insert), .B \%KEY_DC (Delete), +.BR \%KEY_A1 "," +.BR \%KEY_A3 "," +.BR \%KEY_B2 "," +.BR \%KEY_C1 "," +.BR \%KEY_C3 "," and .BI \%KEY_F( n ) for 1 \(<= .I n \(<= 12. -.PP -.BR \%getch , -.BR \%mvgetch , -and -.B \%mvwgetch -may be implemented as macros. +.\" Other numeric keypad keys from the DEC VT220 (specifically, the +.\" LK201 commonly used with it) and IBM PC/AT keyboards -- the comma +.\" (DEC); plus, star, and slash (PC); and zero, dot, and minus (both) +.\" have no standard key capability codes. .SH EXTENSIONS In -.IR \%ncurses , +.IR \%ncurses "," when a window's \*(``no time-out\*('' mode is .I not set, @@ -590,12 +677,17 @@ with ESC typed by the user; see \fB\%curs_variables\fP(3X). .PP -\fB\%has_key\fP was designed for \fB\%ncurses\fP(3X), +.B \%has_key +is an +.I \%ncurses +extension, and is not found in SVr4 -.IR curses , +.IR curses "," 4.4BSD -.IR curses , -or any other previous curses implementation. +.IR curses "," +or any other previous +.I curses +implementation. .SH PORTABILITY Applications employing .I \%ncurses @@ -603,51 +695,51 @@ extensions should condition their use on the visibility of the .B \%NCURSES_VERSION preprocessor macro. .PP -X/Open Curses, -Issue 4 describes -\fB\%getch\fP, -\fB\%wgetch\fP, -\fB\%mvgetch\fP, -\fB\%mvwgetch\fP, -and -\fB\%ungetch\fP. +Except as noted in section \*(``EXTENSIONS\*('' above, +X/Open Curses Issue\ 4 describes these functions. It specifies no error conditions for them. .PP -.B \%wgetch +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 494 +.PP +.I \%wgetch reads only single-byte characters. .PP The echo behavior of these functions on input of -.B KEY_ -or backspace characters was not specified in the SVr4 documentation. -This description is adapted from X/Open Curses. +.I KEY_ +or backspace characters is not documented in SVr4 +.IR curses "." .PP The behavior of -.B \%wgetch -in the presence of signal handlers is unspecified in the SVr4 -documentation and X/Open Curses. +.I \%wgetch +in the presence of signal handlers is not documented in SVr4 +.I curses +and is unspecified by X/Open Curses. In historical .I curses implementations, it varied depending on whether the operating system's dispatch of a -signal to a handler interrupting a \fIread\fP(2) call in progress, +signal to a handler interrupted a \fIread\fP(2) call in progress, and also (in some implementations) -whether an input timeout or non-blocking mode has been set. -Programmers concerned about portability should be prepared for either of -two cases: +whether an input timeout or non-blocking mode had been set. +A portable +.I curses +application prepares for two cases: (a) signal receipt does not interrupt -.BR \%wgetch ; -or +.IR \%wgetch ";" +and (b) signal receipt interrupts -.B \%wgetch +.I \%wgetch and causes it to return -.B ERR +.I ERR with -.B \%errno +.I \%errno set to -.BR \%EINTR . +.IR \%EINTR "." .PP -.B \%KEY_MOUSE +.I \%KEY_MOUSE is mentioned in X/Open Curses, along with a few related .I \%term\%info @@ -657,11 +749,11 @@ The implementation in .I \%ncurses is an extension. .PP -.B \%KEY_RESIZE +.I \%KEY_RESIZE and -.B \%has_key +.I \%has_key are extensions first implemented for -.IR \%ncurses . +.IR \%ncurses "." By 2022, .I \%PDCurses .\" https://web.archive.org/web/20220117232009/https://pdcurses.org/docs/MANUAL.html @@ -670,12 +762,35 @@ NetBSD .I curses .\" https://web.archive.org/web/20200923185647/https://man.netbsd.org/curses_input.3 had added them along with -.BR \%KEY_MOUSE . +.IR \%KEY_MOUSE "." +.SH HISTORY +4BSD (1980) +introduced +.I \%wgetch +and its variants. +.PP +SVr3 (1987) +added +.IR \%ungetch "." +.PP +.I \%ncurses +1.9.9g (1996) +furnished the +.I \%has_key +extension. .SH SEE ALSO +ECMA-6 \*(``7-bit coded Character Set\*('' +\%<https://\*:ecma\-international\*:.org/\ +\*:publications\-and\-standards/\*:standards/\*:ecma\-6/> +.PP +ECMA-48 \*(``Control Functions for Coded Character Sets\*('' +\%<https://\*:ecma\-international\*:.org/\ +\*:publications\-and\-standards/\*:standards/\*:ecma\-48/> +.PP \fB\%curs_get_wch\fP(3X) describes comparable functions of the .I \%ncurses library in its wide-character configuration -.RI ( \%ncursesw ). +.RI \%( ncursesw ). .PP \fB\%curses\fP(3X), \fB\%curs_addch\fP(3X), @@ -687,11 +802,3 @@ library in its wide-character configuration \fB\%curs_variables\fP(3X), \fB\%resizeterm\fP(3X), \fB\%ascii\fP(7) -.PP -ECMA-6 \*(``7-bit coded Character Set\*('' -\%<https://\*:ecma\-international\*:.org/\ -\*:publications\-and\-standards/\*:standards/\*:ecma\-6/> -.PP -ECMA-48 \*(``Control Functions for Coded Character Sets\*('' -\%<https://\*:ecma\-international\*:.org/\ -\*:publications\-and\-standards/\*:standards/\*:ecma\-48/> diff --git a/contrib/ncurses/man/curs_getstr.3x b/contrib/ncurses/man/curs_getstr.3x index 4a49352a146c..da1436bb3f89 100644 --- a/contrib/ncurses/man/curs_getstr.3x +++ b/contrib/ncurses/man/curs_getstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,17 +27,19 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_getstr.3x,v 1.58 2024/04/20 19:18:18 tom Exp $ -.TH curs_getstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_getstr.3x,v 1.94 2025/10/21 00:09:04 tom Exp $ +.TH curs_getstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq +.ds ^ \(ha .\} .el \{\ .ie t .ds `` `` .el .ds `` "" .ie t .ds '' '' .el .ds '' "" +.ds ^ ^ .\} . .de bP @@ -53,101 +55,146 @@ \fB\%mvgetnstr\fP, \fB\%mvwgetstr\fP, \fB\%mvwgetnstr\fP \- -accept character strings from \fIcurses\fR terminal keyboard +read a character string from \fIcurses\fR terminal keyboard .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint getstr(char *\fIstr\fP); -\fBint getnstr(char *\fIstr\fP, int \fIn\fP); -\fBint wgetstr(WINDOW *\fIwin\fP, char *\fIstr\fP); -\fBint wgetnstr(WINDOW *\fIwin\fP, char *\fIstr\fP, int \fIn\fP); +\fBint getstr(char * \fIstr\fP); +\fBint wgetstr(WINDOW * \fIwin\fP, char * \fIstr\fP); +\fBint mvgetstr(int \fIy\fP, int \fIx\fP, char * \fIstr\fP); +\fBint mvwgetstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, char * \fIstr\fP); .PP -\fBint mvgetstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP); -\fBint mvwgetstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP); -\fBint mvgetnstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP); -\fBint mvwgetnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP); +\fBint getnstr(char * \fIstr\fP, int \fIn\fP); +\fBint wgetnstr(WINDOW * \fIwin\fP, char * \fIstr\fP, int \fIn\fP); +\fBint mvgetnstr(int \fIy\fP, int \fIx\fP, char * \fIstr\fP, int \fIn\fP); +\fBint mvwgetnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, char * \fIstr\fP, int \fIn\fP); .fi .SH DESCRIPTION +.B \%wgetstr +populates a user-supplied string buffer +.I str +by repeatedly calling \fBwgetch\fP(3X) +with the +.I win +argument +until a line feed or carriage return character is input. +.\" Of the two, because wgetnstr() calls nl(), only a line feed (\n) +.\" will ever be returned by wgetch(). The function -\fBwgetnstr\fP -is equivalent to a series of calls to -\fBwgetch\fP(3X), -until a newline or carriage return terminates the series: .bP -The terminating character is not included in the returned string. +does not copy the terminating character to +.IR str ";" .bP -In all instances, the end of the string is terminated -by a NUL. +always terminates +.I str +with a null character; .bP -The function stores the result in the area pointed to -by the \fIstr\fP parameter. +interprets the screen's erase and kill characters +(see \fB\%erasechar\fP(3X) and \fB\%killchar\fP(3X)); .bP -The function reads at most \fIn\fP characters, -thus preventing a possible overflow of the input buffer. -.IP -Any attempt to enter more characters -(other than the terminating newline or carriage return) -causes a beep. -.IP -Function keys also cause a beep and are ignored. +recognizes function keys only if the screen's keypad option is enabled +(see \fB\%keypad\fP(3X)); +.bP +treats the function keys +.B \%KEY_LEFT +and +.B \%KEY_BACKSPACE +the same as the erase character; +and +.bP +discards function key inputs other than those +treated as the erase or kill characters, +calling \fBbeep\fP(3X). .PP -The user's \fIerase\fP and \fIkill\fP characters are interpreted: +If any characters have been written to the input buffer, +the erase character replaces the character +at the current position in the buffer +with a null character, +then decrements the position by one; +the kill character does the same repeatedly, +backtracking to the beginning of the buffer. +.PP +If the screen's echo option is enabled +(see \fBecho\fP(3X)), +.B \%wgetstr +updates +.I win +with \fB\%waddch\fP(3X). +Further, .bP -The \fIerase\fP character (e.g., \fB^H\fP) erases the character -at the end of the buffer, moving the cursor to the left. -.IP -If \fIkeypad\fP mode is on for the window, -\fBKEY_LEFT\fP and \fBKEY_BACKSPACE\fP -are both considered equivalent to the user's \fIerase\fP character. +the erase character +and its function key synonyms +move the cursor to the left +(if not already where it was located when +.B \%wgetstr +was called) +and .bP -The \fIkill\fP character (e.g., \fB^U\fP) erases the entire buffer, -leaving the cursor at the beginning of the buffer. +the kill character returns the cursor to where it was located when +.B \%wgetstr +was called. .PP -Characters input are echoed only if \fBecho\fP is currently on. -In that case, -backspace is echoed as deletion of the previous character -(typically a left motion). +.B \%wgetnstr +is similar, +but reads at most +.I n +characters, +aiding the application to avoid overrunning the buffer to which +.I str +points. +.I curses +ignores an attempt to input more than +.I n +characters +(other than the terminating line feed or carriage return), +calling \fBbeep\fP(3X). +If +.I n +is negative, +.B \%wgetn_wstr +reads up to +.I LINE_MAX +characters +(see +.IR sysconf (3)). .PP -The -\fBgetnstr\fP, -\fBmvgetnstr\fP, -\fBmvwgetnstr\fP, and -\fBwgetnstr\fP -functions are identical -to the -\fBgetstr\fP, -\fBmvgetstr\fP, -\fBmvwgetstr\fP, and -\fBwgetstr\fP -functions, respectively, -except that the -\fB*n*\fP -versions read at most -\fIn\fP -characters, letting the application prevent overflow of the -input buffer. +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All of these functions return the integer \fBOK\fP upon successful completion. -(SVr4 specifies only \*(``an integer value other than \fBERR\fP\*('') -If unsuccessful, they return \fBERR\fP. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open defines no error conditions. -.PP -In this implementation, -these functions return an error +In +.IR \%ncurses , +these functions fail if +.bP +the +.I curses +screen has not been initialized, .bP -if the window pointer is null, +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, .bP -if its timeout expires without having any data, or +.I str +is a null pointer, +or .bP -if the associated call to -\fBwgetch\fP -failed. +an internal \fB\%wgetch\fP(3X) call fails. .PP -This implementation provides an extension as well. -If a \fBSIGWINCH\fP interrupts the function, it will return \fBKEY_RESIZE\fP -rather than \fBOK\fP or \fBERR\fP. +Further, +in +.IR \%ncurses "," +these functions return +.B \%KEY_RESIZE +if a +.I \%SIGWINCH +event interrupts the function. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -155,147 +202,322 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -Any of these functions other than -\fBwgetnstr\fP -may be macros. +All of these functions except +.B \%wgetnstr +may be implemented as macros. .PP -Using -\fBgetstr\fP, -\fBmvgetstr\fP, -\fBmvwgetstr\fP, or -\fBwgetstr\fP -to read a line that -overflows the array pointed to by -\fBstr\fP -causes undefined -results. -The use of -\fBgetnstr\fP, -\fBmvgetnstr\fP, -\fBmvwgetnstr\fP, or -\fBwgetnstr\fP, -respectively, is recommended. +Reading input that overruns the buffer pointed to by +.I str +causes undefined results. +Use the +.BR n -infixed +functions, +and allocate sufficient storage for +.I str +\(em at least +.IR n +1 +times +.BR sizeof(char) "." +.PP +While these functions conceptually implement +a series of calls to +.BR \%wgetch "," +they also temporarily change properties of the +.I curses +screen to permit simple editing of the input buffer. +Each function saves the screen's state, +calls \fBnl\fP(3X), +and, +if the screen was in canonical (\*(``cooked\*('') mode, +\fB\%cbreak\fP(3X). +Before returning, +it restores the saved screen state. +Other implementations differ in detail, +affecting which control characters they can accept in the buffer; +see section \*(``PORTABILITY\*('' below. +.SH EXTENSIONS +.BR \%getnstr "," +.BR \%wgetnstr "," +.BR \%mvgetnstr "," +and +.BR \%mvwgetnstr "'s" +handing of negative +.I n +values is an +.I \%ncurses +extension. +.PP +The return value +.B \%KEY_RESIZE +is an +.I \%ncurses +extension. .SH PORTABILITY -These functions are described in The Single Unix Specification, Version 2. -No error conditions are defined. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them, +but indicates that +.I \%wgetnstr +and its variants read +\*(``the entire multi-byte sequence associated with a character\*('' +and \*(``fail\*('' if +.I n +and +.I str +together do not describe a buffer +\*(``large enough to contain any complete characters\*(''. +In +.IR \%ncurses "," +however, +.I \%wgetch +reads only single-byte characters, +so this scenario does not arise. +.\" You can pass ncurses wgetnstr n=0 and it will beep at you with each +.\" key stroke. .PP -This implementation returns \fBERR\fP if the window pointer is null, -or if the lower-level \fBwgetch\fP(3X) call returns an \fBERR\fP. +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 495 .PP -SVr3 and early SVr4 curses implementations did not reject function keys; -the SVr4.0 documentation claimed that \*(``special keys\*('' +SVr3 and early SVr4 +.I curses +implementations did not reject function keys; +the SVr4 documentation asserted that, +like the screen's erase and kill characters, +they were +.PP +.RS +interpreted, +as well as any special keys (such as function keys, \*(``home\*('' key, \*(``clear\*('' key, -\fIetc\fP.) are \*(``interpreted\*('', -without giving details. -It lied. -In fact, the \*(``character\*('' value appended to the -string by those implementations was predictable but not useful -(being, in fact, the low-order eight bits of the key's KEY_ value). +.IR etc. ) +.\" SVID 4, vol. 3, p. 495 +.RE .PP -The functions \fBgetnstr\fP, \fBmvgetnstr\fP, and \fBmvwgetnstr\fP were -present but not documented in SVr4. +without further detail. +It lied. +The \*(``character\*('' value +appended to the string +by those implementations +was predictable but not useful \(em +being, +in fact, +the low-order eight bits of the key code's +.I KEY_ +constant value. +(The same language, +unchanged except for styling, +survived into X/Open Curses Issue\ 4, +Version\ 2 \" p. 94 (PDF 114) +but disappeared from Issue\ 7.) \" p. 105 (PDF 119) .PP -X/Open Curses, Issue 5 (2007) stated that these functions -\*(``read at most \fIn\fP bytes\*('' -but did not state whether the terminating NUL is counted in that limit. -X/Open Curses, Issue 7 (2009) changed that to say they -\*(``read at most \fIn\fP\-1 bytes\*('' -to allow for the terminating NUL. -As of 2018, some implementations count it, some do not: -.bP -\fI\%ncurses\fP 6.1 and PDCurses do not count the NUL in the given limit, while +A draft of X/Open Curses Issue\ 5 +(which never saw final release) +stated that these functions +\*(``read at most +.I n +bytes\*('' +but did not state whether the terminating null character +counted toward that limit. +X/Open Curses Issue\ 7 changed that to say they +\*(``read at most +.IR n \-1 +bytes\*('' +to allow for the terminating null character. +As of 2018, +some implementations count it, +some do not. .bP -Solaris SVr4 and NetBSD curses count the NUL as part of the limit. +.I \%ncurses +6.1 and +.I \%PDCurses +do not count the null character toward the limit, +while Solaris and NetBSD +.I curses +do. .bP -Solaris xcurses provides both: -its wide-character \fBwget_nstr\fP reserves a NUL, -but its \fBwgetnstr\fP does not count the NUL consistently. +Solaris +.I xcurses +offers both behaviors: +its wide-character +.I \%wgetn_wstr +reserves room for a wide null character, +but its non-wide +.I \%wgetnstr +does not consistently count a null character toward the limit. .PP -In SVr4 curses, -a negative value of \fIn\fP tells \fBwgetnstr\fP to assume that the -caller's buffer is large enough to hold the result, -i.e., to act like \fBwgetstr\fP. -X/Open Curses does not mention this -(or anything related to negative or zero values of \fIn\fP), -however most implementations -use the feature, with different limits: -.bP -Solaris SVr4 curses and PDCurses limit the result to 255 bytes. -Other Unix systems than Solaris are likely to use the same limit. +X/Open Curses does not specify what happens if the length +.I n +is negative. .bP -Solaris xcurses limits the result to \fBLINE_MAX\fP bytes. -.bP -NetBSD 7 assumes no particular limit for the result from \fBwgetstr\fP. -However, it limits the \fBwgetnstr\fP parameter \fIn\fP to ensure -that it is greater than zero. -.IP -A comment in NetBSD's source code states that this is specified in SUSv2. +.I \%ncurses +6.2 uses +.I LINE_MAX +or a larger (system-dependent) value +provided by \fI\%sysconf\fP(3). +If neither +.I LINE_MAX +nor +.I \%sysconf +is available, +.I \%ncurses +uses the POSIX minimum value for +.I LINE_MAX +(2048). \" _POSIX2_LINE_MAX +In either case, +it reserves a byte for the terminating null character. .bP -\fI\%ncurses\fP (before 6.2) assumes no particular limit for the result -from \fBwgetstr\fP, and treats the \fIn\fP parameter of \fBwgetnstr\fP -like SVr4 curses. +In SVr4 +.IR curses "," +a negative +.I n +tells +.I \%wgetnstr +to assume that the caller's buffer +is large enough to hold the result; +that is, +the function then acts like +.IR \%wgetstr "." +X/Open Curses does not mention this behavior +(or anything related to nonpositive +.I n +values), +however most +.I curses +libraries implement it. +Most implementations nevertheless enforce an upper limit +on the count of bytes they write to the destination buffer +.IR str "." .bP -\fI\%ncurses\fP 6.2 uses \fBLINE_MAX\fP, -or a larger (system-dependent) value -which the \fBsysconf\fP function may provide. -If neither \fBLINE_MAX\fP or \fBsysconf\fP is available, -\fI\%ncurses\fP uses the POSIX value for \fBLINE_MAX\fP (a 2048 byte limit). -In either case, it reserves a byte for the terminating NUL. -.PP -Although \fBgetnstr\fP is equivalent to a series of calls to \fBgetch\fP, -it also makes changes to the curses modes to allow simple editing of -the input buffer: +BSD +.I curses +lacked +.IR \%wgetnstr "," +and its +.I \%wgetstr +wrote to +.I str +unboundedly, +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\ +.\" libcurses/getstr.c +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/src/lib/\ +.\" libcurses/getstr.c +as did that in SVr2. +.\" https://github.com/ryanwoodsmall/oldsysv/blob/master/sysvr2-vax/\ +.\" src/lib/libcurses/screen/getstr.c .bP -\fBgetnstr\fP saves the current value of the \fBnl\fP, \fBecho\fP, -\fBraw\fP and \fBcbreak\fP modes, and sets -\fBnl\fP, -\fBnoecho\fP, -\fBnoraw\fP, and -\fBcbreak\fP. -.IP -\fBgetnstr\fP handles the echoing of characters, -rather than relying on the caller to set an appropriate mode. +.IR PDCurses "," +and +SVr3 and later, +.\" https://github.com/ryanwoodsmall/oldsysv/blob/master/\ +.\" sysvr3/301/usr/src/lib/libcurses/screen/getstr.c#L21 +.\" sysvr3/31/usr/src/lib/libcurses/screen/wgetstr.c#L10 +.\" sysvr4/svr4/lib/xlibcurses/screen/wgetstr.c#L12 +and +Solaris +.I curses +limit both functions to writing 256 bytes. +Other System\ V-based platforms likely use the same limit. .bP -It also obtains the \fIerase\fP and \fIkill\fP characters -from \fBerasechar\fP and \fBkillchar\fP, respectively. +Solaris +.I xcurses +limits the write to +.I LINE_MAX +bytes +(see +.IR sysconf (3)). .bP -On return, \fBgetnstr\fP restores the modes to their previous values. +NetBSD 7 +.I curses +imposes no particular limit on the length of the write, +but does validate +.I n +to ensure that it is greater than zero. +A comment in NetBSD's source code asserts that SUSv2 specifies this. .PP -Other implementations differ in their treatment of special characters: +Implementations vary in their handling of input control characters. .bP -While they may set the \fIecho\fP mode, -other implementations do not modify the \fIraw\fP mode, -They may take the \fIcbreak\fP -mode set by the caller into account when deciding whether to handle -echoing within \fBgetnstr\fP or as a side-effect of the \fBgetch\fP calls. +While they may enable the screen's echo option, +some do not take it out of raw mode, +and may take cbreak mode into account +when deciding whether to handle echoing within +.I \%wgetnstr +or to rely on it as a side effect of calling +.IR \%wgetch "." .bP -The original \fI\%ncurses\fP -(as \fIpcurses\fP in 1986) -set \fBnoraw\fP and \fBcbreak\fP when accepting input for \fBgetnstr\fP. -That may have been done to make function- and cursor-keys work; -it is not necessary with \fI\%ncurses\fP. +Originally, +.IR \%ncurses "," +like its progenitor +.IR \%pcurses "," +had its +.I \%wgetnstr +call +.I \%noraw +and +.I \%cbreak +before accepting input. +That may have been done to make function keys work; +it is not necessary with modern +.IR \%ncurses "." .IP Since 1995, -\fI\%ncurses\fP has provided signal handlers for INTR and QUIT -(e.g., \fB^C\fP or \fB^\e\fP). -With the \fBnoraw\fP and \fBcbreak\fP settings, -those may catch a signal and stop the program, -where other implementations allow one to enter those characters in the buffer. +.I \%ncurses +has provided handlers for +.I SIGINTR +and +.I SIGQUIT +events, +which are typically generated at the keyboard with +.B \*^C +and +.B \*^\e +respectively. +In cbreak mode, +those handlers catch a signal and stop the program, +whereas other implementations write those characters into the buffer. .bP -Starting in 2021 -(\fI\%ncurses\fP 6.3), -\fBgetnstr\fP sets \fBraw\fP, -rather than \fBnoraw\fP and \fBcbreak\fP for better compatibility with -SVr4-curses, e.g., allowing one to enter a \fB^C\fP into the buffer. +Starting with +.I \%ncurses +6.3 (2021), +.I \%wgetnstr +preserves raw mode if the screen was already in that state, +allowing one to enter the characters the terminal interprets +as interrupt and quit events +into the buffer, +for better compatibility with SVr4 +.IR curses "." +.SH HISTORY +4BSD (1980) +introduced +.I \%wgetstr +along with its variants. +.PP +SVr3.1 (1987) +added +.IR \%wgetnstr "," +but none of its variants. +.PP +X/Open Curses Issue\ 4 (1995) +specified +.IR \%getnstr "," +.IR \%mvgetnstr "," +and +.IR \%mvwgetnstr "." .SH SEE ALSO \fB\%curs_get_wstr\fP(3X) describes comparable functions of the .I \%ncurses library in its wide-character configuration -.RI ( \%ncursesw ). +.RI \%( ncursesw ). .PP \fB\%curses\fP(3X), +\fB\%curs_addch\fP(3X), \fB\%curs_getch\fP(3X), -\fB\%curs_termattrs\fP(3X), -\fB\%curs_variables\fP(3X) +\fB\%curs_inopts\fP(3X), \" echo(), keypad() +\fB\%curs_termattrs\fP(3X), \" erasechar(), killchar() diff --git a/contrib/ncurses/man/curs_getyx.3x b/contrib/ncurses/man/curs_getyx.3x index eadcecef2cad..18bb0c5b7967 100644 --- a/contrib/ncurses/man/curs_getyx.3x +++ b/contrib/ncurses/man/curs_getyx.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2020-2023,2024 Thomas E. Dickey * +.\" Copyright 2020-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2007,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_getyx.3x,v 1.44 2024/04/20 21:20:07 tom Exp $ -.TH curs_getyx 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_getyx.3x,v 1.55 2025/02/01 22:48:11 tom Exp $ +.TH curs_getyx 3X 2025-02-01 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -51,62 +51,122 @@ get \fIcurses\fR cursor and window coordinates \fB#include <curses.h> .PP \fBvoid getyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); -\fBvoid getparyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); \fBvoid getbegyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); \fBvoid getmaxyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); +.PP +\fBvoid getparyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); .fi .SH DESCRIPTION -The \fB\%getyx\fP macro places the current cursor position -of the given window in the two integer variables \fIy\fP and \fIx\fP. +These macros obtain the cursor position and bounds information of a +.I curses +window +.IR win "." +.B \%getyx +stores +.IR win "'s" +cursor position in the variables +.I y +and +.IR x "." +.B \%getmaxyx +stores +.IR win "'s" +maximum valid line and column numbers in +.I y +and +.IR x "," +respectively. +.B \%getbegyx +similarly stores the position of +.IR win "'s" +origin relative to that of the screen +(for +.BR stdscr "," +these coordinates are always +.BR 0 ")." .PP -If \fIwin\fP is a subwindow, the \fB\%getparyx\fP macro places the beginning -coordinates of the subwindow relative to the parent window into two integer -variables \fIy\fP and \fIx\fP. -Otherwise, \fB\-1\fP is placed into \fIy\fP and \fIx\fP. -.PP -Like \fB\%getyx\fP, the \fB\%getbegyx\fP and \fB\%getmaxyx\fP macros store -the current beginning coordinates and size of the specified window. +If +.I win +is a subwindow +(see \fB\%subwin\fP(3X)), +the +.B \%getparyx +macro places the coordinates of its origin relative to its parent window +into +.I y +and +.IR x "," +and +.B \-1 +into both if it is not. .SH RETURN VALUE -The return values of these macros are undefined (i.e., -they should not be used as the right-hand side of assignment statements). +No return values are defined for macros. +Do not use them as the right-hand side of assignment statements. .SH NOTES -All of these interfaces are macros. -A \*(``&\*('' is not necessary before the variables \fIy\fP and \fIx\fP. +All of these interfaces are implemented as macros. +An \*(``&\*('' operator is not necessary before the variables +.I y +and +.IR x "." .SH PORTABILITY -The -\fB\%getyx\fP, -\fB\%getparyx\fP, -\fB\%getbegyx\fP and -\fB\%getmaxyx\fP -macros are described in X/Open Curses, Issue 4. +These macros are described in X/Open Curses Issue\ 4. .PP -This implementation also provides functions -\fB\%getbegx\fP, -\fB\%getbegy\fP, -\fB\%getcurx\fP, -\fB\%getcury\fP, -\fB\%getmaxx\fP, -\fB\%getmaxy\fP, -\fB\%getparx\fP and -\fB\%getpary\fP -for compatibility with older versions of \fIcurses\fP; +.I \%ncurses +also provides functions +.IR \%getbegy "," +.IR \%getbegx "," +.IR \%getcury "," +.IR \%getcurx "," +.IR \%getmaxy "," +.IR \%getmaxx "," +.IR \%getpary "," +and +.I \%getparx +for compatibility with System\ V +.I curses +that were not standardized; +.\" even by SVID 4 see \fB\%curs_legacy\fP(3X). .PP -Although X/Open Curses does not address this, -many implementations provide members of the \fB\%WINDOW\fP structure -containing values corresponding to these macros. -For best portability, do not rely on using the data in \fB\%WINDOW\fP, -since some implementations make \fB\%WINDOW\fP opaque (do not allow -direct use of its members). +Although X/Open Curses does not address the issue, +many implementations expose members of the +.I \%WINDOW +structure containing values corresponding to these macros. +Do not rely on their availability; +some implementations make +.I \%WINDOW +opaque +(that is, +they do not allow direct access to its members). .PP Besides the problem of opaque structures, -the data stored in like-named members may not have like-values in -different implementations. -For example, the \fB\%WINDOW._maxx\fP and \fB\%WINDOW._maxy\fP values -in \fI\%ncurses\fP have -(at least since release 1.8.1) +the data stored in like-named members may not have values of the same +meaning across different implementations. +For example, +the values of +.I \%WINDOW._maxx +and +.I \%WINDOW._maxy +in +.I \%ncurses +have long +.\" (at least since its initial release, 1.8.1) differed by one from some other implementations. -The difference is hidden by means of the macro \fB\%getmaxyx\fP. +The +.I \%getmaxyx +macro hides this difference. +.SH HISTORY +4BSD (1980) +introduced +.IR \%getyx "." +.PP +SVr3 (1987) +added +.I \%getbegyx +and +.IR \%getmaxyx "." +SVr3.1 later that year supplied +.IR \%getparyx "." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_legacy\fP(3X), diff --git a/contrib/ncurses/man/curs_in_wch.3x b/contrib/ncurses/man/curs_in_wch.3x index 8512e6d3b51e..1c93952a430e 100644 --- a/contrib/ncurses/man/curs_in_wch.3x +++ b/contrib/ncurses/man/curs_in_wch.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_in_wch.3x,v 1.31 2024/04/20 21:20:07 tom Exp $ -.TH curs_in_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_in_wch.3x,v 1.44 2025/02/01 22:54:32 tom Exp $ +.TH curs_in_wch 3X 2025-02-01 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -41,30 +41,46 @@ .\} .SH NAME \fB\%in_wch\fP, +\fB\%win_wch\fP, \fB\%mvin_wch\fP, -\fB\%mvwin_wch\fP, -\fB\%win_wch\fP \- +\fB\%mvwin_wch\fP \- get a \fIcurses\fR complex character from a window .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint in_wch(cchar_t *\fIwch\fP); -\fBint win_wch(WINDOW *\fIwin\fP, cchar_t *\fIwch\fP); -.PP -\fBint mvin_wch(int \fIy\fP, int \fIx\fP, cchar_t *\fIwch\fP); -\fBint mvwin_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t *\fIwch\fP); +\fBint in_wch(cchar_t * \fIwch\fP); +\fBint win_wch(WINDOW * \fIwin\fP, cchar_t * \fIwch\fP); +\fBint mvin_wch(int \fIy\fP, int \fIx\fP, cchar_t * \fIwch\fP); +\fBint mvwin_wch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t * \fIwch\fP); .fi .SH DESCRIPTION -These functions extract the complex character and rendition from -the current position in the named window into the \fBcchar_t\fP object -referenced by wch. +.B \%win_wch +copies the +.I curses +complex character at the cursor position in +.I win +into +.IR wch "." +Use \fB\%getcchar\fP(3X) to extract its character code, +attributes, +and color pair identifier. +\fB\%ncurses\fP(3X) describes the variants of this function. .SH RETURN VALUE -No errors are defined in X/Open Curses. -This implementation checks for null pointers, returns \fBERR\fP in that case. -Also, the \fImv\fP routines check for error moving the cursor, -returning \fBERR\fP in that case. -Otherwise they return \fBOK\fP. +These functions return +.B OK +on success and +.B ERR +on failure. +.PP +In +.IR \%ncurses "," +they return +.B ERR +if +.I win +is +.IR NULL "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -72,9 +88,38 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -Note that all of these routines may be macros. +.BR \%in_wch "," +.BR mvin_wch "," +and +.B mvwin_wch +may be implemented as macros. +.PP +Unlike \fB\%winch\fP(3X), +.B \%win_wch +and its variants store the value of the retrieved character in an +additional +.I wch +parameter instead of the return value. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 +of the same year +specified a function named +.I \%winwch +(and the usual variants). +.\" SVID 4, vol 3., p. 514 +This was a later addition to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +It differed from X/Open's later +.I \%win_wch +in that it returned a value of type +.I \%chtype +instead of +.IR \%cchar_t "." .SH SEE ALSO \fB\%curs_inch\fP(3X) describes comparable functions of the .I \%ncurses diff --git a/contrib/ncurses/man/curs_in_wchstr.3x b/contrib/ncurses/man/curs_in_wchstr.3x index 53c984647507..39cadcdb4203 100644 --- a/contrib/ncurses/man/curs_in_wchstr.3x +++ b/contrib/ncurses/man/curs_in_wchstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_in_wchstr.3x,v 1.39 2024/04/20 21:24:19 tom Exp $ -.TH curs_in_wchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_in_wchstr.3x,v 1.56 2025/10/21 00:03:06 tom Exp $ +.TH curs_in_wchstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -58,42 +58,68 @@ get a \fIcurses\fR complex character string from a window .nf \fB#include <curses.h> .PP -\fBint in_wchstr(cchar_t *\fIwchstr\fP); -\fBint win_wchstr(WINDOW *\fIwin\fP, cchar_t *\fIwchstr\fP); -\fBint mvin_wchstr(int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP); -\fBint mvwin_wchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP); +\fBint in_wchstr(cchar_t * \fIwchstr\fP); +\fBint win_wchstr(WINDOW * \fIwin\fP, cchar_t * \fIwchstr\fP); +\fBint mvin_wchstr(int \fIy\fP, int \fIx\fP, cchar_t * \fIwchstr\fP); +\fBint mvwin_wchstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t * \fIwchstr\fP); .PP -\fBint in_wchnstr(cchar_t *\fIwchstr\fP, int \fIn\fP); -\fBint win_wchnstr(WINDOW *\fIwin\fP, cchar_t *\fIwchstr\fP, int \fIn\fP); -\fBint mvin_wchnstr(int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP, int \fIn\fP); -\fBint mvwin_wchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP, int \fIn\fP); +\fBint in_wchnstr(cchar_t * \fIwchstr\fP, int \fIn\fP); +\fBint win_wchnstr(WINDOW * \fIwin\fP, cchar_t * \fIwchstr\fP, int \fIn\fP); +\fBint mvin_wchnstr(int \fIy\fP, int \fIx\fP, cchar_t * \fIwchstr\fP, int \fIn\fP); +\fBint mvwin_wchnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t * \fIwchstr\fP, int \fIn\fP) .fi .SH DESCRIPTION -These functions return an array of complex characters in \fIwchstr\fP, -starting at the current cursor position in the named window. -Attributes (rendition) are stored with the characters. -.PP -The four functions with \fIn\fP as the last argument return -a leading substring at most \fIn\fP characters long -(exclusive of the trailing zeroed \fBcchar_t\fR. -Transfer stops at the end of the current line, or when \fIn\fP characters have -been stored at the location referenced by \fIwchstr\fP. -.PP -Constants defined in \fB<curses.h>\fP can be used with the \fB&\fP (logical -AND) operator to extract the character or the attribute alone from any position -in the \fIwchstr\fP [see \fBgetcchar\fP(3X)]. +.B \%win_wchstr +extracts a +.I curses +complex character string from a +.I curses +window +.IR win "," +starting at the cursor and stopping at the end of the line, +and stores it in +.IR wchstr "," +terminating it with a wide null +.I curses +character. +.B \%win_wchnstr +does the same, +but copies at most +.I n +.I curses +complex characters from +.IR win "." +A negative +.I n +implies no limit; +.B \%win_wchnstr +then works like +.BR \%win_wchstr "." +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -Upon successful completion, these functions return -\fBOK\fP. -Otherwise, they return -\fBERR\fP. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses defines no error conditions. -This implementation returns an error +In +.IR \%ncurses "," +these functions fail if .bP -if the \fIwin\fP parameter is null or +the +.I curses +screen has not been initialized, .bP -if the \fIwchstr\fP parameter is null. +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, +or +.bP +.I wchstr +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -101,27 +127,40 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All routines except \fBwin_wchnstr\fP may be macros. +All of these functions except +.B \%win_wchnstr +may be implemented as macros. .PP Reading a line that overflows the array pointed to by -\fIwchstr\fP -with -\fBin_wchstr\fP, -\fBmvin_wchstr\fP, -\fBmvwin_wchstr\fP -or -\fBwin_wchstr\fP -causes undefined results. -Therefore, the use of -\fBin_wchnstr\fP, -\fBmvin_wchnstr\fP, -\fBmvwin_wchnstr\fP, or -\fBwin_wchnstr\fP -is recommended. +.I wchstr +and its variants causes undefined results. +Instead, +use the +.IR n -infixed +functions with a positive +.I n +argument no larger than the size of the buffer backing +.IR wchstr "." .SH PORTABILITY -X/Open Curses defines no error conditions. -This implementation checks for null pointers, -returning \fBERR\fP in that case. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 +of the same year +specified a function named +.I \%winwchstr +(and the usual variants). +.\" SVID 4, vol 3., p. 515 +This was a later addition to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +It differed from X/Open's later +.I \%win_wchstr +in that it took an argument of type +.RI pointer-to- chtype +instead of +.RI pointer-to- cchar_t "." .SH SEE ALSO \fB\%curs_inchstr\fP(3X) describes comparable functions of the .I \%ncurses diff --git a/contrib/ncurses/man/curs_inch.3x b/contrib/ncurses/man/curs_inch.3x index 962e9dc868d4..72100af27be8 100644 --- a/contrib/ncurses/man/curs_inch.3x +++ b/contrib/ncurses/man/curs_inch.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_inch.3x,v 1.51 2024/04/20 21:20:07 tom Exp $ -.TH curs_inch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_inch.3x,v 1.70 2025/02/15 19:36:03 tom Exp $ +.TH curs_inch 3X 2025-02-15 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -56,73 +56,113 @@ get a \fIcurses\fR character from a window \fB#include <curses.h> .PP \fBchtype inch(void); -\fBchtype winch(WINDOW *\fIwin\fP); -.PP +\fBchtype winch(WINDOW * \fIwin\fP); \fBchtype mvinch(int \fIy\fP, int \fIx\fP); -\fBchtype mvwinch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); +\fBchtype mvwinch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP); .fi .SH DESCRIPTION -These routines return the character, of type \fBchtype\fP, at the current -position in the named window. -If any attributes are set for that position, -their values are OR'ed into the value returned. -Constants defined in -\fB<curses.h>\fP can be used with the \fB&\fP (logical AND) operator to -extract the character or attributes alone. -. -.SS Attributes -The following bit masks may be AND-ed with characters returned by \fBwinch\fP. -.PP -.TS -Lb Lb -Lb Lx. -Name Description -_ -A_CHARTEXT Extract character -A_ATTRIBUTES Extract attributes -A_COLOR Extract color pair information -.TE +.B \%winch +returns the +.I curses +character, +including its attributes and color pair identifier, +at the cursor position in the window +.IR win "." +Subsection \*(``Video Attributes\*('' of \fB\%attron\fP(3X) explains +how to extract these data from a +.IR chtype "." +\fB\%ncurses\fP(3X) describes the variants of this function. .SH RETURN VALUE +These functions return +.B OK +on success and +.B ERR +on failure. +.PP +In +.IR \%ncurses "," +they return +.B ERR +if +.I win +is +.IR NULL "." +.PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position .RI ( y , .IR x ) is outside the window boundaries. -.PP -The \fBwinch\fP function does not return an error if the window contains -characters larger than 8-bits (255). -Only the low-order 8 bits of the character are used by \fBwinch\fP. .SH NOTES -Note that all of these routines may be macros. -.SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +.BR \%inch , +.BR \%mvinch , +and +.B \%mvwinch +may be implemented as macros. .PP -Very old systems (before standardization) provide a different function -with the same name: -.bP -The \fBwinch\fP function was part of the original BSD curses library, -which stored a 7-bit character combined with the \fIstandout\fP attribute. -.IP -In BSD curses, \fBwinch\fP returned only the character (as an integer) -with the \fIstandout\fP attribute removed. -.bP -System V curses added support for several video attributes which -could be combined with characters in the window. -.IP -Reflecting this improvement, the function was altered to return the -character combined with all video attributes in a \fBchtype\fP value. +These functions do not fail if the window contains cells of +.I curses +complex characters; +that is, +if they contain characters with codes wider than eight bits +(or greater than 255 as an unsigned decimal integer). +They instead extract only the low-order eight bits of the character code +from the cell. +.SH PORTABILITY +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.SH HISTORY +The original +.I curses +in 4BSD (1980) defined +.I \%winch +as a macro accessing the +.I \%WINDOW +structure member representing character cell data, +at that time a +.IR char "," +containing only a 7-bit ASCII character code +and a \*(``standout\*(`` attribute bit, +the only one the library supported. .PP -X/Open Curses does not specify -the size and layout of attributes, color and character values in -\fBchtype\fP; it is implementation-dependent. -This implementation uses 8 bits for character values. -An application using more bits, e.g., a Unicode value, -should use the wide-character equivalents to these functions. +SVr2 +.I curses +(1984) +extended this approach, +widening the character code to eight bits +and permitting several attributes to be combined with it +by storing them together in a +.IR \%chtype "," +an alias of +.IR "unsigned short" "." +.\" ...indirectly through a preprocessor macro named CHTYPE, encouraging +.\" builders to change the typedef to `char` or `long` as desired. More +.\" innocent times with respect to ABI compatibility concerns... --GBR +Because a macro was used, +its value was not type-checked +as a function return value could have been. +Goodheart documented SVr3 (1987) +.I \%winch +as returning an +.IR int "." +.\" ...but the implementation remained unchanged. +SVr3.1's (1987) +.I \%chtype +became an alias of +.IR "unsigned long" "," +using 16 bits for the character code and +widening the type in practical terms to 32 bits, +as 64-bit Unix systems were not yet in wide use, +and fixed-width integral types would not be standard until ISO C99. +.\" Cray's UNICOS was 1985 (how many shops had Crays?). DEC OSF/1 for +.\" the Alpha arrived in 1993. --GBR +SVr3.2 (1988) +added a 6-bit color pair identifier alongside the attributes. .SH SEE ALSO \fB\%curs_in_wch\fP(3X) describes comparable functions of the .I \%ncurses library in its wide-character configuration -.RI ( \%ncursesw ). +.RI \%( ncursesw ). .PP \fB\%curses\fP(3X), \fB\%curs_instr\fP(3X) diff --git a/contrib/ncurses/man/curs_inchstr.3x b/contrib/ncurses/man/curs_inchstr.3x index bcd5d6855e1f..66f1389a57c9 100644 --- a/contrib/ncurses/man/curs_inchstr.3x +++ b/contrib/ncurses/man/curs_inchstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_inchstr.3x,v 1.45 2024/04/20 21:20:07 tom Exp $ -.TH curs_inchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_inchstr.3x,v 1.65 2025/10/21 00:05:02 tom Exp $ +.TH curs_inchstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -58,41 +58,68 @@ get a \fIcurses\fR character string from a window .nf \fB#include <curses.h> .PP -\fBint inchstr(chtype *\fIchstr\fP); -\fBint inchnstr(chtype *\fIchstr\fP, int \fIn\fP); -\fBint winchstr(WINDOW *\fIwin\fP, chtype *\fIchstr\fP); -\fBint winchnstr(WINDOW *\fIwin\fP, chtype *\fIchstr\fP, int \fIn\fP); +\fBint inchstr(chtype * \fIchstr\fP); +\fBint inchnstr(chtype * \fIchstr\fP, int \fIn\fP); +\fBint winchstr(WINDOW * \fIwin\fP, chtype * \fIchstr\fP); +\fBint winchnstr(WINDOW * \fIwin\fP, chtype * \fIchstr\fP, int \fIn\fP); .PP -\fBint mvinchstr(int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP); -\fBint mvinchnstr(int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP, int \fIn\fP); -\fBint mvwinchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP); -\fBint mvwinchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP, int \fIn\fP); +\fBint mvinchstr(int \fIy\fP, int \fIx\fP, chtype * \fIchstr\fP); +\fBint mvinchnstr(int \fIy\fP, int \fIx\fP, chtype * \fIchstr\fP, int \fIn\fP); +\fBint mvwinchstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, chtype * \fIchstr\fP); +\fBint mvwinchnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, chtype * \fIchstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -These routines return a NULL-terminated array of \fBchtype\fP quantities, -starting at the current cursor position in the named window and ending at the -right margin of the window. -.PP -The four functions with \fIn\fP as the last argument, return -a leading substring at most \fIn\fP characters long -(exclusive of the trailing (chtype)0). -Transfer stops at the end of the current line, or when \fIn\fP characters have -been stored at the location referenced by \fIchstr\fP. -.PP -Constants defined in \fB<curses.h>\fP can be used with the \fB&\fP (logical -AND) operator to extract the character or the attribute alone from any position -in the \fIchstr\fP [see \fBcurs_inch\fP(3X)]. +.B \%winchstr +extracts a +.I curses +character string from a +.I curses +window +.IR win "," +starting at the cursor and stopping at the end of the line, +and stores it in +.IR chstr "," +terminating it with a null +.I curses +character. +.B \%winchnstr +does the same, +but copies at most +.I n +.I curses +characters from +.IR win "." +A negative +.I n +implies no limit; +.B \%winchnstr +then works like +.BR \%winchstr "." +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All routines return the integer \fBERR\fP upon failure and an integer value -other than \fBERR\fP upon successful completion (the number of characters -retrieved, exclusive of the trailing 0). +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses defines no error conditions. -This implementation returns an error +In +.IR \%ncurses "," +these functions fail if .bP -if the \fIwin\fP parameter is null or +the +.I curses +screen has not been initialized, .bP -if the \fIchstr\fP parameter is null. +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, +or +.bP +.I chstr +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -100,36 +127,72 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All routines except \fBwinchnstr\fP may be macros. -.PP -SVr4 does not -document whether the result string is zero-terminated; it does not document -whether a length limit argument includes any trailing 0; and it does not -document the meaning of the return value. +All of these functions except +.B \%winchnstr +may be implemented as macros. .PP Reading a line that overflows the array pointed to by -\fIchstr\fP -with -\fBinchstr\fP, -\fBmvinchstr\fP, -\fBmvwinchstr\fP -or -\fBwinchstr\fP -causes undefined results. -Therefore, the use of -\fBinchnstr\fP, -\fBmvinchnstr\fP, -\fBmvwinchnstr\fP, or -\fBwinchnstr\fP -is recommended. +.I chstr +and its variants causes undefined results. +Instead, +use the +.IR n -infixed +functions with a positive +.I n +argument no larger than the size of the buffer backing +.IR chstr "." +.SH EXTENSIONS +.BR \%inchnstr "," +.BR \%winchnstr "," +.BR \%mvinchnstr "," +and +.BR \%mvwinchnstr "'s" +acceptance of negative +.I n +values is an +.I \%ncurses +extension. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. -It is no -more specific than the SVr4 documentation on the trailing 0. -It does specify -that the successful return of the functions is \fBOK\fP. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +It characterizes the strings stored by these functions as containing +\*(``at most +.I n +elements\*('' from a window, +.\" X/Open Issue 4, Version 2, p. 113, PDF p. 133 +.\" Issue 7 doesn't change this wording at all. +but does not specify whether the string stored by these functions is +null-terminated. +.PP +SVr4 does not document whether it null-terminates the +.I curses +character string it stores +in +.IR chstr "," +and does not document whether a trailing null +.I curses +character counts +toward the length limit +.IR n "." +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 503 +.SH HISTORY +SVr3.1 (1987) +introduced these functions. .SH SEE ALSO +\fB\%curs_in_wchstr\fP(3X) describes comparable functions of the +.I \%ncurses +library in its wide-character configuration +.RI \%( ncursesw ). +.PP \fB\%curses\fP(3X), \fB\%curs_inch\fP(3X), -\fB\%curs_inwstr\fP(3X), -\fB\%curs_in_wchstr\fP(3X) +\fB\%curs_inwstr\fP(3X) diff --git a/contrib/ncurses/man/curs_initscr.3x b/contrib/ncurses/man/curs_initscr.3x index 0f460af14eee..ee8359593e8e 100644 --- a/contrib/ncurses/man/curs_initscr.3x +++ b/contrib/ncurses/man/curs_initscr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_initscr.3x,v 1.69 2024/04/20 21:24:19 tom Exp $ -.TH curs_initscr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_initscr.3x,v 1.112 2025/08/23 22:41:44 tom Exp $ +.TH curs_initscr 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -56,205 +56,545 @@ initialize, manipulate, or tear down \fIcurses\fR terminal interface .nf \fB#include <curses.h> .PP -\fBWINDOW *initscr(void); +\fBWINDOW * initscr(void); \fBint endwin(void); .PP \fBbool isendwin(void); .PP -\fBSCREEN *newterm(const char *\fItype\fP, FILE *\fIoutf\fP, FILE *\fIinf\fP); -\fBSCREEN *set_term(SCREEN *\fInew\fP); -\fBvoid delscreen(SCREEN* \fIsp\fP); +\fBSCREEN * newterm(const char * \fItype\fP, FILE * \fIoutf\fP, FILE * \fIinf\fP); +\fBSCREEN * set_term(SCREEN * \fInew\fP); +\fBvoid delscreen(SCREEN * \fIsp\fP); .fi .SH DESCRIPTION .SS initscr -\fBinitscr\fP is normally the first \fBcurses\fP routine to call when -initializing a program. -A few special routines sometimes need to be called before it; -these are \fBslk_init\fP(3X), \fBfilter\fP, \fBripoffline\fP, -\fBuse_env\fP. -For multiple-terminal applications, -\fBnewterm\fP may be called before \fBinitscr\fP. +.B \%initscr +determines the terminal type and initializes the library's +.IR SCREEN "," +.IR WINDOW "," +and other data structures. +It is normally the first +.I curses +function call a program performs. +However, +an application with unusual needs might employ a few other +.I curses +functions beforehand: +.bP +\fB\%slk_init\fP(3X) to set up soft-label keys; +.bP +\fB\%filter\fP(3X) if the program is designed to operate in a process +pipeline; +.bP +\fB\%ripoffline\fP(3X) to reserve up to five lines at the top and/or +bottom of the screen from management by +.BR \%stdscr "," +the standard +.I curses +window; +and +.bP +\fB\%use_env\fP(3X) and/or \fB\%use_tioctl\fP(3X) to configure use of +the process environment and operating system's terminal driver, +respectively, +when determining the dimensions of the terminal display. .PP -The initscr code determines the terminal type and initializes all \fBcurses\fP -data structures. -\fBinitscr\fP also causes the first call to \fBrefresh\fP(3X) -to clear the screen. -If errors occur, \fBinitscr\fP writes an appropriate error -message to standard error and exits; -otherwise, a pointer is returned to \fBstdscr\fP. -.SS newterm -A program that outputs to more than one terminal should use the \fBnewterm\fP -routine for each terminal instead of \fBinitscr\fP. -A program that needs to inspect capabilities, -so it can continue to run in a line-oriented mode if the -terminal cannot support a screen-oriented program, would also use -\fBnewterm\fP. +Further, +a +.I curses +program might call +.B \%newterm +prior to or instead of +.B \%initscr +in two specialized cases described in its subsection below. .PP -The routine \fBnewterm\fP should be called once for each terminal. -It returns a variable of type \fISCREEN *\fP which should be saved -as a reference to that terminal. -\fBnewterm\fP's arguments are +.B \%initscr +causes the first \fB\%refresh\fP(3X) call to clear the screen. +If errors occur, +.B \%initscr +writes an appropriate diagnostic message to the standard error stream +and exits; +otherwise, +it returns a pointer to +.BR stdscr "." +.SS newterm +An application that manages multiple terminals should call +.B \%newterm +once for each such device +.I instead +of +.BR \%initscr "." +.BR \%newterm 's +arguments are .bP -the \fItype\fP of the terminal to be used in place of \fB$TERM\fP, +the +.I type +of the associated terminal, +or a null pointer to use the +.I TERM +environment variable; .bP -an output stream connected to the terminal, and +an output stream +.I outf +connected to the terminal; +and .bP -an input stream connected to the terminal +an input stream +.I inf +connected to the terminal. .PP -If the \fItype\fP parameter is \fBNULL\fP, \fB$TERM\fP will be used. +.B \%newterm +returns a variable of +.RI pointer-to- SCREEN +type, +which should be saved for later use with +.B \%set_term +and +.BR \%delscreen "." .PP -The file descriptor of the output stream is passed to \fBsetupterm\fP(3X), -which returns a pointer to a \fI\%TERMINAL\fP structure. -\fBnewterm\fP's return value holds a pointer to the \fI\%TERMINAL\fP structure. +.B \%newterm +passes the file descriptor of the output stream to the +.I \%term\%info +function \fB\%setupterm\fP(3X), +which returns a pointer to a +.I \%TERMINAL +structure that +.B \%newterm +stores in the +.I SCREEN +it returns to the application. +.PP +An application that needs to inspect a terminal type's capabilities, +so that it can continue to run in a line-oriented mode +if the terminal type does not support capabilities the application +demands, +would also use +.BR \%newterm "." +If at most one terminal connection is needed, +the programmer could perform such a capability test, +decide the mode in which to operate, +then call +.B \%delscreen +on the pointer returned by +.BR \%newterm "," +and proceed with either +.B \%initscr +or a +.RI non- curses +interface. .SS endwin The program must also call -\fBendwin\fP for each terminal being used before exiting from \fBcurses\fP. -If \fBnewterm\fP is called more than once for the same terminal, the first -terminal referred to must be the last one for which \fBendwin\fP is called. +.B \%endwin +for each terminal being used before exiting from +.IR curses "." +If +.B \%newterm +is called more than once for the same terminal, +the first terminal referred to must be the last one for which +.B \%endwin +is called. .PP -A program should always call \fBendwin\fP before exiting or escaping from -\fBcurses\fP mode temporarily. -This routine +A program should always call +.B \%endwin +before exiting the application +or temporarily suspending +.IR curses "'s" +management of the terminal. +.BR \%endwin ":" .bP -resets colors to correspond with the default color pair 0, +(if \fB\%start_color\fP(3X) has been called) +resets the terminal's foreground and background colors +to correspond with those of color pair 0 +(the default pair), .bP moves the cursor to the lower left-hand corner of the screen, .bP -clears the remainder of the line so that it uses the default colors, +(if \fB\%start_color\fP(3X) has been called) +restores the default color pair, +.bP +clears the line, .bP -sets the cursor to normal visibility (see \fBcurs_set\fP(3X)), +sets the cursor to normal visibility +(see \fB\%curs_set\fP(3X)), .bP -stops cursor-addressing mode using the \fIexit_ca_mode\fP terminal capability, +if applicable, +stops cursor-addressing mode using the +.B \%exit_ca_mode +.RB \%( rmcup ) +terminal capability, +and .bP -restores tty modes (see \fBreset_shell_mode\fP(3X)). +restores terminal modes (see \fB\%reset_shell_mode\fP(3X)). .PP -Calling \fBrefresh\fP(3X) or \fBdoupdate\fP(3X) after a -temporary escape causes the program to resume visual mode. +Calling \fB\%refresh\fP(3X) or \fB\%doupdate\fP(3X) after a +temporary suspension causes +.I curses +to resume managing the terminal. .SS isendwin -The \fBisendwin\fP routine returns \fBTRUE\fP if \fBendwin\fP has been -called without any subsequent calls to \fBwrefresh\fP, -and \fBFALSE\fP otherwise. +.B \%isendwin +returns +.B TRUE +if \fB\%wrefresh\fP(3X) +has not been called since the most recent +.B \%endwin +call, +and +.B FALSE +otherwise. .SS set_term -The \fBset_term\fP routine is used to switch between different terminals. -The screen reference \fInew\fP becomes the new current terminal. -The previous terminal is returned by the routine. -This is the only routine which manipulates \fISCREEN\fP pointers; -all other routines affect only the current terminal. +.B \%set_term +re-orients the +.I curses +library's operations to another terminal +when the application has arranged to manage more than one with +.BR \%newterm "." +.B \%set_term +expects a +.I SCREEN +pointer previously returned by +.B \%newterm +as an argument, +and returns the previous one. +.B \%set_term +is the only standard +.I curses +API function that manipulates +.I SCREEN +pointers; +all others affect only the current terminal +(but see \fBcurs_sp_funcs\fP(3X)). .SS delscreen -The \fBdelscreen\fP routine frees storage associated with the -\fISCREEN\fP data structure. -The \fBendwin\fP routine does not do -this, so \fBdelscreen\fP should be called after \fBendwin\fP if a -particular \fISCREEN\fP is no longer needed. +.B \%delscreen +frees the storage backing the supplied +.I SCREEN +pointer argument. +.B \%endwin +does not, +so that an application can resume managing a terminal with +.I curses +after a +(possibly conditional or temporary) +suspension; +see \fB\%curs_kernel\fP(3X). +Use +.B \%delscreen +after +.B \%endwin +when the application has no more need of a terminal device +but will not soon exit. .SH RETURN VALUE -\fBendwin\fP returns the integer \fBERR\fP upon failure and \fBOK\fP -upon successful completion. -.PP -Routines that return pointers always return \fBNULL\fP on error. +.B \%delscreen +returns no value. +.B \%endwin +returns +.B OK +on success and +.B ERR +on failure. +.B \%isendwin +returns +.B TRUE +or +.B FALSE +as described above. .PP -X/Open defines no error conditions. -In this implementation +In +.IR \%ncurses "," .bP -\fBendwin\fP returns an error if +.B \%endwin +returns +.B ERR +if .RS .bP -the terminal was not initialized, or +the terminal was not initialized, .bP -\fBendwin\fP is called more than once without updating the screen, or +it is called more than once without updating the screen, +or .bP -\fBreset_shell_mode\fP(3X) returns an error. +its call of \fB\%reset_shell_mode\fP(3X) returns +.BR ERR ";" +and .RE .bP -\fBnewterm\fP -returns an error if it cannot allocate the data structures for the screen, -or for the top-level windows within the screen, -i.e., -\fBcurscr\fP, \fBnewscr\fP, or \fBstdscr\fP. +.B \%newterm +returns +.B ERR +if it cannot allocate storage for the +.I SCREEN +structure +or the +.I WINDOW +structures automatically associated with it: +.BR \%curscr "," +.BR \%newscr "," +and +.BR \%stdscr "." +.PP +Functions that return pointers return null pointers on error. +In +.IR \%ncurses "," +.B \%set_term +does not fail, +and +.B \%initscr +exits the application if it does not operate successfully. +.SH NOTES +.I \%ncurses +establishes signal handlers when a function that initializes a +.IR SCREEN "," +either +.B \%initscr +or +.BR \%newterm "," +is first called. +Applications that wish to handle the following signals themselves +should set up their corresponding handlers +.I after +initializing the screen. +.TP +.I SIGINT +.IR \%ncurses 's +handler +.I attempts +to clean up the screen on exit. +Although it +.I usually +works as expected, +there are limitations. +.RS .bP -\fBset_term\fP -returns no error. +Walking the +.I SCREEN +list is unsafe, since all list management +is done without any signal blocking. +.bP +When an application has been built with the +.I \%_REENTRANT +macro defined +(and corresponding system support), +.B \%set_term +uses functions that could deadlock or misbehave in other ways. +.bP +.B \%endwin +calls other functions, +many of which use \fI\%stdio\fP(3) or other library functions that are +clearly unsafe. +.RE +.TP +.I SIGTERM +.I \%ncurses +uses the same handler as for +.IR \%SIGINT "," +with the same limitations. +It is not mentioned in X/Open Curses, +but is more suitable for this purpose than +.I \%SIGQUIT +(which is used in debugging). +.TP +.I SIGTSTP +.IR \%ncurses 's +handler manages the terminal-generated stop signal, +used in job control. +When resuming the process, +.I \%ncurses +discards pending input with \fB\%flushinp\fP(3X) +and repaints the screen, +assuming that it has been completely altered. +It also updates the saved terminal modes with +\fB\%def_shell_mode\fP(3X). +.TP +.I SIGWINCH +.I \%ncurses +handles changes to the terminal's window size, +a phenomenon ignored in standardization efforts. +It sets a (signal-safe) variable +that is later tested by \fB\%wgetch\fP(3X) and \fB\%wget_wch\fP(3X). +.RS +.bP +.B \%wgetch +returns the key code +.BR \%KEY_RESIZE "." +.bP +.B \%wget_wch +returns +.B \%KEY_CODE_YES +and sets its +.I wch +parameter to +.BR \%KEY_RESIZE "." +.RE +.IP +At the same time, +.I \%ncurses +calls \fB\%resizeterm\fP(3X) +to adjust the standard screen +.B \%stdscr +and update global variables such as +.B LINES +and +.BR COLS "." .SH PORTABILITY -These functions were described in X/Open Curses, Issue 4. -As of 2015, the current document is X/Open Curses, Issue 7. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .SS Differences X/Open Curses specifies that portable applications must not -call \fBinitscr\fP more than once: +call +.I \%initscr +more than once. .bP -The portable way to use \fBinitscr\fP is once only, -using \fB\%refresh\fP(3X) -to restore the screen after \fBendwin\fP. +The portable way to use +.I \%initscr +is once only, +using +.I \%refresh +to restore the screen after +.IR \%endwin "." .bP -This implementation allows using \fBinitscr\fP after \fBendwin\fP. +.I \%ncurses +permits use of +.I \%initscr +after +.IR \%endwin "." .PP -Old versions of curses, e.g., BSD 4.4, would return a null pointer -from \fBinitscr\fP when an error is detected, rather than exiting. -It is safe but redundant to check the return value of \fBinitscr\fP +.I \%initscr +in BSD, +from its inception (1980) through the Net/2 release (1991) returned +.I ERR +cast to a +.I \%WINDOW +pointer when detecting an error. +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/libcurses/initscr.c +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=Net2/usr/src/lib/libcurses/initscr.c +4.4BSD (1995) +instead returned a null pointer. +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/src/lib/libcurses/initscr.c +Neither exited the application. +It is safe but redundant to check the return value of +.I \%initscr in X/Open Curses. .PP -Calling \fBendwin\fP does not dispose of the memory allocated in \fBinitscr\fP -or \fBnewterm\fP. -Deleting a \fISCREEN\fP provides a way to do this: +Calling +.I \%endwin +does not dispose of the memory allocated by +.I \%initscr +or +.IR \%newterm "." +Deleting a +.I SCREEN +provides a way to do this. .bP -X/Open Curses does not say what happens to \fI\%WINDOW\fPs when \fBdelscreen\fP -\*(``frees storage associated with the \fISCREEN\fP\*('' +X/Open Curses does not say what happens to +.IR \%WINDOW s +when +.I \%delscreen +\*(``frees storage associated with the +.IR SCREEN "\*(''" nor does the SVr4 documentation help, -adding that it should be called after \fBendwin\fP if a \fISCREEN\fP +adding that it should be called after +.I \%endwin +if a +.I SCREEN is no longer needed. .bP -However, \fI\%WINDOW\fPs are implicitly associated with a \fISCREEN\fP. -so that it is reasonable to expect \fBdelscreen\fP to deal with these. +However, +every +.I \%WINDOW +is implicitly associated with a +.IR SCREEN "," +so it is reasonable to expect +.I \%delscreen +to dispose of them. .bP -SVr4 curses deletes the standard \fI\%WINDOW\fP structures -\fBstdscr\fP and \fBcurscr\fP as well as a work area \fBnewscr\fP. -SVr4 curses ignores other windows. +SVr4 deletes the standard +.I \%WINDOW +structures +.I \%stdscr +and +.I \%curscr +as well as a work area +.IR \%newscr "." +It ignores other windows. .bP Since version 4.0 (1996), -\fI\%ncurses\fP has maintained a list of all windows for each screen, -using that information to delete those windows when \fBdelscreen\fP is called. +.I \%ncurses +has maintained a list of all windows for each screen, +using that information to delete those windows when +.I \%delscreen +is +called. .bP -NetBSD copied this feature of \fI\%ncurses\fP in 2001. -PDCurses follows the SVr4 model, -deleting only the standard \fI\%WINDOW\fP structures. -.SS "High-level versus Low-level" -Different implementations may disagree regarding the level of some functions. -For example, \fISCREEN\fP (returned by \fBnewterm\fP) and -\fI\%TERMINAL\fP (returned by \fBsetupterm\fP(3X)) hold file descriptors for -the output stream. -If an application switches screens using \fBset_term\fR, -or switches terminals using \fBset_curterm\fP(3X), -applications which use the output file descriptor can have different -behavior depending on which structure holds the corresponding descriptor. -.PP -For example +NetBSD copied this feature of +.I \%ncurses +in 2001. +.I \%PDCurses +follows the SVr4 model, +deleting only the standard +.I \%WINDOW +structures and +.IR \%newscr "." +.SS "High-level versus Low-level Functions" +Implementations disagree +regarding the level of abstraction applicable to a function or property. +For example, +.I SCREEN +(returned by +.IR \%newterm ")" +and +.I \%TERMINAL +(returned by \fB\%setupterm\fP(3X)) hold file +descriptors for the output stream. +If an application switches screens using +.IR \%set_term "," +or switches terminals using \fB\%set_curterm\fP(3X), +applications +using the output file descriptor can behave differently +depending on the structure holding the corresponding descriptor. .bP -NetBSD's \fBbaudrate\fP(3X) function uses the descriptor in \fI\%TERMINAL\fP. -\fI\%ncurses\fP and SVr4 use the descriptor in \fISCREEN\fP. +NetBSD's +.I \%baudrate +function uses the descriptor in +.IR \%TERMINAL "." +.I \%ncurses +and SVr4 use the descriptor in +.IR SCREEN "." .bP -NetBSD and \fI\%ncurses\fP use the descriptor -in \fI\%TERMINAL\fP +NetBSD and +.I \%ncurses +use the descriptor +in +.I \%TERMINAL for terminal I/O modes, e.g., -\fBdef_shell_mode\fP(3X), -\fBdef_prog_mode\fP(3X). -SVr4 curses uses the descriptor in \fISCREEN\fP. -.SS "Unset \fITERM\fP Variable" -If the \fITERM\fP variable is missing or empty, \fBinitscr\fP uses the -value \*(``unknown\*('', -which normally corresponds to a terminal entry with the \fIgeneric\fP -(\fIgn\fP) capability. -Generic entries are detected by \fBsetupterm\fP(3X) +\fB\%def_shell_mode\fP(3X), +\fB\%def_prog_mode\fP(3X). +SVr4 uses the descriptor in +.IR SCREEN "." +.SS "Unset \fITERM\fP Environment Variable" +If the +.I TERM +variable is not set in the environment or has an empty value, +.I \%initscr +uses the value \*(``unknown\*('', +which normally corresponds to a terminal entry with the +.B \%generic +.RB ( gn ) +capability. +Generic entries are detected by \fB\%setupterm\fP(3X) and cannot be used for full-screen operation. Other implementations may handle -a missing/empty \fITERM\fP variable differently. +a missing or empty +.I TERM +variable differently. .SS "Signal Handlers" -Quoting from X/Open Curses Issue 7, section 3.1.1: +Quoting X/Open Curses Issue\ 7, +section 3.1.1: .RS 5 .PP Curses implementations may provide for special handling of the \%SIGINT, \%SIGQUIT, and \%SIGTSTP signals if their disposition is \%SIG_DFL at the time -.I \%initscr +.IR \%initscr () is called.\|.\|. .PP Any special handling for these signals may remain in effect for the @@ -265,50 +605,27 @@ None of the Curses functions are required to be safe with respect to signals.\|.\|. .RE .PP -This implementation establishes signal handlers during initialization, -e.g., \fBinitscr\fP or \fBnewterm\fP. -Applications which must handle these signals should set up the corresponding -handlers \fIafter\fP initializing the library: -.TP 5 -.B SIGINT -The handler \fIattempts\fP to clean up the screen on exit. -Although it \fIusually\fP works as expected, there are limitations: -.RS 5 -.bP -Walking the \fISCREEN\fP list is unsafe, since all list management -is done without any signal blocking. -.bP -On systems which have \fBREENTRANT\fP turned on, \fBset_term\fP uses -functions which could deadlock or misbehave in other ways. -.bP -\fBendwin\fP calls other functions, -many of which use \fI\%stdio\fP(3) or other library functions which are -clearly unsafe. -.RE -.TP 5 -.B SIGTERM -This uses the same handler as \fBSIGINT\fP, with the same limitations. -It is not mentioned in X/Open Curses, but is more suitable for this -purpose than \fBSIGQUIT\fP (which is used in debugging). -.TP 5 -.B SIGTSTP -This handles the \fIstop\fP signal, used in job control. -When resuming the process, this implementation discards pending -input with \fB\%flushinp\fP(3X), and repaints the screen -assuming that it has been completely altered. -It also updates the saved terminal modes with -\fB\%def_shell_mode\fP(3X). -.TP 5 -.B SIGWINCH -This handles the window-size changes which were ignored in -the standardization efforts. -The handler sets a (signal-safe) variable -which is later tested in \fB\%wgetch\fP(3X). -If \fBkeypad\fP has been enabled for the corresponding window, -\fBwgetch\fP returns the key symbol \fBKEY_RESIZE\fP. -At the same time, \fBwgetch\fP calls \fBresizeterm\fP to adjust the -standard screen \fBstdscr\fP, -and update other data such as \fBLINES\fP and \fBCOLS\fP. +Section \*(``NOTES\*('' above discusses +.IR \%ncurses 's +signal handlers. +.SH HISTORY +4BSD (1980) +introduced +.I \%initscr +and +.IR \%endwin "." +.PP +SVr2 (1984) +added +.I \%newterm +and +.IR \%set_term "." +.PP +SVr3.1 (1987) +supplied +.I \%delscreen +and +.IR \%isendwin "." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_kernel\fP(3X), diff --git a/contrib/ncurses/man/curs_inopts.3x b/contrib/ncurses/man/curs_inopts.3x index 63db4967eebc..c0db26d6fd1c 100644 --- a/contrib/ncurses/man/curs_inopts.3x +++ b/contrib/ncurses/man/curs_inopts.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_inopts.3x,v 1.66 2024/04/13 22:20:29 tom Exp $ -.TH curs_inopts 3X 2024-04-13 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_inopts.3x,v 1.116 2025/10/04 20:15:02 tom Exp $ +.TH curs_inopts 3X 2025-10-04 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -40,6 +40,11 @@ .ie t .ds '' '' .el .ds '' "" .\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fB\%cbreak\fP, \fB\%echo\fP, @@ -75,24 +80,24 @@ get and set \fIcurses\fR terminal input options \fBint echo(void); \fBint noecho(void); .PP -\fBint intrflush(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBint keypad(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBint meta(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBint nodelay(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBint notimeout(WINDOW *\fIwin\fP, bool \fIbf\fP); +\fBint intrflush(WINDOW * \fIwin\fP \fI/* ignored */\fP, bool \fIbf\fP); +\fBint keypad(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBint meta(WINDOW * \fIwin\fP \fI/* ignored */\fP, bool \fIbf\fP); +\fBint nodelay(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBint notimeout(WINDOW * \fIwin\fP, bool \fIbf\fP); .PP \fBint nl(void); \fBint nonl(void); .PP -\fBint raw(void); -\fBint noraw(void); -.PP \fBvoid qiflush(void); \fBvoid noqiflush(void); .PP +\fBint raw(void); +\fBint noraw(void); +.PP \fBint halfdelay(int \fItenths\fP); \fBvoid timeout(int \fIdelay\fP); -\fBvoid wtimeout(WINDOW *\fIwin\fP, int \fIdelay\fP); +\fBvoid wtimeout(WINDOW * \fIwin\fP, int \fIdelay\fP); .PP \fBint typeahead(int \fIfd\fP); .PP @@ -103,287 +108,552 @@ get and set \fIcurses\fR terminal input options \fBint is_raw(void); .fi .SH DESCRIPTION -.I \%ncurses -provides several functions that let an application change the way input -from the terminal is handled. -Some are global, -applying to all windows. -Others apply only to a specific window. -Window-specific settings are not automatically applied to new or derived -windows. -An application must apply these to each window if the same behavior is -desired. +.I curses +offers configurable parameters permitting an application to control the +handling of input from the terminal. +Some, +such as those affecting the terminal's +.I mode +or line discipline, +are global, +applying to all windows; +others apply only to a specific window. +The library does not automatically apply such parameters to new or +derived windows; +an application must configure each window for the desired behavior. +.PP +Some descriptions below make reference to an +.IR "input character reading function" ":" +this is \fB\%wgetch\fP(3X) in the non-wide character +.I curses +API and \fB\%wget_wch\fP(3X) in the wide character API. +In addition to the variant forms of these described in +\fB\%ncurses\fP(3X), +the +.I curses +functions \fB\%wgetstr\fP(3X) and \fB\%wget_wstr\fP(3X) and their own +variants call the appropriate input character reading function. .\" .SS "cbreak, nocbreak" Normally, -the terminal driver buffers typed characters until a newline or carriage -return is typed. -The \fB\%cbreak\fP routine disables line buffering and -erase/kill character-processing -(interrupt and flow control characters are unaffected), -making characters typed by the user immediately available to the +the terminal driver buffers typed characters, +not delivering them to an application +until a line feed or carriage return is typed. +This canonical (\*(``cooked\*('') line discipline also supports +software flow control, +simple line editing functions +(character and word erase, +and whole-line erasure or \*(``kill\*(''), +and job control. +.B \%cbreak +configures the terminal in +.IR "cbreak mode" "," +which disables line buffering +and erase and kill character processing \(em +the interrupt, +quit, +suspend, +and flow control characters are unaffected \(em +and makes characters typed by the user immediately available to the program. -The \fB\%nocbreak\fP routine returns the terminal to normal (cooked) -mode. +.B \%nocbreak +restores canonical (\*(``cooked\*('') mode. .PP -Initially the terminal may or may not be in \fB\%cbreak\fP mode, -as the mode is inherited; +The state of the terminal is unknown to a +.I curses +application when it starts; therefore, -a program should call \fB\%cbreak\fP or \fB\%nocbreak\fP explicitly. +a program should call +.B \%cbreak +or +.B \%nocbreak +explicitly. Most interactive programs using .I curses -set the \fB\%cbreak\fP mode. -Note that \fB\%cbreak\fP overrides \fBraw\fP. -[See \fB\%curs_getch\fP(3X) for a discussion of how these routines -interact with \fBecho\fP and \fB\%noecho\fP.] +set \%cbreak +mode. +Calling +.B \%cbreak +overrides +.BR raw "." +The man page for the input character reading function +discusses how +.B \%cbreak +and +.B \%nocbreak +interact with +.B echo +and +.BR \%noecho "." .\" .SS "echo, noecho" -The \fBecho\fP and \fB\%noecho\fP routines control whether characters -typed by the user are echoed by \fB\%getch\fP(3X) as they are typed. -Echoing by the terminal driver is always disabled, -but initially \fB\%getch\fP is in echo mode, -so characters typed are echoed. -Authors of most interactive programs prefer to do -their own echoing in a controlled area of the screen, +.B echo +and +.B \%noecho +determine whether characters typed by the user are written to the +.I curses +window by the input character reading function as they are typed. +.I curses +always disables the terminal driver's own echoing. +By default, +a +.I curses +screen's echo option is set. +Authors of most interactive programs prefer +to do their own echoing in a controlled area of the screen, or not to echo at all, -so they disable echoing by calling \fB\%noecho\fP. -[See \fB\%curs_getch\fP(3X) for a -discussion of how these routines interact with \fB\%cbreak\fP and -\fB\%nocbreak\fP.] +so they call +.BR \%noecho "." +The man page for the input character reading function +discusses how +.B echo +and +.B \%noecho +interact with +.B \%cbreak +and +.BR \%nocbreak "." .\" .SS halfdelay -The \fB\%halfdelay\fP routine is used for half-delay mode, -which is similar to \fB\%cbreak\fP mode in that characters typed by the -user are immediately available to the program. +.B \%halfdelay +configures +.IR "half-delay mode" "," +which is similar to \%cbreak mode in that characters typed by the user +are immediately available to the program. However, -after blocking for \fItenths\fP tenths of seconds, -\fBERR\fP is returned if nothing has been typed. -The value of \fItenths\fP must be a number between 1 and 255. -Use \fB\%nocbreak\fP to leave half-delay mode. +after blocking for +.I tenths +tenth-seconds, +an input character reading function returns +.B ERR +if no input is pending. +The value of +.I tenths +must be between 1 and 255. +Use +.B \%nocbreak +to leave half-delay mode. .\" .SS intrflush -If the \fB\%intrflush\fP option is enabled -.RI ( bf +.B \%intrflush +calls +.B \%qiflush +(see below) +if +.I bf is -.BR TRUE ), -and an interrupt key is pressed on the keyboard -(interrupt, -break, -quit), -all output in the terminal driver queue is flushed, -giving the effect of faster response to the interrupt, -but causing -.I curses -to have the wrong idea of what is on the screen. -Disabling the option -.RI ( bf +.BR TRUE "," +and +.B \%noqiflush +if +.I bf is -.BR FALSE ), -prevents the flush. -The default for the option is inherited from the terminal driver -settings. -The +.BR FALSE "." +It ignores its .I win -argument is ignored. +argument. .\" .SS keypad -The \fB\%keypad\fP option enables the keypad of the user's terminal. +.B keypad +enables recognition of a terminal's function keys. If enabled .RI ( bf is -.BR TRUE ), -the user can press a function key -(such as an arrow key) -and \fB\%wgetch\fP(3X) returns a single value representing the function -key, -as in \fB\%KEY_LEFT\fP. +.BR TRUE ")" +then when an input character reading function reads ESC, +it waits for further input corresponding to an escape sequence +defined by the terminal type description. +If a valid sequence populates the input stream, +the input character reading function +returns a value representing the function key, +such as +.BR KEY_LEFT "." +(Wide-character API users: +\fB\%wget_wch\fP(3X) returns +.B \%KEY_CODE_YES +to indicate the availability of a function key code in its +.I wch +parameter.) +If the sequence is invalid, +the input character reading function returns only its last character. If disabled -(\fIbf\fP is \fBFALSE\fP), +.RI ( bf +is +.BR FALSE ), .I curses does not treat function keys specially and the program has to interpret -the escape sequences itself. -If the keypad in the terminal can be turned on -(made to transmit) -and off -(made to work locally), -turning on this option causes the terminal keypad to be turned on when -\fB\%wgetch\fP(3X) is called. -The default value for keypad is \fBFALSE\fP. +escape sequences itself. +If the terminal type description defines the +.B \%keypad_local +.RB ( rmkx ) +and +.B \%keypad_xmit +.RB ( smkx ) +capabilities, +enabling a window's keypad mode +sets the terminal's keypad to transmit, +and disabling keypad mode +sets the terminal's keypad to work locally. +By default, +a window's keypad mode is off. .\" .SS meta Initially, -whether the terminal returns 7 or 8 significant bits on input depends on -the control mode of the terminal driver [see \fI\%termios\fP(3)]. +whether the terminal returns 7- or 8-bit character codes on input +depends on the configuration of the terminal driver; +on POSIX systems, +see \fI\%termios\fP(3). To force 8 bits to be returned, -invoke -\fBmeta\fP(\fIwin\fP, \fBTRUE\fP); +call +.BR meta( .\|.\|. , +.BR TRUE) ; this is equivalent, -under POSIX, +on POSIX systems, to setting the CS8 flag on the terminal. To force 7 bits to be returned, -invoke -\fBmeta\fP(\fIwin\fP, \fBFALSE\fP); +call +.BR meta( .\|.\|. , +.BR FALSE) ; this is equivalent, -under POSIX, +on POSIX systems, to setting the CS7 flag on the terminal. -The window argument, -.IR win , -is always ignored. -If the terminfo capabilities -\fBsmm\fP (meta_on) and -\fBrmm\fP (meta_off) are defined for the terminal, -\fBsmm\fP is sent to the terminal when -\fBmeta\fP(\fIwin\fP, \fBTRUE\fP) -is called and \fBrmm\fP is sent when -\fBmeta\fP(\fIwin\fP, \fBFALSE\fP) is called. +.I curses +ignores the window argument +.IR win "." +If the +.I \%term\%info +string capabilities +.B \%meta_on +.RB ( smm ) +and +.B \%meta_off +.RB ( rmm ) +are defined for the terminal type, +enabling meta mode sends +.BR smm 's +value to the terminal and disabling it sends that of +.B rmm +to the terminal. .\" .SS "nl, nonl" -The \fBnl\fP and \fBnonl\fP routines control whether the underlying -display device translates the return key into newline on input. +Initially, +whether the terminal reports a carriage return +using the character code for a line feed +in cbreak or raw modes +depends on the configuration of the terminal driver; +see \fI\%termios\fP(3). +.B nl +configures the terminal to perform this translation. +.B nonl +disables it. +Under its canonical (\*(``cooked\*('') line discipline, +the terminal driver always translates carriage returns to line feeds. .\" .SS nodelay -The \fB\%nodelay\fP option causes \fB\%getch\fP to be a non-blocking -call. +.B \%nodelay +configures the input character reading function to be non-blocking for +window +.IR "win" . If no input is ready, -\fB\%getch\fP returns \fBERR\fP. +the reading function returns +.BR ERR "." If disabled .RI ( bf is .BR FALSE ), -\fB\%getch\fP waits until a key is pressed. +the reading function does not return until it has input. .SS notimeout -When interpreting an escape sequence, -\fB\%wgetch\fP(3X) sets a timer -while waiting for the next character. -If -\fB\%notimeout(\fIwin\fR, \fBTRUE\fP) -is called, -then \fB\%wgetch\fP does not set a timer. +When +.B \%keypad +has been called on a window +and the input character reading function reads an ESC character from it, +.I curses +sets a timer while waiting for the next character. +If the timer elapses, +.I curses +interprets the ESC as an explicit press of the terminal's Escape key +(or equivalent). +.\" like Control+[ +.BI \%notimeout( win , +.B TRUE) +disables this timer. The purpose of the timeout is to distinguish sequences produced by a function key from those typed by a user. +If this timer is disabled, +.I curses +waits forever for subsequent keystrokes +until it determines the escape sequence to be valid or invalid. +.\" +.SS "qiflush, noqiflush" +.\" +.B \%qiflush +and +.B \%noqiflush +configure the terminal driver's treatment of its input and output queues +when it handles the interrupt, +suspend, +or quit characters under the canonical (\*(``cooked\*('') +or cbreak line disciplines on POSIX systems; +see \fI\%termios\fP(3). +The default behavior is inherited from the terminal driver settings. +Calling +.B \%qiflush +configures the terminal to +.I flush +the queues +(discarding their contents) +when any of these events occurs, +giving the impression of faster response to user input, +but making the library's model of the screen contents incorrect. +Calling +.B \%noqiflush +prevents such flushing, +but might frustrate impatient users on slow connections if a +.I curses +update of the screen is in progress when the event occurs; +see +.B \%typeahead +below for a mitigation of this problem. +You may want to call +.B \%noqiflush +in a signal handler if, +after the handler exits, +you want output to continue +as though the signal had not occurred. .\" .SS "raw, noraw" -The \fBraw\fP and \fB\%noraw\fP routines place the terminal into or out -of raw mode. -Raw mode is similar to \fB\%cbreak\fP mode, -in that characters typed are immediately passed through to the user -program. -The differences are that in raw mode, -the interrupt, +.B raw +configures the terminal to read input in +.IR "raw mode" , +which is similar to cbreak mode +(see +.B \%cbreak +above) +except that it furthermore passes through the terminal's configured +interrupt, quit, suspend, -and flow control characters are all -passed through uninterpreted, -instead of generating a signal. -The behavior of the BREAK key depends on other bits in the terminal -driver that are not set by -.IR curses . -.\" -.SS "qiflush, nqiflush" -When the \fB\%noqiflush\fP routine is used, -normal flush of input and output queues associated with the \fBINTR\fP, -\fBQUIT\fP and \fBSUSP\fP characters will not be done -[see \fB\%termios\fP(3)]. -When -\fB\%qiflush\fP is called, -the queues will be flushed when these control characters are read. -You may want to call \fB\%noqiflush\fP in a signal handler if you want -output to continue as though the interrupt had not occurred, -after the handler exits. +and flow control characters +uninterpreted to the application, +instead of generating a signal or acting on I/O flow. +The behavior of the terminal's \*(``Break\*('' key +(if any) +depends on terminal driver configuration parameters that +.I curses +does not handle. +.B \%noraw +restores the terminal's canonical (\*(``cooked\*('') line discipline. .\" .SS "timeout, wtimeout" -The \fB\%timeout\fP and \fB\%wtimeout\fP routines set blocking or -non-blocking read for a given window. -If \fIdelay\fP is negative, -a blocking read is used -(i.e., -waits indefinitely for input). -If \fIdelay\fP is zero, -then a non-blocking read is used -(i.e., -.I read -returns \fBERR\fP if no input is waiting). +.B \%wtimeout +configures whether a +.I curses +input character reading function called on window +.I win +uses blocking or non-blocking reads. If -\fIdelay\fP is positive, -then -.I read -blocks for \fIdelay\fP milliseconds, -and returns \fBERR\fP if there is still no input. -Hence, -these routines provide the same functionality as \fB\%nodelay\fP, -plus the additional capability of being able to block for only -\fIdelay\fP milliseconds -(where \fIdelay\fP is positive). +.I delay +is negative, +.I curses +uses a blocking read, +waiting indefinitely for input. +If +.I delay +is zero, +the read is non-blocking; +an input character reading function returns +.B ERR +if no input is pending. +If +.I delay +is positive, +an input character reading function +blocks for +.I delay +milliseconds, +and returns +.B ERR +if the delay elapses and there is still no input pending. +.B \%timeout +calls +.B \%wtimeout +on +.BR stdscr "." .\" .SS typeahead -.I curses -does \*(``line-breakout optimization\*('' by looking for typeahead -periodically while updating the screen. -If input is found, -and it is coming from a terminal, -the current update is postponed until -\fB\%refresh\fP(3X) or \fB\%doupdate\fP is called again. -This allows faster response to commands typed in advance. Normally, -the input +a +.I curses +library checks the terminal's input file descriptor for activity +with \fIpoll\fP(2) or \fI\%select\fP(2) +while updating the screen; +if it finds any, +it postpones output +until the next \fB\%wrefresh\fP(3X) or \fB\%doupdate\fP(3X) call, +allowing faster response to user key strokes. +The library tests the file descriptor corresponding to the .I FILE -pointer passed to \fB\%newterm\fP, -or \fBstdin\fP in the case that \fB\%initscr\fP was used, -will be used to do this typeahead checking. -The \fB\%typeahead\fP routine specifies that the file descriptor -\fIfd\fP is to be used to check for typeahead instead. -If \fIfd\fP is -\-1, -then no typeahead checking is done. +stream pointer passed to \fB\%newterm\fP(3X) +(or +.I stdin +if \fB\%initscr\fP(3X) was called), +for pending input. +.B \%typeahead +instructs +.I curses +to test file descriptor +.I fd +instead. +An +.I fd +of +.B \-1 +disables the check. .\" .SH RETURN VALUE -All routines that return an integer return \fBERR\fP upon failure and -\fBOK\fP -(SVr4 specifies only \*(``an integer value other than \fBERR\fP\*('') -upon successful completion, -unless otherwise noted in the preceding routine descriptions. +.B \%timeout +and +.B \%wtimeout +return no value. +.PP +.BR \%cbreak "," +.BR \%nocbreak "," +.BR \%echo "," +.BR \%noecho "," +.BR \%halfdelay "," +.BR \%intrflush "," +.BR \%keypad "," +.BR \%meta "," +.BR \%nodelay "," +.BR \%notimeout "," +.BR \%nl "," +.BR \%nonl "," +.BR \%raw "," +.BR \%noraw "," +and +.B \%typeahead +return +.B OK +on success and +.B ERR +on failure. +.PP +In +.IR \%ncurses "," +the functions in the previous paragraph return +.B ERR +if +.bP +the library's +.I \%TERMINAL +structure for the device has not been initialized with +\fB\%initscr\fP(3X), +\fB\%newterm\fP(3X), +or +\fB\%setupterm\fP(3X), +or +.bP +.I win +is a null pointer +(except with +.B \%intrflush +and +.BR meta "," +which ignore its value). +.PP +Further, +.B \%halfdelay +returns +.B ERR +if +.I delay +is outside the range 1..255. .PP -X/Open Curses does not specify any error conditions. -In this implementation, -functions with a window parameter will return an error if it is null. -Any function will also return an error if the terminal was not -initialized. -Also, -.RS 3 -.TP 5 -\fB\%halfdelay\fP -returns an error -if its parameter is outside the range 1..255. -.RE +See section \*(``EXTENSIONS\*('' below for the +return values of +.BR is_cbreak "," +.BR is_echo "," +.BR is_nl "," +and +.BR is_raw "." .SH NOTES -\fBecho\fP, -\fB\%noecho\fP, -\fB\%halfdelay\fP, -\fB\%intrflush\fP, -\fBmeta\fP, -\fBnl\fP, -\fBnonl\fP, -\fB\%nodelay\fP, -\fB\%notimeout\fP, -\fB\%noqiflush\fP, -\fB\%qiflush\fP, -\fB\%timeout\fP, +.BR echo "," +.BR \%noecho "," +.BR \%halfdelay "," +.BR \%intrflush "," +.BR meta "," +.BR nl "," +.BR nonl "," +.BR \%nodelay "," +.BR \%notimeout "," +.BR \%noqiflush "," +.BR \%qiflush "," +.BR \%timeout "," and -\fB\%wtimeout\fP +.B \%wtimeout may be implemented as macros. .PP -\fB\%noraw\fP and \fB\%nocbreak\fP follow historical practice in that -they attempt to restore normal (\*(``cooked\*('') mode -from raw and cbreak modes respectively. -Mixing \fBraw\fP/\fB\%noraw\fP and \fB\%cbreak\fP/\fB\%nocbreak\fP calls -leads to terminal driver control states that are hard to predict or -understand; +.B \%noraw +and +.B \%nocbreak +follow historical practice in that they attempt to restore +the terminal's canonical (\*(``cooked\*('') line discipline +from raw and cbreak, +respectively. +Mixing +.BR \%raw / noraw +calls with +.BR \%cbreak / nocbreak +calls leads to terminal driver control states that are hard to predict +or understand; doing so is not recommended. +.PP +.I curses +documentation uses the terms \*(``delay\*('' and \*(``timeout\*('' +freely to describe two related but distinct aspects of input handling, +at the risk of confusing the user. +The functions +.BR \%halfdelay "," +.BR \%nodelay "," +.BR \%timeout "," +and +.B \%wtimeout +configure whether the input character reading function +\%(\fBwgetch\fP(3X) or \fB\%wget_wch\fP(3X)) +waits for keyboard input to begin, +and for how long. +.B \%keypad +configures whether that function waits for further input +if the first character it reads is ESC. +Calling +.BR \%notimeout "," +which has nothing to do with +.B \%timeout +or +.BR \%wtimeout "," +makes this delay in expectation of further characters +effectively infinite. +X/Open Curses affords no means of otherwise configuring +the length of this second delay, +but an AIX and +.I \%ncurses +extension, +.BR \%ESCDELAY , +is available both as an environment variable and a global symbol +permitting the user and application, +respectively, +to do so; +see \fB\%ncurses\fP(3X) and \fB\%curs_variables\fP(3X). .SH EXTENSIONS .I \%ncurses -provides four \*(``is_\*('' functions that may be used to detect if the -corresponding flags were set or reset. +provides four \*(``is_\*('' functions corresponding to +.BR \%cbreak "," +.BR echo "," +.BR nl "," +and +.BR raw "," +permitting their states to be queried by the application. .PP .TS center; @@ -399,26 +669,18 @@ is_raw raw noraw .PP In each case, the function returns -.TP 4 \" "-1" + 2n -1 -if the flag is set, +.TP 5 \" "-1" + 2n tag separation + 1n fudge for typesetters like grops +.B 1 +if the option is set, .TP -0 -if the flag is reset, +.B 0 +if the option is unset, or .TP -\-1 -if the library is not initialized. -.PP -They were designed for -\fB\%ncurses\fP(3X), -and are not found in SVr4 -.IR curses , -4.4BSD -.IR curses , -or any other previous -.I curses -implementation. +.B \-1 +if the library's +.I \%TERMINAL +structure for the device has not been initialized. .SH PORTABILITY Applications employing .I \%ncurses @@ -427,33 +689,54 @@ extensions should condition their use on the visibility of the preprocessor macro. .PP Except as noted in section \*(``EXTENSIONS\*('' above, -X/Open Curses, Issue 4, Version 2 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 508 +.\" It continues "unless otherwise noted in the preceding routine +.\" descriptions", but no notes otherwise are present; the man page +.\" discusses getch()'s return value repeatedly, but never those of the +.\" functions the page ostensibly documents. .PP .I \%ncurses follows X/Open Curses -and the historical practice of AT&T -.I curses -implementations, -in that the echo bit is cleared when -.I curses -initializes the terminal state. +and the historical practice of System\ V +.IR curses "," +clearing the terminal driver's \*(``echo\*('' flag when initializing the +screen. BSD .I curses -differed from this slightly; -it left the echo bit on at initialization, -but the BSD \fBraw\fP call turned it off as a side effect. +did not, +but its +.I raw +function turned it off as a side effect. +.\" SGTTY's sg_flags had a "RAW" symbol; termio in SVr1 for the PDP-11 +.\" did not. +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/include/curses.h +.\" https://github.com/ryanwoodsmall/oldsysv/blob/master/sysv-pdp11_man/a_man/man7/termio.7 For best portability, -set \fBecho\fP or \fB\%noecho\fP explicitly just after initialization, -even if your program remains in cooked mode. +call +.I echo +or +.I \%noecho +explicitly just after initialization, +even if your program retains the terminal's canonical (\*(``cooked\*('') +line discipline. .PP -X/Open Curses is ambiguous regarding whether \fBraw\fP should disable -the CR/LF translations controlled by \fBnl\fP and \fBnonl\fP. +X/Open Curses is ambiguous regarding whether +.I raw +should disable the carriage return and line feed translation feature +controlled by +.I nl +and +.IR \%nonl "." BSD .I curses -did turn off these translations; -AT&T +turned off these translations; +System\ V .I curses -(at least as late as SVr1) did not. .I \%ncurses does so, @@ -462,65 +745,124 @@ on the assumption that a programmer requesting raw input wants a clean 8-bit clean) connection that the operating system will not alter. .PP -When \fB\%keypad\fP is first enabled, +When +.B \%keypad +is first enabled for a window, .I \%ncurses -loads the key definitions for the current terminal description. -If the terminal description includes extended string capabilities, -e.g., -from using the +loads the standard function key string capabilities +for the terminal type description of its screen; +see the entries beginning with \*(``key_\*('' in \fB\%terminfo\fP(5). +If that description includes extended string capabilities, +produced by the .B \-x -option of \fB\%@TIC@\fP, +option of \fB\%@TIC@\fP(1), +for example, then .I \%ncurses -also defines keys for the capabilities whose names begin with +also defines keys for the capabilities whose codes begin with \*(``k\*(''. -The corresponding keycodes are generated and -(depending on previous loads of terminal descriptions) -may differ from one execution of a program to the next. -The generated keycodes are recognized by the \fB\%keyname\fP(3X) -function -(which will then return a name beginning with \*(``k\*('' denoting the -terminfo capability name rather than \*(``K\*('', +.I \%ncurses +generates a numeric key code for each such extended capability; +depending on previous loads of terminal type descriptions, +these may differ from one execution of a program to the next. +\fB\%keyname\fP(3X) recognizes the generated key codes +and returns a name beginning with \*(``k\*('' denoting the +.I \%term\%info +capability name rather than \*(``KEY_\*('', used for .I curses -key names). +key names. On the other hand, -an application can use \fB\%define_key\fP(3X) to establish -a specific keycode for a given string. -This makes it possible for an application to check for an extended -capability's presence with \fB\%tigetstr\fP, -and reassign the keycode to match its own needs. +an application can use \fB\%define_key\fP(3X) to bind +a selected key to a string of the programmer's choice. +This feature enables an application to check for its presence +with \fB\%tigetstr\fP(3X), +and reassign the numeric key code to match its own needs. .PP -Low-level applications can use \fB\%tigetstr\fP to obtain the definition -of any particular string capability. -Higher-level applications which use the +Low-level applications can use \fB\%tigetstr\fP(3X) to obtain the +definition of any string capability. .I curses -\fB\%wgetch\fP and similar functions to return keycodes rely upon the -order in which the strings are loaded. -If more than one key definition has the same string value, -then \fB\%wgetch\fP can return only one keycode. +applications use the input character reading function +to obtain key codes from input +and rely upon the order in which the string capabilities are loaded. +Multiple key capability strings can have the same value, +but the input character reading function can report only one key code. Most .I curses implementations (including .IR \%ncurses ) load key definitions in the order -defined by the array of string capability names. -The last key to be loaded determines the keycode which will be returned. +they appear in the +.B \%strfnames +array of string capability names; +see \fB\%term_variables\fP(3X). +.\" ncurses/tinfo/parse_entry.c:lookup_fullname, I think --GBR +The last capability read using a particular definition determines the +key code to be reported. In .IR \%ncurses , -you may also have extended capabilities interpreted as key definitions. -These are loaded after the predefined keys, -and if a capability's value is the same as a previously-loaded -key definition, -the later definition is the one used. +extended capabilities can be interpreted as key definitions. +The library loads these after its built-in definitions, +and if an extended capability's value +is the same as one previously loaded, +the library uses the later definition. .SH HISTORY +4BSD (1980) +introduced +.IR echo "," +.IR \%noecho "," +.IR nl "," +.IR \%nonl "," +.IR raw "," +and +.IR \%noraw "." \" also crmod and nocrmod, never standardized +.PP +SVr2 (1984) +featured a new terminal driver, +extending the +.I curses +API to support it with +.IR \%cbreak "," +.IR \%nocbreak "," +.IR \%intrflush "," +.IR \%keypad "," +.IR \%meta "," +.IR \%nodelay "," +and +.IR \%typeahead "." +.PP +SVr3 (1987) +added +.IR \%halfdelay "," +.IR \%notimeout "," +and +.IR \%wtimeout "." +.I \%qiflush +and +.I \%noqiflush +appeared in SVr3.1 (1987), +at which point +.I \%intrflush +became a wrapper for either of these functions, +depending on the value of its Boolean argument. +SVr3.1 also added +.IR \%timeout "." +.PP +.I \%ncurses +6.5 (2024) introduced +.IR is_cbreak "," +.IR is_echo "," +.IR is_nl "," +and +.IR is_raw "." +.PP Formerly, .I \%ncurses used -.B \%nl +.I \%nl and -.B \%nonl +.I \%nonl to control the conversion of newlines to carriage return/line feed on output as well as input. X/Open Curses documents the use of these functions only for input. @@ -535,15 +877,15 @@ to .I \%termios (the POSIX terminal API). In the former, -both input and output were controlled via a single option -.BR \%CRMOD , +both input and output conversions were controlled via a single option +\%\*(``CRMOD\*('', while the latter separates these features. Because that conversion interferes with output optimization, .I \%ncurses 6.2 (2020) amended -.B \%nl +.I \%nl and -.B \%nonl +.I \%nonl to eliminate their effect on output. .SH SEE ALSO \fB\%curses\fP(3X), @@ -551,4 +893,5 @@ to eliminate their effect on output. \fB\%curs_initscr\fP(3X), \fB\%curs_util\fP(3X), \fB\%define_key\fP(3X), -\fB\%termios\fP(3) +\fB\%termios\fP(3), +\fB\%term_variables\fP(3X) diff --git a/contrib/ncurses/man/curs_ins_wch.3x b/contrib/ncurses/man/curs_ins_wch.3x index 90b03f64f4d1..a4194eaf27fb 100644 --- a/contrib/ncurses/man/curs_ins_wch.3x +++ b/contrib/ncurses/man/curs_ins_wch.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_ins_wch.3x,v 1.30 2024/04/20 19:18:18 tom Exp $ -.TH curs_ins_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_ins_wch.3x,v 1.52 2025/10/21 00:09:49 tom Exp $ +.TH curs_ins_wch 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -39,41 +39,64 @@ .ie t .ds '' '' .el .ds '' "" .\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fB\%ins_wch\fP, +\fB\%wins_wch\fP, \fB\%mvins_wch\fP, -\fB\%mvwins_wch\fP, -\fB\%wins_wch\fP \- +\fB\%mvwins_wch\fP \- insert a \fIcurses\fR complex character in a window .SH SYNOPSIS .nf \fB#include <curses.h>\fP .PP -\fBint ins_wch(const cchar_t *\fIwch\fP); -\fBint wins_wch(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP); -\fBint mvins_wch(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP); -\fBint mvwins_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP); +\fBint ins_wch(const cchar_t * \fIwch\fP); +\fBint wins_wch(WINDOW * \fIwin\fP, const cchar_t * \fIwch\fP); +\fBint mvins_wch(int \fIy\fP, int \fIx\fP, const cchar_t * \fIwch\fP); +\fBint mvwins_wch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t * \fIwch\fP); .fi .SH DESCRIPTION -These functions insert the +.B \%wins_wch +inserts the .I curses complex character .I wch -at the cursor in the specified window -.I win -(or -.BR \%stdscr ). +at the cursor position in the window +.IR win "." The character previously at the cursor and any to its right move one cell to the right; -the rightmost character on the line is discarded. -The cursor does not advance. +the formerly rightmost character on the line is discarded. +Unlike \fB\%add_wch\fP(3X), +.B \%wins_wch +does not advance the cursor. +\fB\%ncurses\fP(3X) describes the variants of this function. .SH "RETURN VALUE" -These functions return \fBOK\fP on success and \fBERR\fP on failure. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -Functions taking a +In +.IR \%ncurses , +they return +.B ERR +if +.bP +the +.I curses +screen has not been initialized, +or +.bP +(for functions taking a .I \%WINDOW -pointer argument fail if the pointer is -.BR NULL . +pointer argument) +.I win +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -81,30 +104,37 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -A terminal's -.B \%insert_character -.RB ( ich1 ) -capability -is not necessarily employed. -.PP -\fB\%ins_wch\fP, -\fB\%mvins_wch\fP, +.BR \%ins_wch "," +.BR \%mvins_wch "," and -\fB\%mvwins_wch\fP +.B \%mvwins_wch may be implemented as macros. -.SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. .PP -SVr4 describes successful return values only as -\*(``an integer value other than \fBERR\fP\*(''. +.I curses +does not necessarily employ the terminal's +.B \%insert_character +.RB ( ich1 ) +capability to achieve insertion. +.SH PORTABILITY +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .SH HISTORY -SVr4 (1989) implemented these functions under the names -.BR inswch , -.BR winswch , -.BR mvinswch , -and -.BR mvwinswch . +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 +of the same year +specified a function named +.I \%winswch +(and the usual variants). +.\" SVID 4, vol 3., p. 512 +This was a later addition to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +It differed from X/Open's later +.I \%wins_wch +in that it took an argument of type +.I \%chtype +instead of +.IR \%cchar_t "." .SH "SEE ALSO" \fB\%curs_insch\fP(3X) describes comparable functions in the non-wide-character diff --git a/contrib/ncurses/man/curs_ins_wstr.3x b/contrib/ncurses/man/curs_ins_wstr.3x index 4ebd3ace2c5a..14654cce3e13 100644 --- a/contrib/ncurses/man/curs_ins_wstr.3x +++ b/contrib/ncurses/man/curs_ins_wstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_ins_wstr.3x,v 1.38 2024/04/20 21:23:08 tom Exp $ -.TH curs_ins_wstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_ins_wstr.3x,v 1.60 2025/03/01 21:30:14 tom Exp $ +.TH curs_ins_wstr 3X 2025-03-01 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,57 +46,93 @@ .. .SH NAME \fB\%ins_wstr\fP, -\fB\%ins_nwstr\fP, \fB\%wins_wstr\fP, -\fB\%wins_nwstr\fP, \fB\%mvins_wstr\fP, -\fB\%mvins_nwstr\fP, \fB\%mvwins_wstr\fP, +\fB\%ins_nwstr\fP, +\fB\%wins_nwstr\fP, +\fB\%mvins_nwstr\fP, \fB\%mvwins_nwstr\fP \- insert a wide-character string in a \fIcurses\fR window .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint ins_wstr(const wchar_t *\fIwstr\fP); -\fBint ins_nwstr(const wchar_t *\fIwstr\fP, int \fIn\fP); -\fBint wins_wstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP); -\fBint wins_nwstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP, int \fIn\fP); +\fBint ins_wstr(const wchar_t * \fIwstr\fP); +\fBint wins_wstr(WINDOW * \fIwin\fP, const wchar_t * \fIwstr\fP); +\fBint mvins_wstr(int \fIy\fP, int \fIx\fP, const wchar_t * \fIwstr\fP); +\fBint mvwins_wstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, + const wchar_t * \fIwstr\fP); .PP -\fBint mvins_wstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP); -\fBint mvins_nwstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP); -\fBint mvwins_wstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP); -\fBint mvwins_nwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP); +\fBint ins_nwstr(const wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint wins_nwstr(WINDOW * \fIwin\fP, const wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint mvins_nwstr(int \fIy\fP, int \fIx\fP, const wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint mvwins_nwstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, + const wchar_t * \fIwstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -These routines insert a \fBwchar_t\fP character string -(as many characters as will fit on the line) -before the character under the cursor, -as if calling \fBwins_wch\fP(3X). -All characters to the right of the cursor are shifted right, -with the possibility of the rightmost characters on the line being lost. -No wrapping is performed. -.PP +.B \%wins_wstr +inserts a wide-character string +.I wstr +before the character at the cursor in window +.I win +as if by calling \fBwins_wch\fP(3X) for each +.I \%wchar_t +in +.IR wstr "." +No line wrapping is performed. +Characters to the right of the cursor are shifted right; +those at the right edge of the window may be lost. +.B \%wins_wstr +stops inserting if it would have to wrap to the next line to write the +next +.I \%wchar_t +in +.IR wstr "." The cursor position does not change -(after moving to \fIy\fP, \fIx\fP, if specified). -.PP -The functions with \fIn\fP as the last argument -insert a leading substring of at most \fIn\fP \fBwchar_t\fP characters. -If \fIn\fP is less than zero, the entire string is inserted -(stopping on a L'\e0' character). -.PP -Special characters are handled as in \fBwadd_wch\fP(3X). +(after moving to +.RI ( y , +.IR x ")," +if specified). +.B \%wins_nwstr +does the same, +but inserts at most +.I n +wide characters, +or as many as possible +(up to the end of the line) +if +.I n +is negative. +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses does not specify any error conditions. -This implementation returns an error +In +.IR \%ncurses "," +they return +.B ERR +if .bP -if the \fIwin\fP parameter is null or +.I win +is +.IR NULL "," .bP -if the \fIwstr\fP parameter is null or +.I wstr +is +.IR NULL "," .bP -if the \fBwins_wch\fP function returns an error. +the first wide character in +.I wstr +is a non-spacing character, +or +.bP +an internal \fB\%wins_wch\fP(3X) call returns +.BR ERR "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -104,20 +140,71 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All but \fBwins_nwstr\fP may be macros. +All of these functions except +.B \%wins_nwstr +may be implemented as macros. +.SH EXTENSIONS +.BR \%ins_nwstr "," +.BR \%wins_nwstr "," +.BR \%mvins_nwstr "," +and +.BR \%mvwins_nwstr "'s" +acceptance of negative +.I n +values is an +.I \%ncurses +extension. +.SH PORTABILITY +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. .PP -If the first character in the string is a non-spacing character, these -functions will fail. -X/Open Curses does not define what will happen +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +X/Open Curses does not specify what happens if a non-spacing character follows a control character. -.SH PORTABILITY -These functions are described in X/Open Curses, Issue 4, -which adds \fI\%const\fP qualifiers to the arguments. .PP -X/Open states that the entire string is inserted if \fIn\fP is less than 1. +Issue\ 4 states that the entire string is inserted if +.I n +is less than 1. This is probably an error, -because it is inconsistent with other functions, -and differs from the X/Open implementation on Solaris. +.\" ...copied from SVID 4, which made the same error; see p. 513. +because it is inconsistent with other functions +such as +.IR \%waddwstr "," +and differs from the SVr4 +.I curses +and Solaris +.I xcurses +implementations. +Nevertheless, +Issue\ 7 retains the language. +.SH HISTORY +X/Open Curses Issue\ 4 (1995) initially specified these functions. +The System\ V Interface Definition Version\ 4 (1995), +specified functions named +.I \%winswstr +and +.I \%winsnwstr +(and the usual variants). +.\" SVID 4, vol 3., p. 513 +.\" The prototypes also identify the data type as `wchar`, not +.\" `wchar_t`, but this may be an error since the "DESCRIPTION" section +.\" consistently uses the latter. --GBR +These were later additions to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +They differ from X/Open's later +.I \%wins_wstr +and +.I \%wins_nwstr +in that their +.I wstr +parameters are not +.IR const "-qualified." .SH SEE ALSO \fB\%curs_insstr\fP(3X) describes comparable functions of the .I \%ncurses diff --git a/contrib/ncurses/man/curs_insch.3x b/contrib/ncurses/man/curs_insch.3x index baf2f6cc1bbb..5a760415071f 100644 --- a/contrib/ncurses/man/curs_insch.3x +++ b/contrib/ncurses/man/curs_insch.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_insch.3x,v 1.40 2024/04/20 19:03:47 tom Exp $ -.TH curs_insch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_insch.3x,v 1.56 2025/03/08 23:10:02 tom Exp $ +.TH curs_insch 3X 2025-03-08 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -39,6 +39,11 @@ .ie t .ds '' '' .el .ds '' "" .\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fB\%insch\fP, \fB\%winsch\fP, @@ -50,23 +55,25 @@ insert a \fIcurses\fP character in a window \fB#include <curses.h>\fP .PP \fBint insch(chtype \fIch\fP); -\fBint winsch(WINDOW *\fIwin\fP, chtype \fIch\fP); +\fBint winsch(WINDOW * \fIwin\fP, chtype \fIch\fP); \fBint mvinsch(int \fIy\fP, int \fIx\fP, chtype \fIch\fP); -\fBint mvwinsch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, chtype \fIch\fP); +\fBint mvwinsch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, chtype \fIch\fP); .fi .SH DESCRIPTION -These functions insert the +.B \%winsch +inserts the .I curses character .I ch -at the cursor in the specified window -.I win -(or -.BR \%stdscr ). +at the cursor position in the window +.IR win "." The character previously at the cursor and any to its right move one cell to the right; -the rightmost character on the line is discarded. -The cursor does not advance. +the formerly rightmost character on the line is discarded. +Unlike \fB\%addch\fP(3X), +.B \%winsch +does not advance the cursor. +\fB\%ncurses\fP(3X) describes the variants of this function. .SH "RETURN VALUE" These functions return .B OK @@ -74,10 +81,22 @@ on success and .B ERR on failure. .PP -Functions taking a +In +.IR \%ncurses , +they return +.B ERR +if +.bP +the +.I curses +screen has not been initialized, +or +.bP +(for functions taking a .I \%WINDOW -pointer argument fail if the pointer is -.BR NULL . +pointer argument) +.I win +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -85,26 +104,26 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -.BR \%insch , -.BR \%mvinsch , +.BR \%insch "," +.BR \%mvinsch "," and .B \%mvwinsch may be implemented as macros. .PP -A terminal's +.I curses +does not necessarily employ the terminal's .B \%insert_character .RB ( ich1 ) -capability -is not necessarily employed. +capability to achieve insertion. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -SVr4 -.I curses -describes a successful return value only as +SVr4 describes a successful return value only as \*(``an integer value other than -.BR ERR \*(''. +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 509 +.SH HISTORY +SVr2 (1984) introduced these functions. .SH "SEE ALSO" \fB\%curs_ins_wch\fP(3X) describes comparable functions in the wide-character diff --git a/contrib/ncurses/man/curs_insstr.3x b/contrib/ncurses/man/curs_insstr.3x index 888d4250091f..4c347227c98e 100644 --- a/contrib/ncurses/man/curs_insstr.3x +++ b/contrib/ncurses/man/curs_insstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_insstr.3x,v 1.51 2024/04/20 21:20:07 tom Exp $ -.TH curs_insstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_insstr.3x,v 1.72 2025/10/21 00:11:17 tom Exp $ +.TH curs_insstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,56 +46,87 @@ .. .SH NAME \fB\%insstr\fP, -\fB\%insnstr\fP, \fB\%winsstr\fP, -\fB\%winsnstr\fP, \fB\%mvinsstr\fP, \fB\%mvinsnstr\fP, +\fB\%insnstr\fP, +\fB\%winsnstr\fP, \fB\%mvwinsstr\fP, \fB\%mvwinsnstr\fP \- insert a string in a \fIcurses\fR window .SH SYNOPSIS .nf \fB#include <curses.h> -\fBint insstr(const char *\fIstr\fP); -\fBint insnstr(const char *\fIstr\fP, int \fIn\fP); -\fBint winsstr(WINDOW *\fIwin\fP, const char *\fIstr\fP); -\fBint winsnstr(WINDOW *\fIwin\fP, const char *\fIstr\fP, int \fIn\fP); .PP -\fBint mvinsstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP); -\fBint mvinsnstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP); -\fBint mvwinsstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP); -\fBint mvwinsnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP); +\fBint insstr(const char * \fIstr\fP); +\fBint winsstr(WINDOW * \fIwin\fP, const char * \fIstr\fP); +\fBint mvinsstr(int \fIy\fP, int \fIx\fP, const char * \fIstr\fP); +\fBint mvwinsstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const char * \fIstr\fP); +.PP +\fBint insnstr(const char * \fIstr\fP, int \fIn\fP); +\fBint winsnstr(WINDOW * \fIwin\fP, const char * \fIstr\fP, int \fIn\fP); +\fBint mvinsnstr(int \fIy\fP, int \fIx\fP, const char * \fIstr\fP, int \fIn\fP); +\fBint mvwinsnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, const char * \fIstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -These routines insert a character string -(as many characters as will fit on the line) -before the character under the cursor, -as if calling \fBwinsch\fP(3X). -All characters to the right of the cursor are shifted right, -with the possibility of the rightmost characters on the line being lost. -No wrapping is performed. -.PP +.B \%winsstr +inserts a string +.I str +before the character at the cursor in window +.I win +as if by calling \fBwinsch\fP(3X) for each +.I char +in +.IR str "." +No line wrapping is performed. +Characters to the right of the cursor are shifted right; +those at the right edge of the window may be lost. +.B \%winsstr +stops inserting if it would have to wrap to the next line to write the +next +.I \%char +in +.IR str "." The cursor position does not change -(after moving to \fIy\fP, \fIx\fP, if specified). -.PP -The functions with \fIn\fP as the last argument -insert a leading substring of at most \fIn\fP characters. -If \fIn\fP is less than zero, the entire string is inserted -(stopping on a NUL character). -.PP -Special characters are handled as in \fBwaddch\fP(3X). +(after moving to +.RI ( y , +.IR x ")," +if specified). +.B \%insnstr +does the same, +but inserts at most +.I n +characters, +or as many as possible +(up to the end of the line) +if +.I n +is negative. +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open Curses does not specify any error conditions. -This implementation returns an error +In +.IR \%ncurses "," +they return +.B ERR +if .bP -if the \fIwin\fP parameter is null or +.I win +is +.IR NULL "," .bP -if the \fIstr\fP parameter is null or +.I str +is +.IR NULL "," +or .bP -the \fBwinsch\fP(3X) function returns an error. +an internal \fBwinsch\fP(3X) call returns +.BR ERR "." .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -103,21 +134,75 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All but \fBwinsnstr\fP may be macros. +All of these functions except +.B \%winsnstr +may be implemented as macros. +.SH EXTENSIONS +.BR \%insnstr "," +.BR \%winsnstr "," +.BR \%mvinsnstr "," +and +.BR \%mvwinsnstr "'s" +acceptance of negative +.I n +values is an +.I \%ncurses +extension. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4, -which adds \fI\%const\fP qualifiers to the arguments. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. .PP -The Single Unix Specification, Version 2 states that -\fBinsnstr\fP and \fBwinsnstr\fP perform wrapping. -This is probably an error, since it makes this group of functions inconsistent. -Also, no implementation of curses documents this inconsistency. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -X/Open states that the entire string is inserted if \fIn\fP is less than 1. +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 510 +.PP +Issue\ 4 distinguished +.I \%insnstr +and +.I \%winsnstr +from the other functions documented above +by stating they \*(``do not perform wrapping\*(''. +This was probably an error, +since it makes this group of functions inconsistent. +No implementation of +.I curses +manifests this inconsistency, +and Issue\ 7 removed the claim. +.PP +Issue\ 4 states that the entire string is inserted if +.I n +is less than 1. This is probably an error, -because it is inconsistent with other functions, -and differs from the SVr4 and X/Open implementations on Solaris. +.\" ...copied from SVID 4, which made the same error; see p. 510. +because it is inconsistent with other functions +such as +.IR \%waddstr "," +and differs from the SVr4 +.I curses +and Solaris +.I xcurses +implementations. +Nevertheless, +Issue\ 7 retains the language. +.SH HISTORY +SVr3.1 (1987) +introduced +.I \%winsstr +and +.I \%winsnstr +and their variants. .SH SEE ALSO +\fB\%curs_ins_wstr\fP(3X) describes comparable functions of the +.I \%ncurses +library in its wide-character configuration +.RI \%( ncursesw ). +.PP \fB\%curses\fP(3X), \fB\%curs_inch\fP(3X), \fB\%curs_ins_wstr\fP(3X), diff --git a/contrib/ncurses/man/curs_instr.3x b/contrib/ncurses/man/curs_instr.3x index 5b6e4b760301..0facc12c34c1 100644 --- a/contrib/ncurses/man/curs_instr.3x +++ b/contrib/ncurses/man/curs_instr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_instr.3x,v 1.51 2024/04/20 21:24:19 tom Exp $ -.TH curs_instr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_instr.3x,v 1.82 2025/10/21 00:04:35 tom Exp $ +.TH curs_instr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,48 +46,83 @@ .. .SH NAME \fB\%instr\fP, -\fB\%innstr\fP, \fB\%winstr\fP, -\fB\%winnstr\fP, \fB\%mvinstr\fP, -\fB\%mvinnstr\fP, \fB\%mvwinstr\fP, +\fB\%innstr\fP, +\fB\%winnstr\fP, +\fB\%mvinnstr\fP, \fB\%mvwinnstr\fP \- get a string from a \fIcurses\fR window .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint instr(char *\fIstr\fP); -\fBint innstr(char *\fIstr\fP, int \fIn\fP); -\fBint winstr(WINDOW *\fIwin\fP, char *\fIstr\fP); -\fBint winnstr(WINDOW *\fIwin\fP, char *\fIstr\fP, int \fIn\fP); +\fBint instr(char * \fIstr\fP); +\fBint winstr(WINDOW * \fIwin\fP, char * \fIstr\fP); +\fBint mvinstr(int \fIy\fP, int \fIx\fP, char * \fIstr\fP); +\fBint mvwinstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, char * \fIstr\fP); .PP -\fBint mvinstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP); -\fBint mvinnstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP); -\fBint mvwinstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP); -\fBint mvwinnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP); +\fBint innstr(char * \fIstr\fP, int \fIn\fP); +\fBint winnstr(WINDOW * \fIwin\fP, char * \fIstr\fP, int \fIn\fP); +\fBint mvinnstr(int \fIy\fP, int \fIx\fP, char * \fIstr\fP, int \fIn\fP); +\fBint mvwinnstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, char * \fIstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -These routines return a string of characters in \fIstr\fP, -starting at the current cursor position in the named window. -Attributes are stripped from the characters. -.PP -The four functions with \fIn\fP as the last argument return -a leading substring at most \fIn\fP characters long -(exclusive of the trailing NUL). -Transfer stops at the end of the current line, or when \fIn\fP characters have -been stored at the location referenced by \fIstr\fP. +.B \%winstr +extracts a string from a +.I curses +window +.IR win "," +starting at the cursor and stopping at the end of the line, +and stores it in +.IR str "," +terminating it with a null character +and +omitting any attributes and color pair identifier +that +.I curses +associates with each character. +.B \%winnstr +does the same, +but copies at most +.I n +characters from +.IR win "." +A negative +.I n +implies no limit; +.B \%winnstr +then works like +.BR \%winstr "." +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All of the functions return \fBERR\fP upon failure, -or the number of characters actually read into the string. +These functions return the count of characters copied from +.I win +to +.I str +(not including the null terminator), +or +.B ERR +upon failure. .PP -X/Open Curses defines no error conditions. -This implementation returns an error +In +.IR \%ncurses "," +these functions fail if .bP -if the \fIwin\fP parameter is null or +the +.I curses +screen has not been initialized, .bP -if the \fIchstr\fP parameter is null. +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, +or +.bP +.I str +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -95,35 +130,88 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All routines except \fBwinnstr\fP may be macros. +All of these functions except +.B \%winnstr +may be implemented as macros. .PP Reading a line that overflows the array pointed to by -\fIstr\fP +.I str with -\fBinstr\fP, -\fBmvinstr\fP, -\fBmvwinstr\fP -or -\fBwinstr\fP -causes undefined results. -Therefore, the use of -\fBinnstr\fP, -\fBmvinnstr\fP, -\fBmvwinnstr\fP, or -\fBwinnstr\fP -is recommended. +and its variants causes undefined results. +Instead, +use the +.IR n -infixed +functions with a positive +.I n +argument no larger than the size of the buffer backing +.IR str "." +.SH EXTENSIONS +.BR \%innstr "," +.BR \%winnstr "," +.BR \%mvinnstr "," +and +.BR \%mvwinnstr "'s" +acceptance of negative +.I n +values is an +.I \%ncurses +extension. .SH PORTABILITY -SVr4 does not -document whether a length limit includes or excludes the trailing NUL. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +X/Open Curses Issues 4 and 7 both state that +.IR \%instr "," +.IR \%winstr "," +.IR \%mvinstr "," +and +.I \%mvwinstr +return +.I OK +rather than a character count. +.\" X/Open Issue 4, Version 2, p. 117, PDF p. 137 +.\" Issue 7 makes the same claim. +This is likely an erratum. +.bP +SVr3.1 and SVr4 implemented +.I \%winstr +as a wrapper around +.IR \%winnstr "," +returning the latter's return value. +X/Open Curses's specification thus may have been an editorial solecism +copied from System\ V's documentation +(see below) +by X/Open, +rather than an intentional change. +.bP +.I \%ncurses +retains compatibility with System\ V +.I curses +behavior. .PP -The \fI\%ncurses\fP library extends the X/Open Curses description by allowing a -negative value for \fIn\fP. -In this case, the functions return the string ending at the right margin. +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 503 +.PP +SVr4 does not +document whether +.I n +counts the null terminator that these functions write to +.IR str "." +.SH HISTORY +SVr3.1 (1987) +introduced these functions. .SH SEE ALSO -\fB\%curs_ins_wstr\fP(3X) describes comparable functions of the +\fB\%curs_inwstr\fP(3X) describes comparable functions of the .I \%ncurses library in its wide-character configuration -.RI ( \%ncursesw ). +.RI \%( ncursesw ). .PP \fB\%curses\fP(3X), \fB\%curs_inch\fP(3X), diff --git a/contrib/ncurses/man/curs_inwstr.3x b/contrib/ncurses/man/curs_inwstr.3x index eec361d77af9..d29f23ef6c4c 100644 --- a/contrib/ncurses/man/curs_inwstr.3x +++ b/contrib/ncurses/man/curs_inwstr.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2002-2012,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_inwstr.3x,v 1.41 2024/04/20 21:20:07 tom Exp $ -.TH curs_inwstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_inwstr.3x,v 1.66 2025/10/21 00:04:48 tom Exp $ +.TH curs_inwstr 3X 2025-10-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -45,59 +45,100 @@ .. .SH NAME \fB\%inwstr\fP, -\fB\%innwstr\fP, \fB\%winwstr\fP, -\fB\%winnwstr\fP, \fB\%mvinwstr\fP, -\fB\%mvinnwstr\fP, \fB\%mvwinwstr\fP, +\fB\%innwstr\fP, +\fB\%winnwstr\fP, +\fB\%mvinnwstr\fP, \fB\%mvwinnwstr\fP \- get a wide-character string from a \fIcurses\fR window .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint inwstr(wchar_t *\fIwstr\fP); -\fBint innwstr(wchar_t *\fIwstr\fP, int \fIn\fP); -\fBint winwstr(WINDOW *\fIwin\fP, wchar_t *\fIwstr\fP); -\fBint winnwstr(WINDOW *\fIwin\fP, wchar_t *\fIwstr\fP, int \fIn\fP); +\fBint inwstr(wchar_t * \fIwstr\fP); +\fBint winwstr(WINDOW * \fIwin\fP, wchar_t * \fIwstr\fP); +\fBint mvinwstr(int \fIy\fP, int \fIx\fP, wchar_t * \fIwstr\fP); +\fBint mvwinwstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, wchar_t * \fIwstr\fP); .PP -\fBint mvinwstr(int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP); -\fBint mvinnwstr(int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP, int \fIn\fP); -\fBint mvwinwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP); -\fBint mvwinnwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP, int \fIn\fP); +\fBint innwstr(wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint winnwstr(WINDOW * \fIwin\fP, wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint mvinnwstr(int \fIy\fP, int \fIx\fP, wchar_t * \fIwstr\fP, int \fIn\fP); +\fBint mvwinnwstr(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP, wchar_t * \fIwstr\fP, int \fIn\fP); .fi .SH DESCRIPTION -These routines return a string of \fBwchar_t\fP wide characters in \fIwstr\fP, -starting at the current cursor position in the named window. -.PP -The four functions with \fIn\fP as the last argument return -a leading substring at most \fIn\fP characters long -(exclusive of the trailing NUL). -Transfer stops at the end of the current line, or when \fIn\fP characters have -been stored at the location referenced by \fIwstr\fP. -.PP -If the size \fIn\fP is not large enough to store a complete complex character, -an error is generated. +.B \%winwstr +extracts a wide-character string from a +.I curses +window +.IR win "," +starting at the cursor and stopping at the end of the line, +and stores it in +.IR wstr "," +terminating it with a wide null character +and +omitting any attributes and color pair identifier +that +.I curses +associates with each character. +.B \%winnwstr +does the same, +but copies at most +.I n +wide characters from +.IR win "." +A negative +.I n +implies no limit; +.B \%winnwstr +then works like +.BR \%winwstr "." +\fB\%ncurses\fP(3X) describes the variants of these functions. .SH RETURN VALUE -All routines return -\fBERR\fP +On successful operation, +these functions return the count of wide characters copied from +.I win +to +.I wstr +(not including the wide null terminator), +or +.B ERR upon failure. -Upon -successful completion, the *\fBinwstr\fP -routines return -\fBOK\fP, and the *\fBinnwstr\fP -routines return the -number of characters read into the string. +.BR \%innwstr "," +.BR \%winnwstr "," +.BR \%mvinnwstr "," +and +.B \%mvwinnwstr +return +.B ERR +if +.I n +is insufficiently large to store a complete wide character string. +(Recall that a +.I curses +complex character can contain multiple wide characters, +some of which may be non-spacing.) .PP -X/Open defines no error conditions. -This implementation returns an error +In +.IR \%ncurses "," +these functions return +.B ERR +if .bP -if the \fIwin\fP parameter is null or +the +.I curses +screen has not been initialized, .bP -if the \fIwstr\fP parameter is null, or +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, +or .bP -if no characters could be read. +.I wstr +is a null pointer. .PP Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position @@ -105,37 +146,103 @@ fail if the position .IR x ) is outside the window boundaries. .SH NOTES -All routines except -\fBwinnwstr\fP -may be macros. -.PP -Each cell in the window holds a complex character -(a spacing character and zero or more non-spacing characters) -together with attributes and color. -These functions store only the wide characters, -ignoring attributes and color. -Use \fBin_wchstr\fP to return the complex characters from a window. +All of these functions except +.B \%winnwstr +may be implemented as macros. .PP Reading a line that overflows the array pointed to by -\fIwstr\fP -with -\fBinwstr\fP, -\fBmvinwstr\fP, -\fBmvwinwstr\fP -or -\fBwinwstr\fP -causes undefined results. -Therefore, the use of -\fBinnwstr\fP, -\fBmvinnwstr\fP, -\fBmvwinnwstr\fP, or -\fBwinnwstr\fP -is recommended. +.I wstr +and its variants causes undefined results. +Instead, +use the +.IR n -infixed +functions with a positive +.I n +argument no larger than the size of the buffer backing +.IR wstr "." +.SH EXTENSIONS +.BR \%innwstr "," +.BR \%winnwstr "," +.BR \%mvinnwstr "," +and +.BR \%mvwinnwstr "'s" +acceptance of negative +.I n +values is an +.I \%ncurses +extension. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +Notwithstanding the foregoing, +X/Open Curses Issues 4 and 7 both state that +.IR \%innwstr "," +.IR \%winnwstr "," +.IR \%mvinnwstr "," +and +.I \%mvwinnwstr +\*(``fail .\|.\|. [i]f the array is not large enough to contain any +complete characters\*(''. +Strictly interpreted, +this means that a caller of these functions cannot use their return +values to detect truncation of a wide-character string copied from more +than one character cell in +.IR win "." +.I \%ncurses +reports any truncation with +.IR ERR "." +.PP +X/Open Curses specifies +.IR \%inwstr "," +.IR \%winwstr "," +.IR \%mvinwstr "," +and +.I \%mvwinwstr +as returning +.I OK +rather than a (wide) character count, +unlike their non-wide counterparts +.IR \%instr "," +.IR \%winstr "," +.IR \%mvinstr "," +and +.IR \%mvwinstr "." +.I \%ncurses +regards this inconsistency as an error in the standard. +.SH HISTORY +The System\ V Interface Definition, +Version 4 (1995), +specified +.I \%winwstr +and +.I \%winnwstr +(and the usual variants). +.\" SVID 4, vol 3., p. 516 +These were later additions to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +Their synopses described each function as taking +an argument of type +.RI pointer-to- char +instead of +.RI pointer-to- wchar_t , +despite describing them as \*(``returning the string of +.I \%wchar_t +in +.IR str "\*(''." +Presumably this was an error in the System\ V Interface Definition. .SH SEE ALSO +\fB\%curs_instr\fP(3X) describes comparable functions of the +.I \%ncurses +library in its non-wide-character configuration. +.PP \fB\%curses\fP(3X), -\fB\%curs_inch\fP(3X), -\fB\%curs_inchstr\fP(3X), -\fB\%curs_instr\fP(3X), +\fB\%curs_in_wch\fP(3X), \fB\%curs_in_wchstr\fP(3X) diff --git a/contrib/ncurses/man/curs_kernel.3x b/contrib/ncurses/man/curs_kernel.3x index e85c132768a3..98c93aa64061 100644 --- a/contrib/ncurses/man/curs_kernel.3x +++ b/contrib/ncurses/man/curs_kernel.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_kernel.3x,v 1.61 2024/04/20 21:24:19 tom Exp $ -.TH curs_kernel 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_kernel.3x,v 1.89 2025/08/16 19:50:07 tom Exp $ +.TH curs_kernel 3X 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -53,9 +53,10 @@ \fB\%savetty\fP, \fB\%getsyx\fP, \fB\%setsyx\fP, -\fB\%ripoffline\fP, \fB\%curs_set\fP, -\fB\%napms\fP \- +\fB\%mvcur\fP, +\fB\%napms\fP, +\fB\%ripoffline\fP \- low-level \fIcurses\fR routines .SH SYNOPSIS .nf @@ -73,9 +74,10 @@ low-level \fIcurses\fR routines \fBvoid getsyx(int \fIy\fP, int \fIx\fP); \fBvoid setsyx(int \fIy\fP, int \fIx\fP); .PP -\fBint ripoffline(int \fIline\fP, int (*\fIinit\fP)(WINDOW *, int)); \fBint curs_set(int \fIvisibility\fP); +\fBint mvcur(int \fIoldrow\fP, int \fIoldcol\fP, int \fInewrow\fP, int \fInewcol\fP); \fBint napms(int \fIms\fP); +\fBint ripoffline(int \fIline\fP, int (*\fIinit\fP)(WINDOW *, int)); .fi .SH DESCRIPTION The following routines give low-level access @@ -104,123 +106,384 @@ state of the terminal modes. a buffer and \fBresetty\fP restores the state to what it was at the last call to \fBsavetty\fP. .SS getsyx -The \fBgetsyx\fP routine returns the current coordinates -of the \fIvirtual screen\fP cursor in \fIy\fP and \fIx\fP. -If \fBleaveok\fP is currently \fBTRUE\fP, then -\fB\-1\fP,\fB\-1\fP is returned. -If lines have been removed from the top of the -screen, using \fBripoffline\fP, \fIy\fP and \fIx\fP include these lines; -therefore, \fIy\fP and \fIx\fP should be used only as arguments for -\fBsetsyx\fP. +.B \%getsyx +stores the coordinates of virtual screen +.RB \%( newscr ) +cursor in +.I y +and +.IR x "." +If +.BR \%newscr 's +\fB\%leaveok\fP(3X) output option is +.BR TRUE "," +.B \%getsyx +stores +.B \-1 +in both +.I y +and +.IR x "." +If lines have been removed from the top of the screen using +.BR \%ripoffline "," +.I y +includes these lines; +therefore, +.I y +and +.I x +populated by +.B \%getsyx +should be used only as arguments for +.BR \%setsyx "." .PP -Few applications will use this feature, -most use \fBgetyx\fP instead. +Few applications use this feature; +most call \fB\%getyx\fP(3X) instead. .SS setsyx -The \fBsetsyx\fP routine sets -the \fIvirtual screen\fP cursor to \fIy\fP, \fIx\fP. -If \fIy\fP and \fIx\fP are both \fB\-1\fP, then -\fBleaveok\fP is set. -The two routines \fBgetsyx\fP and \fBsetsyx\fP -are designed to be used by a library routine, which manipulates -\fBcurses\fP windows but does not want to change the current position -of the program's cursor. -The library routine would call \fBgetsyx\fP -at the beginning, do its manipulation of its own windows, do a -\fBwnoutrefresh\fP on its windows, call \fBsetsyx\fP, and then call -\fBdoupdate\fP. +.B \%setsyx +sets the virtual screen +.RB \%( newscr ) +cursor location to +.RI ( y , +.IR x ")." +.B "\%setsyx(\-1, \-1)" +is equivalent to +.BR "\%leaveok(newscr, TRUE)" "." +.PP +.B \%getsyx +and +.B \%setsyx +are designed to be used by a function that manipulates +.I curses +windows but seeks to avoid changing the cursor position. +Such a function would first call +.BR \%getsyx "," +modify its windows' content, +call \fB\%wnoutrefresh\fP(3X) on them, +call +.BR \%setsyx "," +then call \fB\%doupdate\fP(3X). .PP -Few applications will use this feature, -most use \fBwmove\fP instead. +Few applications use this feature; +most call \fB\%wmove\fP(3X) instead. +.SS curs_set +.B \%curs_set +adjusts the cursor visibility to +\*(``invisible\*('', +\*(``visible\*('', +\*(``very visible\*('', +as its argument is +.BR 0 , +.BR 1 , +or +.BR 2 , +respectively. +It returns the previous +.I visibility +if the requested one is supported, +and +.B ERR +otherwise. +.SS mvcur +.B \%mvcur +provides low-level cursor motion. +It takes effect immediately, +rather than at the next refresh. +Unlike the other low-level output functions, +which either write to the standard output stream +or are passed a function pointer to perform output, +.B \%mvcur +uses a file descriptor derived from the output stream parameter of +\fB\%newterm\fP(3X). +.PP +One application of +.B \%mvcur +accompanies the temporary use of another program to write to the +terminal screen. +For example, +first call \fB\%refresh\fP(3X) to ensure that the screen and the +library's model of it are up to date; +then call +.BR \%reset_shell_mode ";" +write to the screen with the external application; +call +.BR \%reset_prog_mode ";" +and finally call +.BR \%mvcur( ".\|.\|." , +.RB .\|.\|. , +.B \-1, \-1) +to move the terminal cursor to where +.I \%curses +thinks it is, +since the library has no knowledge of how the external application +moved it. +.\" https://lists.gnu.org/archive/html/bug-ncurses/2016-10/msg00002.html +.SS napms +.B \%napms +sleeps for +.I ms +milliseconds. +If +.I ms +exceeds 30,000 +(thirty seconds), +.I \%ncurses +caps it at that value. .SS ripoffline .B \%ripoffline provides access to the same facility that \fB\%slk_init\fP(3X) uses to reduce the size of the screen. -\fB\%ripoffline\fP must be called before \fBinitscr\fP or -\fBnewterm\fP is called, to prepare these initial actions: +The application must call +.B \%ripoffline +before \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X) +so that the latter functions prepare a +.B \%stdscr +of the correct size. .bP -If \fIline\fP is positive, a line is removed from the top of \fBstdscr\fP. +If +.I line +is positive, +.B \%ripoffline +removes a line from the top of what will become +.BR \%stdscr "." .bP -if \fIline\fP is negative, a line is removed from the bottom. +If +.I line +is negative, +.B \%ripoffline +removes a line from the bottom of what will become +.BR \%stdscr "." .PP -When the resulting initialization is done inside \fBinitscr\fP, the -routine \fBinit\fP (supplied by the user) is called with two -arguments: +When +.B \%initscr +initializes +.IR curses "," +it calls the +.I init +function supplied to +.B \%ripoffline +by the application with two arguments: .bP -a window pointer to the one-line window that has been -allocated and +a pointer to the one-line +.I \%WINDOW +that it allocates, +and .bP an integer with the number of columns in the window. .PP -Inside this initialization routine, the integer variables \fBLINES\fP -and \fBCOLS\fP (defined in \fB<curses.h>\fP) are not guaranteed to be -accurate and \fBwrefresh\fP or \fBdoupdate\fP must not be called. -It is allowable to call \fBwnoutrefresh\fP during the initialization routine. +Inside this +.I init +function, +the values of the integer variables +.B LINES +and +.B COLS +(see \fB\%curs_variables\fP(3X)) +are not guaranteed to be reliable; +it must not call \fB\%wrefresh\fP(3X) or \fB\%doupdate\fP(3X). +A \fB\%wnoutrefresh\fP(3X) call is permissible. .PP -\fBripoffline\fP can be called up to five times before calling \fBinitscr\fP or -\fBnewterm\fP. -.SS curs_set -The \fBcurs_set\fP routine sets the cursor state to invisible, -normal, or very visible for \fBvisibility\fP equal to \fB0\fP, -\fB1\fP, or \fB2\fP respectively. -If the terminal supports the \fIvisibility\fP requested, -the previous \fIcursor\fP state is returned; -otherwise, \fBERR\fP is returned. -.SS napms -.B \%napms -sleeps for -.I ms -milliseconds. -If -.I ms -exceeds 30,000 -(thirty seconds), -it is capped at that value. +.B \%ripoffline +can be called up to five times before +.B \%initscr +or +.BR \%newterm "." .SH RETURN VALUE -Except for \fBcurs_set\fP, these routines always return \fBOK\fP. +Except for +.BR \%curs_set "," +these functions return +.B OK +on success and +.B ERR +on failure. .PP -\fBcurs_set\fP -returns the previous cursor state, or \fBERR\fP if the -requested \fIvisibility\fP is not supported. +.B \%curs_set +returns the previous cursor visibility, +and returns +.B ERR +if the terminal type does not support the requested +.IR visibility "." .PP -X/Open defines no error conditions. -In this implementation -.TP 5 -\fBdef_prog_mode\fP, \fBdef_shell_mode\fP, \fBreset_prog_mode\fP, \fBreset_shell_mode\fP -return an error -if the terminal was not initialized, or -if the I/O call to obtain the terminal settings fails. -.TP 5 -\fBripoffline\fP -returns an error if the maximum number of ripped-off lines -exceeds the maximum (5). -.SH NOTES -Note that \fBgetsyx\fP is a macro, so \fB&\fP is not necessary before -the variables \fIy\fP and \fIx\fP. +.B \%napms +always succeeds. +.PP +.B \%mvcur +fails if the position +.RI ( newrow , +.IR newcol ) +is outside the screen boundaries. .PP -Older SVr4 man pages warn that the return value -of \fBcurs_set\fP \*(``is currently incorrect\*(''. -This implementation gets it right, but it may be unwise to count -on the correctness of the return value anywhere else. +In +.IR \%ncurses "," +.bP +.BR \%def_prog_mode "," +.BR \%def_shell_mode "," +.BR \%reset_prog_mode "," +and +.B \%reset_shell_mode +return +.B ERR +if the terminal was not initialized, +or if the operating system's function for obtaining terminal settings +fails. +.bP +.B \%ripoffline +returns +.B ERR +if the accumulated quantity of ripped-off lines +would exceed the maximum (5). +.SH NOTES +.B \%getsyx +is a macro; +use of the +.B & +operator before its arguments is unnecessary. .PP -Both \fI\%ncurses\fP and SVr4 will call \fBcurs_set\fP in \fBendwin\fP -if \fBcurs_set\fP -has been called to make the cursor other than normal, i.e., either +The +.B \%endwin +function of both +.I \%ncurses +and SVr4 +.I curses +calls +.B \%curs_set +if the latter has previously been called to set the cursor visibility +to a value other than normal; +that is, +either invisible or very visible. -There is no way for \fI\%ncurses\fP to determine the initial cursor -state to restore that. +There is no way for +.I \%ncurses +to determine the initial cursor visibility to restore it. +.PP +.I \%ncurses +imposes a limit of 30 seconds on a delay requested of +.BR \%napms . +.PP +While the +.I init +function called by +.B \%ripoffline +is specified to return an +.IR int "," +.I \%ncurses +pays no attention to its return value. +.PP +If +.B \%ripoffline +cannot allocate memory for the required +.I \%WINDOW +structure backing the ripped-off line, +it stores a null pointer to the +.I \%WINDOW +pointer argument supplied by the +.I init +function the application specifies. +The application must check this argument for validity after calling +.B \%initscr +and prior to performing +.I curses +operations on that window. +.SH EXTENSIONS +In +.IR \%ncurses "," +.B \%mvcur +accepts +.B \-1 +for either or both old coordinates. +This value tells +.I \%ncurses +that the old location is unknown, +and that it must use only absolute motion, +as with the +.B \%cursor_address +.RB ( cup ) +capability, +rather than the least costly combination of absolute and relative +motion. .SH PORTABILITY -The \fIvirtual screen\fP functions \fBsetsyx\fP and \fBgetsyx\fP -are not described in X/Open Curses, Issue 4. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +The +.I "virtual screen" +functions +.I \%setsyx +and +.I \%getsyx +are not described in X/Open Curses Issue\ 4. +SVr4 documents each of them +as returning an +.IR int "." +This is misleading, +as they are macros with no documented semantics for returning values. +.PP All other functions are as described in X/Open Curses. +It specifies no error conditions for them, +except as described for +.I \%curs_set +in section \*(``RETURN VALUE\*('' above. +.PP +The System\ V Interface Definition, +Version 4 (1995), +specified all of these functions except +.I \%curs_set +as returning +.IR OK "." +.\" SVID 4, vol 3., p. 518 +.PP +Older SVr4 man pages warn that the return value of +.I \%curs_set +\*(``is currently incorrect\*(''. +This implementation gets it right, +but counting on its correctness anywhere else may be unwise. +.PP +X/Open Curses specifies +.I \%ripoffline +as returning +.I OK +with no possibility of failure +(\*(``[c]alls to +.I \%ripoffline +above this limit +[five lines] +have no effect but report success\*(''). +.PP +X/Open Curses notes: +.RS +.PP +After use of +.IR \%mvcur "()," +the model Curses maintains of the state of the terminal might not +match the actual state of the terminal. +An application should touch and refresh the window before +resuming conventional use of Curses. +.RE .PP -The SVr4 documentation describes \fBsetsyx\fP and \fBgetsyx\fP -as having return type int. -This is misleading, as they are macros with no documented semantics -for the return value. +Both +.I \%ncurses +and SVr4 +.I curses +implement +.I \%mvcur +using the +.I SCREEN +object allocated in either \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X). +X/Open Curses states that the old location must be given for +.I \%mvcur +to accommodate terminals that lack absolute cursor positioning. +.\" X/Open Curses Issue 7, p. 161 .PP -If interrupted, \fI\%ncurses\fP restarts \fBnapms\fP. -That, and the limitation to 30 seconds, -are different from other implementations. +If interrupted by a signal, +.I \%ncurses +restarts +.IR \%napms "." +That, +and the limitation to 30 seconds, +differ from other implementations. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_initscr\fP(3X), diff --git a/contrib/ncurses/man/curs_legacy.3x b/contrib/ncurses/man/curs_legacy.3x index 24be01b85269..ddc2c19b7994 100644 --- a/contrib/ncurses/man/curs_legacy.3x +++ b/contrib/ncurses/man/curs_legacy.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2007-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,19 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_legacy.3x,v 1.32 2024/03/16 15:35:01 tom Exp $ -.TH curs_legacy 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" -.ie \n(.g \{\ -.ds `` \(lq -.ds '' \(rq -.\} -.el \{\ -.ie t .ds `` `` -.el .ds `` "" -.ie t .ds '' '' -.el .ds '' "" -.\} -. +.\" $Id: curs_legacy.3x,v 1.36 2025/02/15 18:43:02 tom Exp $ +.TH curs_legacy 3X 2025-02-15 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -107,24 +96,6 @@ data as \fB\%getparyx\fP. Except as noted, these functions return an integer, or \fBERR\fP if the window parameter is null. -.SH NOTES -All of these interfaces are implemented as macros and functions. -The macros are suppressed -(and only the functions provided) -in an \*(``opaque\*('' -.I \%ncurses -build, -which defines the preprocessor symbol -.BR \%NCURSES_OPAQUE . -See section \*(``ALTERNATE CONFIGURATIONS\*('' in \fB\%ncurses\fP(3X). -.PP -The standard forms such as \fB\%getyx\fP -.I must -be implemented as macros, -and -(in this implementation) -are defined in terms of the functions described here, -to avoid reliance on internal details of the \fI\%WINDOW\fP structure. .SH PORTABILITY These functions were supported on Version 7, BSD or System V implementations. None of those implementations checked the window parameter. diff --git a/contrib/ncurses/man/curs_mouse.3x b/contrib/ncurses/man/curs_mouse.3x index 8e5c70181345..69dcbff75062 100644 --- a/contrib/ncurses/man/curs_mouse.3x +++ b/contrib/ncurses/man/curs_mouse.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_mouse.3x,v 1.98 2024/04/20 19:02:07 tom Exp $ -.TH curs_mouse 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_mouse.3x,v 1.131 2025/11/12 01:06:36 tom Exp $ +.TH curs_mouse 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -53,75 +53,127 @@ \fB\%wenclose\fP, \fB\%mouse_trafo\fP, \fB\%wmouse_trafo\fP, -\fB\%mouseinterval\fP \- -get mouse events in \fIcurses\fR +\fB\%mouseinterval\fP, +\fB\%mmask_t\fP, +\fB\%MEVENT\fP \- +get mouse events in \fIncurses\fR .SH SYNOPSIS .nf \fB#include <curses.h> .PP +\fI/* data types */ \fBtypedef unsigned long mmask_t; .PP \fBtypedef struct { -\fB short id; \fI/* ID to distinguish multiple devices */ -\fB int x, y, z; \fI/* event coordinates */ -\fB mmask_t bstate; \fI/* button state bits */ +\fB short id; \fI/* ID to distinguish multiple devices */ +\fB int x, y, z; \fI/* event coordinates */ +\fB mmask_t bstate; \fI/* button state bits */ \fB} MEVENT; .PP +\fI/* functions */ \fBbool has_mouse(void); .PP -\fBmmask_t mousemask(mmask_t \fInewmask\fP, mmask_t *\fIoldmask\fP); +\fBmmask_t mousemask(mmask_t \fInew-mask\fP, mmask_t * \fIold-mask\fP); .PP -\fBint getmouse(MEVENT *\fIevent\fP); -\fBint ungetmouse(MEVENT *\fIevent\fP); +\fBint getmouse(MEVENT * \fIevent\fP); +\fBint ungetmouse(MEVENT * \fIevent\fP); .PP -\fBbool wenclose(const WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); +\fBbool wenclose(const WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP); .PP -\fBbool mouse_trafo(int* \fIpY\fP, int* \fIpX\fP, bool \fIto_screen\fP); -\fBbool wmouse_trafo(const WINDOW* \fIwin\fP, -.ti +18n \" "bool wmouse_trafo(" -\fBint* \fIpY\fB, int* \fIpX\fB, bool \fIto_screen\fB); +\fBbool mouse_trafo(int * \fIpY\fP, int * \fIpX\fP, bool \fIto-screen\fP); +\fBbool wmouse_trafo(const WINDOW * \fIwin\fP, + \fBint * \fIpY\fB, int * \fIpX\fB, bool \fIto-screen\fB); .PP \fBint mouseinterval(int \fIerval\fB);\fR .fi .SH DESCRIPTION -These functions provide an interface to mouse events from -\fB\%ncurses\fP(3X). -Mouse events are represented by \fB\%KEY_MOUSE\fP -pseudo-key values in the \fB\%wgetch\fP(3X) input stream. -.SS has_mouse -The \fB\%has_mouse\fP function returns \fBTRUE\fP if the mouse driver -has been successfully initialized, -and \fBFALSE\fP otherwise. +.I \%ncurses +provides an interface to the mouse or other pointing device. +An application can register its interest in such events; +the library then exposes the availability of a mouse event via an +.IR "input character reading function" ":" +this is \fB\%wgetch\fP(3X) in the non-wide character +.I curses +API and \fB\%wget_wch\fP(3X) in the wide character API. +A queue distinct from that used for keyboard events +accumulates the details of mouse events. +The input character reading function +reports the +.B \%KEY_MOUSE +key code when a mouse event is available for collection. +A single mouse event queue serves all windows +associated with the screen. .PP -Mouse events are ignored when input is in cooked mode, and -cause an error beep when cooked mode is being simulated in a window by a -function such as \fB\%getstr\fP that expects a linefeed for input-loop -termination. +The +.I \%MEVENT +structure describes a mouse event. +Its +.I y +and +.I x +coordinates are screen-, +not window-, +relative. +The +.I \%bstate +member has exactly one bit set indicating the event type. +.PP +.I \%ncurses +ignores mouse events when input is in canonical (\*(``cooked\*('') mode, +and produces an error beep when they occur +while the library simulates canonical mode in a window, +as with \fB\%getstr\fP(3X) +(wide-character API users: \fB\%get_wstr\fP(3X)), +which expects a line feed to terminate its input loop. +.SS has_mouse +The terminal type or operating system interface +must support the encoding of mouse events. +.B \%has_mouse +returns +.B TRUE +if +.IR \%ncurses 's +mouse driver initialized successfully, +and +.B FALSE +otherwise. .SS mousemask -To make mouse events visible, use the \fB\%mousemask\fP function. -This sets the mouse events to be reported. -By default, no mouse events are reported. +Use +.B \%mousemask +to select the varieties of mouse event your application wishes to +receive. +By default, +.I \%ncurses +reports no mouse events. .bP -The function returns an updated copy of \fInewmask\fP -to indicate which of the specified mouse events can be reported. +The function returns an updated copy of +.I new-mask +indicating which event types of interest +are reportable by the terminal's mouse protocol. .IP -If the screen has not been initialized, -or if the terminal does not support mouse-events, -this function returns 0. +If the screen is not initialized, +or the terminal interface does not report mouse events, +.B \%mousemask +returns 0. .bP -If \fIoldmask\fP is non-\fBNULL\fP, -this function fills the indicated location with the previous value of the -current screen's mouse event mask. +If +.I old-mask +is not a null pointer, +.B \%mousemask +stores the previous value +of the screen's mouse event mask there. .PP -As a side effect, setting a zero mouse mask may turn off the mouse pointer; +As a side effect, +setting a zero mouse mask may turn off the mouse cursor; setting a nonzero mask may turn it on. Whether this happens is device-dependent. .SS "Mouse Events" -Here are the mouse event type masks which may be defined: +Several mouse event types may be selected; +construct a mask by logically \*(``or\*(''-ing their values. .PP .TS Lb Lb -Lb Lx. +Lb Lw(33n)x. Name Description = BUTTON1_PRESSED mouse button 1 down @@ -155,90 +207,165 @@ BUTTON5_DOUBLE_CLICKED mouse button 5 double clicked BUTTON5_TRIPLE_CLICKED mouse button 5 triple clicked _ BUTTON_SHIFT T{ -shift was down during button state change +a shift key was down during button state change T} BUTTON_CTRL T{ -control was down during button state change +a control key was down during button state change T} BUTTON_ALT T{ -alt was down during button state change +an alt key was down during button state change T} ALL_MOUSE_EVENTS report all button state changes REPORT_MOUSE_POSITION report mouse movement _ .TE .SS getmouse -Once a class of mouse events has been made visible in a window, -calling the \fB\%wgetch\fP function on that window may return -\fB\%KEY_MOUSE\fP as an indicator that a mouse event has been queued. -To read the event data and pop the event off the queue, call -\fB\%getmouse\fP. -This function will return \fBOK\fP if a mouse event -is actually visible in the given window, \fBERR\fP otherwise. -When \fB\%getmouse\fP returns \fBOK\fP, the data deposited as y and -x in the event structure coordinates will be screen-relative character-cell -coordinates. -The returned state mask will have exactly one bit set to -indicate the event type. -The corresponding data in the queue is marked invalid. -A subsequent call to \fB\%getmouse\fP will retrieve the next older -item from the queue. +When a window is configured to report a non-empty set of event types, +calling the input character reading function on that window may return +.B \%KEY_MOUSE +to indicate availability of an enqueued mouse event. +To read the event data and remove it from the queue, +call +.BR \%getmouse "," +which returns +.B OK +if a mouse event is visible in the given window +and +.B ERR +otherwise. +When +.B \%getmouse +returns +.BR OK "," +it deposits data describing the mouse event in the +.I event +pointer you supply. +A subsequent +.B \%getmouse +call retrieves the next older event from the queue. .SS ungetmouse -The \fB\%ungetmouse\fP function behaves analogously to \fB\%ungetch\fP. -It pushes -a \fB\%KEY_MOUSE\fP event onto the input queue, and associates with that event -the given state data and screen-relative character-cell coordinates. +.B \%ungetmouse +behaves analogously to \fB\%ungetch\fP(3X). +It pushes a +.B \%KEY_MOUSE +event onto the screen's input queue, +and +.I event +onto the mouse event queue. .SS wenclose -The \fB\%wenclose\fP function tests whether a given pair of screen-relative -character-cell coordinates is enclosed by a given window, returning \fBTRUE\fP -if it is and \fBFALSE\fP otherwise. -It is useful for determining what subset of -the screen windows enclose the location of a mouse event. +.B \%wenclose +returns +.B TRUE +if the pair of screen-relative coordinates +.RI ( y , +.IR x ")" +is enclosed by the given window +.IR win "," +and +.B FALSE +otherwise. +If +.I win +is a pad, +.B \%wenclose +uses its most recent screen coordinates as specified in +a \fB\%prefresh\fP(3X) or \fB\%pnoutrefresh\fP(3X) call. .PP -If the parameter is a pad, -\fB\%wenclose\fP uses the most recent screen coordinates used for -this pad in -\fB\%prefresh\fP(3X) or -\fB\%pnoutrefresh\fP(3X). +.B \%wenclose +is useful for determining what subset of the screen's windows +encloses the location of a mouse event; +it is otherwise independent of the +.I \%ncurses +mouse API. .SS wmouse_trafo -The \fB\%wmouse_trafo\fP function transforms a given pair of coordinates -from \fB\%stdscr\fP-relative coordinates -to coordinates relative to the given window or vice versa. -The resulting \fB\%stdscr\fP-relative coordinates are not always -identical to screen coordinates due to the mechanism to reserve -lines on top or bottom of the screen for other purposes -(see the \fB\%ripoffline\fP(3X) and \fB\%slk_init\fP(3X) calls, for example). -.bP -If the parameter \fIto_screen\fP is \fBTRUE\fP, the pointers -\fIpY, pX\fP must reference the coordinates of a location -inside the window \fIwin\fP. -They are converted to \fB\%stdscr\fP-relative coordinates and returned -through the pointers. -If the conversion was successful, the function returns \fBTRUE\fP. -.IP -If one of the parameters was \fBNULL\fP or the location is -not inside the window, \fBFALSE\fP is returned. -.bP -If \fIto_screen\fP is -\fBFALSE\fP, the pointers \fIpY, pX\fP must reference -\fB\%stdscr\fP-relative coordinates. -They are converted to window-relative coordinates if the -window \fIwin\fP encloses this point. -In this case the function returns \fBTRUE\fP. -.IP -If one of the parameters is \fBNULL\fP or the point is not inside the -window, \fBFALSE\fP is returned. +.B \%wmouse_trafo +transforms the given pair of coordinate pointers +.RI ( pY , +.IR pX ")" +from a +.IR win -relative +basis to a screen-relative one or +.IR "vice versa" "," +as +.I to-screen +is +.B TRUE +or +.BR FALSE "," +respectively. +.BR \%stdscr -relative +coordinates are not always identical to screen coordinates: +.I curses +supports reservation of screen lines at the top and/or bottom +for other purposes; +see \fB\%ripoffline\fP(3X) and \fB\%slk_init\fP(3X). .PP -The referenced coordinates -are only replaced by the converted coordinates if the transformation was -successful. +If +.I to-screen is +.B TRUE +and the pointers +.RI ( pY , +.IR pX ")" +reference coordinates inside +.IR win "," +.I \%ncurses +updates their values to +.BR \%stdscr -relative +coordinates and returns +.BR TRUE "." +If either +.I pY +or +.I pX +is a null pointer, +or +.RI ( pY , +.IR pX ")" +is not inside +.IR win "," +.B \%wmouse_trafo +returns +.BR FALSE "." +.PP +If +.I to-screen is +.B FALSE +and the pointers +.RI ( pY , +.IR pX ")" +reference coordinates inside +.BR stdscr "," +.I \%ncurses +updates their values to +.IR win -relative +coordinates and returns +.BR TRUE "." +If either +.I pY +or +.I pX +is a null pointer, +or +.RI ( pY , +.IR pX ")" +is not inside +.BR stdscr "," +.B \%wmouse_trafo +returns +.BR FALSE "." .SS mouse_trafo -The \fB\%mouse_trafo\fP function performs the same translation -as \fB\%wmouse_trafo\fP, -using \fB\%stdscr\fP for \fIwin\fP. +.B \%mouse_trafo +applies the +.B \%wmouse_trafo +translation to +.BR \%stdscr "." +If no screen lines are reserved by \fB\%ripoffline\fP(3X) or +\fB\%slk_init\fP(3X), +this is the identity transformation. .SS mouseinterval -The \fB\%mouseinterval\fP function sets the maximum time -(in thousands of a second) +.B \%mouseinterval +sets the maximum time +(in thousandths of a second) that can elapse between press and release events for them to be resolved as a .IR click . @@ -248,55 +375,76 @@ or, with motion, as a \*(``drag\*(''. .PP -Calling \fB\%mouseinterval(0)\fP disables click resolution. When .I \%ncurses detects a mouse event, it awaits further input activity up to this interval, and then checks for a subsequent mouse event which can be combined with the first event. -If the timeout expires without input activity -(which would happen with a zero interval), -then no click resolution will occur. +If the timeout expires without input activity, +then no click resolution occurs. +Calling +.B \%mouseinterval(0) +disables click resolution. .PP -This function returns the previous interval value. -Use \fB\%mouseinterval(\-1)\fP to obtain the interval without altering it. +.B \%mouseinterval +returns the previous interval value. +Use +.B \%mouseinterval(\-1) +to obtain the interval without altering it. .PP The mouse interval is set to one sixth of a second when the corresponding screen is initialized, e.g., in \fBinitscr\fP(3X) or \fBsetupterm\fP(3X). .SH RETURN VALUE -\fB\%has_mouse\fP, -\fB\%wenclose\fP, -\fB\%mouse_trafo\fP, +.BR \%has_mouse "," +.BR \%wenclose "," +.BR \%mouse_trafo "," and -\fB\%wmouse_trafo\fP -return \fBTRUE\fP or \fBFALSE\fP as noted above. +.B \%wmouse_trafo +return +.B TRUE +or +.B FALSE +as noted above. .PP -\fB\%getmouse\fP and \fB\%ungetmouse\fP -return \fBERR\fP upon failure and \fBOK\fP upon success. +.B \%getmouse +and +.B \%ungetmouse +return +.B ERR +upon failure and +.B OK +upon success. .PP -\fB\%getmouse\fP fails if: +.B \%getmouse +fails if: .bP no mouse driver was initialized, .bP the mask of reportable events is zero, .bP a mouse event was detected that does not match the mask, +or .bP -or if no more events remain in the queue. +no more events remain in the queue. .PP -\fB\%ungetmouse\fP returns an error if the event queue is full. +.B \%ungetmouse +returns +.B ERR +if the event queue is full. .PP -\fB\%mousemask\fP +.B \%mousemask returns the mask of reportable events. .PP -\fB\%mouseinterval\fP +.B \%mouseinterval returns the previous interval value, unless the terminal was not initialized. In that case, it returns the maximum interval value (166). .SH NOTES -The order of the \fB\%MEVENT\fP structure members is not guaranteed. +The order of the +.B \%MEVENT +structure members is not guaranteed. Additional fields may be added to the structure in the future. .PP Under @@ -315,41 +463,66 @@ OS/2 EMX .RE .PP If you are using an unsupported configuration, -mouse events will not be visible to -\fI\%ncurses\fP (and the \fB\%mousemask\fP function will always -return \fB0\fP). +mouse events are not visible to +.I \%ncurses +(and the +.B \%mousemask +function always returns +.BR 0 ")." .PP -If the +If the terminal type possesses the (nonstandard) .I \%term\%info -entry contains a \fBXM\fP string, -this is used in the +string capability +.BR XM "," +.IR \%ncurses "'s" .I \%xterm -mouse driver to control the -way the terminal is initialized for mouse operation. -The default, if \fBXM\fP is not found, +mouse driver uses it when initializing the terminal for mouse operation. +The default, +if +.B XM +is not found, corresponds to private mode 1000 of -.I \%xterm: +.IR \%xterm "." .PP .RS 3 +.EX \eE[?1000%?%p1%{1}%=%th%el%; +.EE .RE .PP -The mouse driver also recognizes a newer -.I \%xterm -private mode 1006, -e.g., +.I \%ncurses +also recognizes +.IR \%xterm 's +newer private mode 1006. .PP .RS 3 +.EX \eE[?1006;1000%?%p1%{1}%=%th%el%; +.EE .RE .PP -The \fIz\fP member in the event structure is not presently used. +The +.I id +member of the mouse event structure is not presently used; +no terminal type or operating system interface supports reporting events +from distinguishable pointing devices. +If you synthesize an +.IR \%MEVENT "," +use an +.I id +of 0. +.PP +The +.I z +member of the mouse event structure is not presently used. It is intended for use with touch screens (which may be pressure-sensitive) or with 3D-mice/trackballs/power gloves. .PP -The \fB\%ALL_MOUSE_EVENTS\fP class does not -include \fB\%REPORT_MOUSE_POSITION\fP. +The +.B \%ALL_MOUSE_EVENTS +class does not include +.BR \%REPORT_MOUSE_POSITION "." They are distinct. For example, in @@ -357,19 +530,23 @@ in wheel/scrolling mice send position reports as a sequence of presses of buttons 4 or 5 without matching button-releases. .SH EXTENSIONS -These functions were designed for -\fB\%ncurses\fP(3X), +These functions are +.I \%ncurses +extensions, and are not found in SVr4 .IR curses , 4.4BSD .IR curses , -or any other previous curses implementation. +or any other previous +.I curses +implementation. (SVr4 .I curses did have a .I \%getmouse function, -which took no argument and returned a different type.) +which took no argument and returned an +.IR "unsigned long" ".)" .SH PORTABILITY Applications employing the .I \%ncurses @@ -385,27 +562,27 @@ see section \*(``ALTERNATE CONFIGURATIONS\*('' of \fB\%ncurses\fP(3X). The following values may be specified. .RS 3 .TP 3 -1 +.B 1 has definitions for reserved events. The mask uses 28 bits. .TP 3 -2 +.B 2 adds definitions for button 5, removes the definitions for reserved events. The mask uses 29 bits. .RE -.PP -SVr4 -.I curses -had support for the mouse in a variant of \fI\%xterm\fP(1). +.SH HISTORY +SVr4 (1989) added mouse support to its variant of \fI\%xterm\fP(1). It is mentioned in a few places, with little supporting documentation. .bP Its \*(``libcurses\*('' manual page lists functions for this feature -prototyped in \fI\%curses.h\fP. +prototyped in +.IR \%curses.h "." .PP .RS 8 .EX +.nf extern int mouse_set(long int); extern int mouse_on(long int); extern int mouse_off(long int); @@ -413,16 +590,18 @@ extern int request_mouse_pos(void); extern int map_button(unsigned long); extern void wmouse_position(WINDOW *, int *, int *); extern unsigned long getmouse(void), getbmap(void); +.fi .EE .RE .bP Its \*(``terminfo\*('' manual page lists capabilities for the feature. -.\" These don't appear in in the SVID 4th edition, Volume 3, +.PP +.\" These don't appear in the SVID 4th edition, Volume 3, .\" terminfo(TI_ENV) man page. They can be found in, e.g., the "z/OS .\" V1R1.0 C Curses" book, Chapter 17, pp. 179-186 (PDF 213-220). .RS 8 .TS -Lb Lb Lb Lx. +Lb Lb Lb Lw(23n)x. buttons btns BT T{ Number of buttons on the mouse T} @@ -449,11 +628,17 @@ about the escape sequences sent to and received from the terminal. For instance, the SVr4 .I curses -library used the \fB\%get_mouse\fP capability to tell the terminal which +library used the +.B \%get_mouse +.RB ( getm ) +capability to tell the terminal which mouse button events it should send, passing the mouse-button bit mask to the terminal. Also, it could ask the terminal -where the mouse was using the \fB\%req_mouse_pos\fP capability. +where the mouse was using the +.B \%req_mouse_pos +.RB ( reqmp ) +capability. .IP Those features required a terminal program that had been modified to work with SVr4 @@ -481,37 +666,54 @@ Mouse events from .I \%xterm are .I not -ignored in cooked mode if they have been enabled by \fB\%mousemask\fP. +ignored in canonical (\*(``cooked\*('') mode +if they have been enabled by +.BR \%mousemask "." Instead, the .I \%xterm mouse report sequence appears in the string read. .PP -Mouse event reports from +An +.I \%ncurses +window must enable \fB\%keypad\fP(3X) to correctly receive mouse event +reports from .I \%xterm -are not detected correctly in a window with keypad application mode -disabled, -since they are interpreted as a variety of function key. +since they are encoded like function keys. Set the terminal's .I \%term\%info -capability \fB\%kmous\fP to \*(``\eE[M\*('' +capability +.B \%key_mouse +.RB ( \%kmous ) +to \*(``\eE[M\*('' (the beginning of the response from .I \%xterm for mouse clicks). -Other values of \fB\%kmous\fP are permitted under the same assumption, +Other values of +.B \%key_mouse +are permitted under the same assumption \(em that is, -the report begins with that sequence. +a mouse report begins with the value of the +.B \%key_mouse +.RB ( \%kmous ) +string capability. .PP Because there are no standard response sequences that serve to identify terminals supporting the .I \%xterm mouse protocol, .I \%ncurses -assumes that if \fB\%kmous\fP is defined in the terminal description, +assumes that if +.B \%key_mouse +.RB ( \%kmous ) +is defined in the terminal description, or if the terminal type's primary name or aliases contain the string \%\*(``xterm\*('', then the terminal may send mouse events. -The \fB\%kmous\fP capability is checked first, +.I \%ncurses +checks the +.B \%kmous +cap-code first, allowing use of newer .I \%xterm mouse protocols, diff --git a/contrib/ncurses/man/curs_move.3x b/contrib/ncurses/man/curs_move.3x index c3b68e813d1c..97e9384f6ce3 100644 --- a/contrib/ncurses/man/curs_move.3x +++ b/contrib/ncurses/man/curs_move.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,23 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_move.3x,v 1.40 2024/04/27 17:56:05 tom Exp $ -.TH curs_move 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_move.3x,v 1.63 2025/04/05 22:08:55 tom Exp $ +.TH curs_move 3X 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fB\%move\fP, \fB\%wmove\fP \- @@ -38,7 +53,7 @@ move cursor in a \fIcurses\fR window \fB#include <curses.h> .PP \fBint move(int \fIy\fP, int \fIx\fP); -\fBint wmove(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP); +\fBint wmove(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP); .fi .SH DESCRIPTION .B \%wmove @@ -57,32 +72,47 @@ The position is relative to the upper left-hand corner of the window, which has coordinates (0,\ 0). -\fB\%ncurses\fP(3X) describes the -.B \%move -variant of this function. +.B move +similarly moves the cursor in the +.B \%stdscr +window. .SH RETURN VALUE These functions return .B OK on success and .B ERR on failure. -.PP -They fail if the position +In +.IR \%ncurses , +these functions fail if +.bP +the +.I curses +screen has not been initialized, +.bP +(for +.BR \%wmove ")" +.I win +is a null pointer, +or +.bP +the position .RI ( y , .IR x ) is outside the window boundaries. -.PP -.B \%wmove -fails if its -.I \%WINDOW -pointer argument is -.BR NULL . .SH NOTES .B \%move may be implemented as a macro. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 503 +.SH HISTORY +4BSD (1980) +introduced these functions. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_refresh\fP(3X) diff --git a/contrib/ncurses/man/curs_opaque.3x b/contrib/ncurses/man/curs_opaque.3x index fa623eea1e96..7269598fa2e3 100644 --- a/contrib/ncurses/man/curs_opaque.3x +++ b/contrib/ncurses/man/curs_opaque.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2020-2023,2024 Thomas E. Dickey * +.\" Copyright 2020-2024,2025 Thomas E. Dickey * .\" Copyright 2007-2014,2015 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_opaque.3x,v 1.43 2024/03/16 15:35:01 tom Exp $ -.TH curs_opaque 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_opaque.3x,v 1.50 2025/02/15 19:36:24 tom Exp $ +.TH curs_opaque 3X 2025-02-15 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -136,10 +136,12 @@ returns the delay timeout set by \fB\%wtimeout\fP(3X). .TP \fBwgetparent\fP returns the parent \fI\%WINDOW\fP pointer for subwindows, -or \fBNULL\fP for windows having no parent. +or +.I NULL +for windows having no parent. .TP \fBwgetscrreg\fP -stores the the top and bottom rows for the scrolling margin set by +stores the top and bottom rows for the scrolling margin set by \fB\%wsetscrreg\fP(3X) in the corresponding arguments, returning \fBERR\fP upon failure and \fBOK\fP upon successful completion. @@ -148,11 +150,24 @@ These functions return \fBTRUE\fP or \fBFALSE\fP except as noted. .SH NOTES \fI\%ncurses\fP provides both a C function and a preprocessor macro for each function documented in this page. +.SH EXTENSIONS +These functions originated with +.IR \%ncurses "." .SH PORTABILITY -These routines are specific to \fI\%ncurses\fP. -They were not supported on Version 7, BSD or System V implementations. -It is recommended that any code depending on \fI\%ncurses\fP extensions -be conditioned using \fB\%NCURSES_VERSION\fP. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +NetBSD +.I curses +since 10.1 (2024) supports +.IR \%wgetscr_reg "." +It also implements +.IR \%getscr_reg "," +operating on +.IR \%stdscr "." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_inopts\fP(3X), diff --git a/contrib/ncurses/man/curs_outopts.3x b/contrib/ncurses/man/curs_outopts.3x index df263f2c1a81..cdf814ef9422 100644 --- a/contrib/ncurses/man/curs_outopts.3x +++ b/contrib/ncurses/man/curs_outopts.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,164 +27,348 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_outopts.3x,v 1.64 2024/04/20 21:24:19 tom Exp $ -.TH curs_outopts 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_outopts.3x,v 1.106 2025/11/12 00:52:57 tom Exp $ +.TH curs_outopts 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} +. .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. .SH NAME \fB\%clearok\fP, -\fB\%idlok\fP, \fB\%idcok\fP, +\fB\%idlok\fP, \fB\%immedok\fP, \fB\%leaveok\fP, +\fB\%scrollok\fP, \fB\%setscrreg\fP, -\fB\%wsetscrreg\fP, -\fB\%scrollok\fP \- +\fB\%wsetscrreg\fP \- set \fIcurses\fR output options .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint clearok(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBint idlok(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBvoid idcok(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBvoid immedok(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBint leaveok(WINDOW *\fIwin\fP, bool \fIbf\fP); -\fBint scrollok(WINDOW *\fIwin\fP, bool \fIbf\fP); +\fBint clearok(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBvoid idcok(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBint idlok(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBvoid immedok(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBint leaveok(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBint scrollok(WINDOW * \fIwin\fP, bool \fIbf\fP); .PP \fBint setscrreg(int \fItop\fP, int \fIbot\fP); -\fBint wsetscrreg(WINDOW *\fIwin\fP, int \fItop\fP, int \fIbot\fP); +\fBint wsetscrreg(WINDOW * \fIwin\fP, int \fItop\fP, int \fIbot\fP); .fi .SH DESCRIPTION -These routines set options that change the style of output within -\fBcurses\fP. -All options are initially \fBFALSE\fP, unless otherwise stated. -It is not necessary to turn these options off before calling \fBendwin\fP(3X). +These functions configure properties of +.I curses +windows that affect their manner of output. +Boolean-valued properties are initially +.B FALSE +except where noted. +\fBendwin\fP(3X) resets any terminal modes corresponding to these +properties; +an application need not restore their initial values. .SS clearok -If \fBclearok\fP is called with \fBTRUE\fP as argument, the next -call to \fBwrefresh\fP with this window will clear the screen completely and -redraw the entire screen from scratch. -This is useful when the contents of the -screen are uncertain, or in some cases for a more pleasing visual effect. +Setting +.IR win 's +.B \%clearok +property to +.B TRUE +causes the next +.B \%wrefresh +call on it to clear the terminal screen and redraw it entirely. +This property is useful to restore the contents of the screen +(perhaps because another process has written to the terminal), +or in some cases to achieve a more pleasing visual effect. If -the \fIwin\fP argument to \fBclearok\fP is the global variable \fBcurscr\fP, -the next call to \fBwrefresh\fP with any window causes the screen to be cleared -and repainted from scratch. -.SS idlok -If \fBidlok\fP is called with \fBTRUE\fP as second argument, \fBcurses\fP -considers using the hardware insert/delete line feature of terminals so -equipped. -Calling \fBidlok\fP with \fBFALSE\fP as second argument disables use -of line insertion and deletion. -This option should be enabled only if the -application needs insert/delete line, for example, for a screen editor. -It is -disabled by default because insert/delete line tends to be visually annoying -when used in applications where it is not really needed. -If insert/delete line -cannot be used, \fBcurses\fP redraws the changed portions of all lines. +.I \%win +is +.B \%curscr +(see \fBcurs_variables\fP(3X)), +the next +.B \%wrefresh +call on +.I any +window causes the terminal screen to clear and redraw as above. +.B \%wrefresh +resets this property to +.BR FALSE "." .SS idcok -If \fBidcok\fP is called with \fBFALSE\fP as second argument, \fBcurses\fP -no longer considers using the hardware insert/delete character feature of -terminals so equipped. -Use of character insert/delete is enabled by default. -Calling \fBidcok\fP with \fBTRUE\fP as second argument re-enables use -of character insertion and deletion. +(This property defaults +.BR TRUE ".)" +Setting +.IR win 's +.B \%idcok +property to +.B FALSE +prevents +.I curses +from using the insert/delete character capabilities of terminal types +possessing them according to the +.I \%term\%info +database. +.SS idlok +Setting +.IR win 's +.B \%idlok +property to +.B TRUE +causes +.I curses +to consider +using the insert/delete line capabilities of terminal types +possessing them according to the +.I \%term\%info +database. +Enable this option +if the application explicitly requires these operations, +as a full-screen text editor might; +otherwise the results may be visually annoying to the user. +.\" TODO: Substantiate that claim. .SS immedok -If \fBimmedok\fP is called with \fBTRUE\fP as second argument, -any change in the window image, -such as the ones caused by \fBwaddch, wclrtobot, wscrl\fP, -etc., automatically causes a call to \fBwrefresh\fP. -However, it may degrade performance considerably, -due to repeated calls to \fBwrefresh\fP. -Calling \fBimmedok\fP with \fBFALSE\fP as second argument +If +.B \%immedok +is called with +.B TRUE +as second argument, +changes to the window image, +such as those caused by +.BR \%waddch "," +.BR \%wclrtobot "," +or +.BR \%wscrl "," +automatically cause a call to +.BR wrefresh "." +Setting a window's +.B \%immedok +property may degrade performance considerably +if writes are frequent. +Calling +.B \%immedok +with +.B FALSE +as second argument restores the default behavior, -i.e., deferring screen updates until a refresh is needed. +deferring screen updates until a refresh is needed +or explicitly directed by the application. .SS leaveok -Normally, the hardware cursor is left at the location of the window cursor -being refreshed. -The \fBleaveok\fP option allows the cursor to be left +Normally, +.I curses +leaves the hardware cursor at the library's cursor location +of the window being refreshed. +The +.B \%leaveok +option allows the cursor to be left wherever the update happens to leave it. -It is useful for applications where -the cursor is not used, since it reduces the need for cursor motions. +It is useful for applications that do not employ a visible cursor, +since it reduces the need for cursor motions. .SS scrollok -The \fBscrollok\fP option controls what happens when the cursor of a window is -moved off the edge of the window or scrolling region, either as a result of a -newline action on the bottom line, or typing the last character of the last -line. -If disabled, (\fIbf\fP is \fBFALSE\fP), the cursor is left on the bottom -line. -If enabled, (\fIbf\fP is \fBTRUE\fP), the window is scrolled up one line -(Note that to get the physical scrolling effect on the terminal, it is -also necessary to call \fBidlok\fP). -.SS "setscrreg, wsetscrreg" -The \fBsetscrreg\fP and \fBwsetscrreg\fP routines allow the application -programmer to set a software scrolling region in a window. -The \fItop\fP and -\fIbot\fP parameters +The +.B \%scrollok +option controls what happens when a window's cursor +moves off the edge of the window or scrolling region, +as a result of either +(1) writing a newline anywhere on its bottom line, +or +(2) writing a character that advances the cursor to the last position +on its bottom line. +If disabled +.RI ( bf +is +.BR FALSE ")," +.I curses +leaves the cursor on the bottom line of the window. +If enabled +.RI ( bf +is +.BR TRUE ")," +.I curses +scrolls the window up one line. +(To get the physical scrolling effect on the terminal, +the application must also enable +.BR idlok ")." +.SS "setscrreg, wsetscrreg" +The +.B \%wsetscrreg +and +.B \%setscrreg +functions allow the application +to set a software scrolling region in the specified window or +.BR \%stdscr "," +respectively. +The +.I top +and +.I bot +parameters are the line numbers of the top and bottom margin of the scrolling region. -(Line 0 is the top line of the window.) If this option and -\fBscrollok\fP are enabled, an attempt to move off the bottom margin line -causes all lines in the scrolling region to scroll one line in the direction -of the first line. +If this option and +.B scrollok +are enabled, +an attempt to move off the bottom margin line +causes all lines in the scrolling region +to scroll one line in the direction of the first line. Only the text of the window is scrolled. -(Note that this -has nothing to do with the use of a physical scrolling region capability in the -terminal, like that in the VT100. -If \fBidlok\fP is enabled and the terminal -has either a scrolling region or insert/delete line capability, they will -probably be used by the output routines.) +(This process has nothing to do +with the scrolling region capability of the terminal, +as found in the DEC VT100.) +If +.B \%idlok +is enabled and the terminal +has either a scrolling region or insert/delete line capability, +they will probably be used by the output routines. .SH RETURN VALUE -The functions \fBsetscrreg\fP and \fBwsetscrreg\fP return \fBOK\fP upon success -and \fBERR\fP upon failure. +The functions +.B \%setscrreg +and +.B \%wsetscrreg +return +.B OK +upon success +and +.B ERR +upon failure. All other routines that return an integer always -return \fBOK\fP. -.PP -X/Open Curses does not specify any error conditions. +return +.BR OK "." .PP -In this implementation, +In +.IR \%ncurses "," +these functions fail if .bP -those functions that have a window pointer -will return an error if the window pointer is null +the +.I curses +screen has not been initialized, .bP -\fBwsetscrreg\fP -returns an error if the scrolling region limits extend outside the -window boundaries. +(for functions taking a +.I \%WINDOW +pointer argument) +.I win +is a null pointer, +or +.bP +(for +.B \%setscrreg +and +.BR \%wsetscrreg ")" +the function is passed arguments describing a scrolling region +with limits that extend outside the window boundaries. .SH NOTES -Note that -\fBclearok\fP, -\fBleaveok\fP, -\fBscrollok\fP, -\fBidcok\fP, and -\fBsetscrreg\fP may be macros. +.BR \%clearok "," +.BR \%leaveok "," +.BR \%scrollok "," +.BR \%idcok "," +and +.B \%setscrreg +may be implemented as macros. +.PP +Unlike the other functions described by this page, +.B \%setscrreg +does not accept a +.RI pointer-to- WINDOW +parameter, +but operates on +.BR stdscr "." +Use +.B \%wsetscrreg +to configure the scrolling region of a selected window. .PP -The \fBimmedok\fP routine is useful for windows that are used as terminal -emulators. +Historically, +applications used +.B \%idcok(FALSE) +to accommodate the \*(``magic cookie\*('' feature +of some terminal types; +see subsection \*(``Highlighting, Underlining, and Visible Bells\*('' +of \fB\%terminfo\fP(5). +When updating a line, +the presence of character cells with magic cookies in them +made the +.I curses +library's computations of characters to be rewritten inaccurate. +A better solution is to indicate the +.B \%magic_cookie_glitch +.RB ( xmc ) +capability in the terminal's type description. +.PP +.B \%immedok +is useful for windows that are used as terminal emulators. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -Some historic curses implementations had, as an undocumented feature, the -ability to do the equivalent of \fBclearok(..., 1)\fP by saying -\fBtouchwin(stdscr)\fP or \fBclear(stdscr)\fP. -This will not work under \fI\%ncurses\fP. +Some historic +.I curses +implementations, +as an undocumented feature, +did the equivalent of +.RB \*(`` \%clearok( .\|.\|. ", 1)" \*('' +when +.B \%touchwin(stdstr) +or +.B \%clear(stdstr) +were used. +This trick does not work with +.IR \%ncurses . .PP -Earlier System V curses implementations specified that with \fBscrollok\fP -enabled, any window modification triggering a scroll also forced a physical -refresh. -X/Open Curses does not require this, and \fI\%ncurses\fP avoids doing -it to perform better vertical-motion optimization at \fBwrefresh\fP -time. +Early System\ V +.I curses +implementations specified that with +.I \%scrollok +enabled, +any window modification triggering a scroll +also forced a physical refresh. +X/Open Curses does not require this, +and +.I \%ncurses +avoids doing so to better optimize vertical motions upon a +.IR \%wrefresh "." .PP X/Open Curses does not mention that the cursor should be -made invisible as a side-effect of \fBleaveok\fP. -SVr4 curses documentation does this, but the code does not. -Use \fBcurs_set\fP to make the cursor invisible. +made invisible as a side effect of +.IR \%leaveok "." +SVr4 +.I curses +documentation notes this behavior, +but the code neglects to implement it. +Use \fB\%curs_set\fP(3X) to make the cursor invisible. .SH HISTORY +4BSD (1980) +introduced +.IR \%clearok "," +.IR \%leaveok "," +and +.IR \%scrollok "." +.PP +SVr2 (1984) +supplied +.IR \%idlok "," +.IR \%setscrreg "," +and +.IR \%wsetscrreg "." +.PP +SVr3.1 (1987) +implemented +.I \%idcok +and +.IR \%immedok "." +.PP .I \%ncurses -formerly treated \fBnl\fP(3X) and \fBnonl\fP(3X) as both input +formerly treated +.I nl +and +.I nonl +as both input .I and output options, but no longer; diff --git a/contrib/ncurses/man/curs_overlay.3x b/contrib/ncurses/man/curs_overlay.3x index 2d4eb729bc22..ae40f80b40e7 100644 --- a/contrib/ncurses/man/curs_overlay.3x +++ b/contrib/ncurses/man/curs_overlay.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2020-2023,2024 Thomas E. Dickey * +.\" Copyright 2020-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2013,2015 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_overlay.3x,v 1.43 2024/04/20 21:20:07 tom Exp $ -.TH curs_overlay 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_overlay.3x,v 1.55 2025/01/19 00:51:10 tom Exp $ +.TH curs_overlay 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -40,6 +40,10 @@ .el .ds '' "" .\} . +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fB\%overlay\fP, \fB\%overwrite\fP, @@ -74,24 +78,41 @@ If the argument \fIoverlay\fP is \fBtrue\fP, then copying is non-destructive, as in \fBoverlay\fP. .SH RETURN VALUE -These routines return the integer \fBERR\fP upon failure and an \fBOK\fP -(SVr4 specifies only -\*(``an integer value other than \fBERR\fP\*('') -upon successful completion. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open defines no error conditions. -In this implementation, -\fBcopywin\fP, -\fBoverlay\fP and \fBoverwrite\fP return an error -if either of the window pointers are null, or -if some part of the window would be placed off-screen. +In +.IR \%ncurses , +they return +.B ERR +if +.bP +either of the window pointers are null, +or +.bP +any part of the window would be placed off-screen. .SH NOTES -Note that \fBoverlay\fP and \fBoverwrite\fP may be macros. +.B \%overlay +and +.B \%overwrite +may be implemented as macros. .SH PORTABILITY -These functions are described in X/Open Curses, Issue 4, -which adds \fI\%const\fP qualifiers to the arguments. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +It adds +.I \%const +qualifiers to the arguments. +. \" TODO: migrate to HISTORY section It further specifies their behavior in the presence of characters with multibyte renditions (not yet supported in this implementation). +.\" XXX: stale? ncurses is fine with multibyte characters now, no? +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 522 .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_pad\fP(3X), diff --git a/contrib/ncurses/man/curs_pad.3x b/contrib/ncurses/man/curs_pad.3x index 21cc405c731b..911b7276c9ea 100644 --- a/contrib/ncurses/man/curs_pad.3x +++ b/contrib/ncurses/man/curs_pad.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_pad.3x,v 1.61 2024/04/27 17:55:43 tom Exp $ -.TH curs_pad 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_pad.3x,v 1.81 2025/08/23 22:50:00 tom Exp $ +.TH curs_pad 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -87,7 +87,8 @@ or .B \%pnoutrefresh instead. .SS newpad -\fB\%newpad\fP creates and returns a pointer to a new pad data structure +.B \%newpad +creates and returns a pointer to a new pad data structure with the given number of lines, .IR nlines , and columns, @@ -114,7 +115,7 @@ it is often necessary to call \fB\%touchwin\fP(3X) or before calling .BR \%prefresh . .SS "prefresh, pnoutrefresh" -.B \%prefresh\fP +.B \%prefresh and .B \%pnoutrefresh are analogous to \fB\%wrefresh\fP(3X) and \fB\%wnoutrefresh\fP(3X) @@ -156,7 +157,7 @@ The location of the character written to the pad is used to populate the arguments to .BR \%prefresh . .SS pecho_wchar -.B \%pecho_wchar\fP +.B \%pecho_wchar is functionally equivalent to calling \fB\%wadd_wch\fP(3X) followed by .BR \%prefresh . It suggests to the @@ -168,111 +169,206 @@ The location of the character written to the pad is used to populate the arguments to .BR \%prefresh . .SH RETURN VALUE -Functions that return an integer return \fBERR\fP upon failure and -\fBOK\fP -(SVr4 specifies only -\*(``an integer value other than \fBERR\fP\*('') +Functions that return an integer return +.B ERR +upon failure and +.B OK upon successful completion. .PP -Functions that return pointers return \fBNULL\fP on error, -and set \fB\%errno\fP to \fB\%ENOMEM\fP. +Functions that return pointers return a null pointer on failure, +and set +.I \%errno +to +.BR \%ENOMEM "." .PP -X/Open Curses does not specify any error conditions. In this implementation .RS 3 .TP 5 -\fB\%prefresh\fP and \fB\%pnoutrefresh\fP -return an error +.BR prefresh\ and\ pnoutrefresh +return +.B ERR if the window pointer is null, or if the window is not really a pad or if the area to refresh extends off-screen or if the minimum coordinates are greater than the maximum. .TP 5 -\fBpechochar\fP -returns an error -if the window is not really a pad, and the associated call -to \fB\%wechochar\fP returns an error. +.B pechochar +returns +.B ERR +if the window is not really a pad, +and the associated call to +.B \%wechochar +returns +.BR ERR "." .TP 5 -\fBpecho_wchar\fP -returns an error -if the window is not really a pad, and the associated call -to \fB\%wecho_wchar\fP returns an error. +.B pecho_wchar +returns +.B ERR +if the window is not really a pad, +and the associated call to +.B \%wecho_wchar +returns +.BR ERR "." .RE .SH NOTES -\fB\%pechochar\fP may be a macro. -.SH PORTABILITY -BSD \fIcurses\fP has no \fIpad\fP feature. -.PP -SVr2 \fIcurses\fP (1986) provided the \fB\%newpad\fP and related functions, -documenting them in a single line each. -SVr3 (1987) provided more extensive documentation. +.B \%pechochar +may be implemented as a macro. .PP -The documentation does not explain the term \fIpad\fP. -However, the Apollo \fIAegis\fP workstation operating system -supported a graphical \fIpad\fP feature: +.I curses +documentation is traditionally averse to motivating the term +\*(``pad\*(''. +The Apollo Aegis workstation operating system +.RI ( circa +1981) +supported a graphical pad feature. .bP These graphical pads could be much larger than the computer's display. .bP -The read-only output from a command could be scrolled back to inspect, +The read-only output from a command could be scrolled back to inspect and select text from the pad. .PP The two uses may be related. +.SH PORTABILITY +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 524 .PP -X/Open Curses, Issue 4 describes these functions, -without significant change from the SVr3 documentation. -It describes no error conditions. -The behavior of \fB\%subpad\fP if the parent window is not -a pad is undocumented, -and is not checked by the vendor Unix implementations: +The behavior of +.I \%subpad +if the parent window is not a pad is undocumented, +and is not checked by the vendor Unix implementations. .bP -SVr4 \fIcurses\fP sets a flag in the \fI\%WINDOW\fP structure in -\fB\%newpad\fP which tells if the window is a \fIpad\fP. +SVr4 +.IR curses 's +.I \%newpad +sets a flag in the +.I \%WINDOW +structure indicating that the window is a pad. .IP -However, it uses this information only in -\fB\%waddch\fP (to decide if it should call \fB\%wrefresh\fP) and -\fB\%wscrl\fP (to avoid scrolling a pad), -and does not check in \fB\%wrefresh\fP to ensure that the pad -is refreshed properly. +However, +it uses this information only in +.I \%waddch +(to decide if it should call +.IR \%wrefresh ")" +and +.I \%wscrl +(to avoid scrolling a pad); +its +.I \%wrefresh +does not check it to ensure that a pad is properly updated. .bP -Solaris \fI\%xcurses\fP checks whether a window is a pad in -\fB\%wnoutrefresh\fP, -returning \fBERR\fP in that case. +Solaris +.I \%xcurses +checks whether a window is a pad in its +.IR \%wnoutrefresh "," +returning +.I ERR +in that case. .IP However, -it only sets the flag for subwindows if the parent window is a pad. -Its \fB\%newpad\fP function does not set this information. -Consequently, the check will never fail. +it sets the flag on subwindows only if the parent window is a pad. +Its +.I \%newpad +does not set this information. +Consequently, +the check never fails. .IP -It makes no comparable check in \fB\%pnoutrefresh\fP, -though interestingly enough, a comment in the source code -states that the lack of a check was an MKS extension. +It makes no comparable check in +.I \%pnoutrefresh +\(em though interestingly enough, +a comment in the source code states that the lack of a check +was an MKS extension. .bP -NetBSD 7 \fIcurses\fP -sets a flag in the \fI\%WINDOW\fP structure -for \fB\%newpad\fP and \fB\%subpad\fP, -using this to help with the distinction between \fB\%wnoutrefresh\fP -and \fB\%pnoutrefresh\fP. +NetBSD\ 7 +.I curses +sets a flag in the +.I \%WINDOW +structure for +.I \%newpad +and +.IR \%subpad "," +aiding itself to distinguish between +.I \%wnoutrefresh +and +.IR \%pnoutrefresh "." .IP It does not check for the case where a subwindow is created in -a pad using \fB\%subwin\fP or \fB\%derwin\fP. +a pad using +.I \%subwin +or +.IR \%derwin "." .IP -The \fB\%dupwin\fP function returns a regular window when duplicating a pad. -Likewise, \fB\%getwin\fP always returns a window, even if the saved -data was from a pad. +Its +.I \%dupwin +returns a regular window when duplicating a pad. +Likewise, +its +.I \%getwin +always returns a window, +even if the saved data was from a pad. .PP -This implementation +.IR \%ncurses ":" .bP -sets a flag in the \fI\%WINDOW\fP structure -for \fB\%newpad\fP and \fB\%subpad\fP, +sets a flag in the +.I \%WINDOW +structure for +.I \%newpad +and +.IR \%subpad "," .bP -allows a \fB\%subwin\fP or \fB\%derwin\fP call to succeed having a pad parent by -forcing the subwindow to be a pad, +allows a +.I \%subwin +or +.I \%derwin +call to succeed having a pad parent +by forcing the subwindow to be a pad, .bP -checks in both \fB\%wnoutrefresh\fP and \fB\%pnoutrefresh\fP to ensure -that pads and windows are handled distinctly, and +checks in both +.I \%wnoutrefresh +and +.I \%pnoutrefresh +to ensure that pads and windows are handled distinctly, +and .bP -ensures that \fB\%dupwin\fP and \fB\%getwin\fP treat -pads versus windows consistently. +ensures that +.I \%dupwin +and +.I \%getwin +treat pads versus windows consistently. +.SH HISTORY +SVr2 (1984) introduced +.IR \%newpad "," +.IR \%prefresh "," +and +.IR \%pnoutrefresh "," +documenting them in a single line each. +.PP +SVr3 (1987) added +.I \%subpad +and +.IR \%pechochar "," +and provided more extensive documentation. +.PP +The System\ V Interface Definition, +Version 4 (1995), +specified a function named +.IR \%pechowchar "." +This was a later addition to +.RI SVr4. x , +not appearing in the first SVr4 (1989). +It differs from X/Open's later +.I \%pecho_wchar +in that its +.I wstr +parameter was a +.I \%chtype +instead of a +.IR \%wchar_t "," +and was not +.IR const "-qualified." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_addch\fP(3X), diff --git a/contrib/ncurses/man/curs_print.3x b/contrib/ncurses/man/curs_print.3x index 3694beffcca1..a87c407209a1 100644 --- a/contrib/ncurses/man/curs_print.3x +++ b/contrib/ncurses/man/curs_print.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_print.3x,v 1.38 2024/03/16 15:35:01 tom Exp $ -.TH curs_print 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_print.3x,v 1.41 2025/02/15 18:42:34 tom Exp $ +.TH curs_print 3X 2025-02-15 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fB\%mcprint\fP \- write binary data to printer using \fIterminfo\fR capabilities @@ -36,54 +36,93 @@ write binary data to printer using \fIterminfo\fR capabilities .nf \fB#include <curses.h> .PP -\fBint mcprint(char *\fIdata\fP, int \fIlen\fP); +\fBint mcprint(char * \fIdata\fP, int \fIlen\fP); .fi .SH DESCRIPTION -This function uses the \fBmc5p\fP or \fBmc4\fP and \fBmc5\fP capabilities, -if they are present, to ship given data to a printer attached to the terminal. +.BR \%mcprint "," +an +.I \%ncurses +extension to the +.I curses +library, +uses the terminal's +.B \%prtr_non +.RB ( mc5p ) +or +.B \%prtr_on +.RB ( mc5 ) +and +.B \%prtr_off +.RB ( mc4 ) +media copy capabilities, +if defined, +to send +.I len +bytes of the given string +.I data +to a printer attached to the terminal. .PP -Note that the \fB\%mcprint\fP code has no way -to do flow control with the printer -or to know how much buffering it has. -Your application is responsible for -keeping the rate of writes to the printer below its continuous throughput rate -(typically about half of its nominal cps rating). +.B \%mcprint +has no means of flow control to the printer +nor of knowing how much buffering it has. +Your application is responsible +for keeping the rate of writes to the printer +below its continuous throughput rate, +typically about half of its nominal characters-per-second (cps) rating. Dot-matrix printers and -6-page-per-minute lasers can typically handle 80cps, so a good conservative -rule of thumb is to sleep for a second after shipping each 80-character line. -. +6-page-per-minute laser printers can typically handle 80 cps, +so a conservative rule of thumb +is to sleep for one second after sending an 80-character line. .SH RETURN VALUE -The \fB\%mcprint\fP function returns \fBERR\fP if the write operation aborted -for some reason. -In this case, \fB\%errno\fP will contain either an error associated -with \fBwrite\fP(2) or one of the following: +On success, +.B \%mcprint +returns the number of characters sent to the printer. +.PP +.B \%mcprint +returns +.B ERR +if the write operation fails for any reason. +In that event, +.B errno +contains either a value set by \fIwrite\fP(2), +or one of the following. .TP 5 \fBENODEV\fP -Capabilities for printer redirection do not exist. +The terminal lacks relevant media copy capabilities. .TP 5 \fBENOMEM\fP -Couldn't allocate sufficient memory to buffer the printer write. -.PP -When \fB\%mcprint\fP succeeds, it returns the number of characters actually -sent to the printer. +.I \%ncurses +could not allocate sufficient memory to buffer the write operation. .SH EXTENSIONS -\fB\%mcprint\fP was designed for -\fB\%ncurses\fP(3X), -and was not found in SVr4 -.IR curses , +.B \%mcprint +is an \fB\%ncurses\fP(3X) extension, +and is not found in SVr4 +.IR curses "," 4.4BSD -.IR curses , -or any other previous curses implementation. +.IR curses "," +or any other previous +.I curses +implementation. .SH PORTABILITY Applications employing this .I \%ncurses extension should condition its use on the visibility of the .B \%NCURSES_VERSION preprocessor macro. +.SH HISTORY +.I \%ncurses +introduced +.I \%mcprint +prior to version 1.9.9g (1996). .SH BUGS Padding in the -\fBmc5p\fP, -\fBmc4\fP, and -\fBmc5\fP capabilities is not interpreted. +.B \%prtr_non +.RB ( mc5p ), +.B \%prtr_on +.RB ( mc5 ), +and +.B \%prtr_off +.RB ( mc4 ) +capabilities is not interpreted. .SH SEE ALSO \fB\%curses\fP(3X) diff --git a/contrib/ncurses/man/curs_printw.3x b/contrib/ncurses/man/curs_printw.3x index 282536b363e0..906be3b842cf 100644 --- a/contrib/ncurses/man/curs_printw.3x +++ b/contrib/ncurses/man/curs_printw.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_printw.3x,v 1.53 2024/04/20 19:18:18 tom Exp $ -.TH curs_printw 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_printw.3x,v 1.65 2025/08/16 19:59:33 tom Exp $ +.TH curs_printw 3X 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -118,8 +118,7 @@ To format and write a wide-character string to a window, consider using \fI\%swprintf\fP(3) and \fB\%waddwstr\fP(3X) or similar. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. It specifies no error conditions for them. .PP .I \%ncurses @@ -128,75 +127,135 @@ legacy applications. However, the latter is obsolete. .bP -X/Open Curses, -Issue 4 Version 2 (1996), +X/Open Curses Issue\ 4 Version\ 2 (1996), marked \fB\%vwprintw\fP as requiring \fI\%varargs.h\fP and \*(``TO BE WITHDRAWN\*('', and specified \fB\%vw_printw\fP using the \fI\%stdarg.h\fP interface. .bP -X/Open Curses, Issue 5, Draft 2 +X/Open Curses Issue\ 5, Draft 2 (December 2007) marked \fBvwprintw\fP (along with \fBvwscanw\fP and the \fItermcap\fP interface) as withdrawn. After incorporating review comments, this became -X/Open Curses, Issue 7 (2009). +X/Open Curses Issue\ 7 (2009). .bP .I \%ncurses provides \fB\%vwprintw\fP, but marks it as deprecated. .SH HISTORY -While \fB\%printw\fP was implemented in 4BSD -(November 1980), +4BSD (1980) +introduced +.I \%wprintw +and its variants. .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\ .\" libcurses/printw.c -it was unused until 4.2BSD -(August 1983), -which employed it for games. -That early version of +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\ +.\" libcurses/mvprintw.c +It implemented all as functions, +not macros; +this initial distribution of .I curses -preceded the ANSI C standard of 1989. -It did not use \fI\%varargs.h\fP, -though that had been available since Seventh Edition Unix (1979). +preceded the ANSI C standard of 1989, +prior to which a variadic macro facility was not widely available +in the language. +.I \%printw +went unused in Berkeley distributions until 4.1cBSD (1983), +which employed it in games. +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.1cBSD/usr/src/\ +.\" games/canfield.c +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.1cBSD/usr/src/\ +.\" games/worm.c +4BSD's +.I \%wprintw +did not use +.IR \%varargs.h "," +which had been available since Seventh Edition Unix (1979). .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/\ .\" varargs.h In 1991 (a couple of years after SVr4 was generally available, and after the C standard was published), other developers updated the library, -using \fI\%stdarg.h\fP internally in 4.4BSD +using +.I \%stdarg.h +internally in 4.4BSD .IR curses . Even with this improvement, BSD .I curses did not use function prototypes (nor even declare functions) -in \fI\%curses.h\fP until 1992. +in +.I \%curses.h +until 1992. .PP -SVr2 (1984) documented \fB\%printw\fP and \fB\%wprintw\fP tersely as -\*(``printf on \fB\%stdscr\fP\*('' and -\*(``printf on \fIwin\fP\*('', +4BSD documented +.I \%printw +and +.I \%wprintw +tersely as \*(``printf on +.IR \%stdscr "\*(''" +and \*(``printf on +.IR win "\*(''," respectively. +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/man/man3/\ +.\" curses.3 +.PP +SVr3 summarized the functions in three lines, +asserting that they were analogous to \fI\%printf\fP(3) +and explaining that the string that \fI\%printf\fP(3) would write to the +standard output stream would instead be output using +.I \%waddstr +to the given window. +.\" GBR can't find a source to cite for this paraphrase, +.\" even after checking +.\" <https://github.com/ryanwoodsmall/oldsysv/tree/master>. +.\" +.\" The indicated paraphrase is from page 432: +.\" Unix System V Programmer's Reference Manual +.\" Prentice-Hall +.\" ISBN 0-13-940479-1 +.\" (bitsavers has 3rd printing from 1987) +.\" +.\" This lists mvprintw without detail, and printw as "printf on stdscr": +.\" Unix Programmer's Manual +.\" System Calls and Library Routines +.\" CBS College Publishing's UNIX System Library +.\" Holt, Rinehard and Winston, 1986 +.\" ISBN 0-03-009314-7 .PP -SVr3 (1987) added \fB\%mvprintw\fP and \fB\%mvwprintw\fP, -with a three-line summary asserting that they were analogous to -\fI\%printf\fP(3), -explaining that the string that \fI\%printf\fP(3) would write to the -standard output stream would instead be output using \fB\%waddstr\fP to -the given window. -SVr3 also implemented \fB\%vwprintw\fP, -describing its third parameter as a \fI\%va_list\fP, -defined in \fI\%varargs.h\fP, -and referred the reader to the manual pages for \fI\%varargs\fP and -\fI\%vprintf\fP for detailed descriptions. +SVr3 added +.IR \%vwprintw "," +describing its third parameter as a +.IR \%va_list "," +defined in +.IR \%varargs.h "," +and referred the reader to the manual pages for +.I \%varargs +and +.I \%vprintf +for detailed descriptions. .PP -SVr4 (1989) introduced no new variations of \fI\%printw\fP, -but provided for using either \fI\%varargs.h\fP or \fI\%stdarg.h\fP to -define the \fI\%va_list\fP type. +SVr4 (1989) introduced no new variations of +.IR \%printw "," +but provided for using either +.I \%varargs.h +or +.I \%stdarg.h +to define the +.I \%va_list +type. .\" either header declares "va_list", but only one can be used .PP -X/Open Curses, Issue 4 (1995), -defined \fB\%vw_printw\fP to replace \fB\%vwprintw\fP, -stating that its \fI\%va_list\fP type is defined in \fI\%stdarg.h\fP. +X/Open Curses Issue\ 4 (1995), +defined +.I \%vw_printw +to replace +.IR \%vwprintw "," +stating that its +.I \%va_list +type is defined in +.IR \%stdarg.h "." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_addstr\fP(3X), diff --git a/contrib/ncurses/man/curs_refresh.3x b/contrib/ncurses/man/curs_refresh.3x index ac81d1e6393e..37fd5f19f17b 100644 --- a/contrib/ncurses/man/curs_refresh.3x +++ b/contrib/ncurses/man/curs_refresh.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_refresh.3x,v 1.46 2024/04/20 21:20:07 tom Exp $ -.TH curs_refresh 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_refresh.3x,v 1.58 2025/01/19 00:51:10 tom Exp $ +.TH curs_refresh 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -129,27 +129,34 @@ It touches the indicated lines (marking them changed). The routine \fBredrawwin\fP touches the entire window. .SH RETURN VALUE These routines return the integer \fBERR\fP upon failure and \fBOK\fP -(SVr4 specifies only -\*(``an integer value other than \fBERR\fP\*('') -upon successful completion. .PP -X/Open Curses does not specify any error conditions. In this implementation .RS 3 .TP 5 \fBwnoutrefresh\fP -returns an error +returns +.B ERR if the window pointer is null, or if the window is really a pad. .TP 5 \fBwredrawln\fP -returns an error -if the associated call to \fBtouchln\fP returns an error. +return +.B ERR +if the associated call to \fBtouchln\fP returns +.BR ERR "." .RE .SH NOTES -Note that \fBrefresh\fP and \fBredrawwin\fP may be macros. +.B \%refresh +and +.B \%redrawwin +may be implemented as macros. .SH PORTABILITY -X/Open Curses, Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 527 .PP Whether \fBwnoutrefresh\fP copies to the virtual screen the entire contents of a window or just its changed portions has never been well-documented in @@ -161,5 +168,5 @@ Instead, you can do an explicit \fBtouchwin\fP before the \fBwnoutrefresh\fP call to guarantee an entire-contents copy anywhere. .SH SEE ALSO \fB\%curses\fP(3X), -\fB\%curs_outopts\fP(3X) +\fB\%curs_outopts\fP(3X), \fB\%curs_variables\fP(3X) diff --git a/contrib/ncurses/man/curs_scanw.3x b/contrib/ncurses/man/curs_scanw.3x index 409c297fb233..afdc1c4a8aac 100644 --- a/contrib/ncurses/man/curs_scanw.3x +++ b/contrib/ncurses/man/curs_scanw.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_scanw.3x,v 1.53 2024/04/20 19:18:18 tom Exp $ -.TH curs_scanw 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_scanw.3x,v 1.62 2025/07/05 13:03:05 tom Exp $ +.TH curs_scanw 3X 2025-07-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -126,8 +126,7 @@ respectively. implements \fI\%vsscanf\fP(3) internally if it is unavailable when the library is configured. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. It specifies no error conditions for them. .PP .I \%ncurses @@ -136,19 +135,17 @@ legacy applications. However, the latter is obsolete. .bP -X/Open Curses, -Issue 4 Version 2 (1996), +X/Open Curses Issue\ 4 Version\ 2 (1996), marked \fB\%vwscanw\fP as requiring \fI\%varargs.h\fP and \*(``TO BE WITHDRAWN\*('', and specified \fB\%vw_scanw\fP using the \fI\%stdarg.h\fP interface. .bP -X/Open Curses, -Issue 5, +X/Open Curses Issue\ 5, Draft 2 (December 2007) marked \fB\%vwscanw\fP (along with \fB\%vwscanw\fP and the \fItermcap\fP interface) as withdrawn. After incorporating review comments, this became -X/Open Curses, Issue 7 (2009). +X/Open Curses Issue\ 7 (2009). .bP .I \%ncurses provides \fB\%vwscanw\fP, @@ -188,65 +185,111 @@ conversion at the end of the format string, and check the value of the corresponding variable to determine how many conversions succeeded. .SH HISTORY -\fB\%scanw\fP was implemented in 4BSD -(November 1980); +4BSD (1980) +introduced +.I \%wscanw +and its variants. .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\ .\" libcurses/scanw.c -that early version of +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\ +.\" libcurses/mvscanw.c +It implemented all as functions, +not macros; +this initial distribution of .I curses -preceded the ANSI C standard of 1989. -The function was unused in Berkeley distributions for over ten years, -until 4.4BSD, +preceded the ANSI C standard of 1989, +prior to which a variadic macro facility was not widely available. +.I \%scanw +went unused in Berkeley distributions until 4.3BSD-Reno (1990), which employed it in a game. -The 4BSD \fB\%scanw\fP did not use \fI\%varargs.h\fP, -though that had been available since Seventh Edition Unix (1979). +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/\ +.\" games/chess/uxdsp.c +4BSD's +.I \%wscanw +did not use +.IR \%varargs.h "," +which had been available since Seventh Edition Unix (1979). .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/\ .\" varargs.h In 1991 (a couple of years after SVr4 was generally available, and after the C standard was published), other developers updated the library, -using \fI\%stdarg.h\fP internally in 4.4BSD +using +.I \%stdarg.h +internally in 4.4BSD .IR curses . Even with this improvement, BSD .I curses did not use function prototypes (nor even declare functions) -in \fI\%curses.h\fP until 1992. +in +.I \%curses.h +until 1992. .PP -SVr2 (1984) documented \fB\%scanw\fP and \fB\%wscanw\fP tersely as -\*(``scanf through \fB\%stdscr\fP\*('' and -\*(``scanf through \fIwin\fP\*('', +4BSD documented +.I \%scanw +and +.I \%wscanw +tersely as \*(``scanf through +.IR \%stdscr "\*(''" +and \*(``scanf through +.IR win "\*(''," respectively. -.PP -SVr3 (1987) added -\fB\%mvscanw\fP, and -\fB\%mvwscanw\fP, stating +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/man/man3/\ +.\" curses.3 +SVr3 (1987) +stated .RS .PP -\*(``[t]hese routines correspond to \fIscanf\fP(3S), +[t]hese routines correspond to \fIscanf\fP(3S), as do their arguments and return values. -\fB\%wgetstr\fP() is called on the window, -and the resulting line is used as input for the scan.\*('' +.IR \%wgetstr "()" +is called on the window, +and the resulting line is used as input for the scan. .RE +.\" GBR can't find a source to cite for this quotation, +.\" even after checking +.\" <https://github.com/ryanwoodsmall/oldsysv/tree/master>. .PP -SVr3 also implemented \fB\%vwscanw\fP, -describing its third parameter as a \fI\%va_list\fP, -defined in \fI\%varargs.h\fP, -and referred the reader to the manual pages for \fI\%varargs\fP and -\fI\%vprintf\fP for detailed descriptions. -(Because the SVr3 documentation does not mention \fI\%vscanf\fP, -the reference to \fI\%vprintf\fP might not be an error). +SVr3 added +.IR \%vwscanw "," +describing its third parameter as a +.IR \%va_list "," +defined in +.IR \%varargs.h "," +and referred the reader to the manual pages for +.I \%varargs +and +.I \%vprintf +for detailed descriptions. +(Because SVr3 documentation does not mention +.IR \%vscanf "," +the reference to +.I \%vprintf +might not be an error). .PP -SVr4 (1989) introduced no new variations of \fI\%scanw\fP, -but provided for using either \fI\%varargs.h\fP or \fI\%stdarg.h\fP to -define the \fI\%va_list\fP type. +SVr4 (1989) introduced no new variations of +.IR \%scanw "," +but provided for using either +.I \%varargs.h +or +.I \%stdarg.h +to define the +.I \%va_list +type. .\" either header declares "va_list", but only one can be used .PP -X/Open Curses, Issue 4 (1995), -defined \fI\%vw_scanw\fP to replace \fI\%vwscanw\fP, -stating that its \fI\%va_list\fP type is defined in \fI\%stdarg.h\fP. +X/Open Curses Issue\ 4 (1995) +defined +.I \%vw_scanw +to replace +.IR \%vwscanw "," +stating that its +.I \%va_list +type is defined in +.IR \%stdarg.h "." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_getstr\fP(3X), diff --git a/contrib/ncurses/man/curs_scr_dump.3x b/contrib/ncurses/man/curs_scr_dump.3x index 5f14a2287268..0cb7215d7bd6 100644 --- a/contrib/ncurses/man/curs_scr_dump.3x +++ b/contrib/ncurses/man/curs_scr_dump.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_scr_dump.3x,v 1.43 2024/04/20 18:54:36 tom Exp $ -.TH curs_scr_dump 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_scr_dump.3x,v 1.55 2025/01/19 00:51:10 tom Exp $ +.TH curs_scr_dump 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -54,10 +54,10 @@ read/write a \fIcurses\fR screen from/to a file .nf \fB#include <curses.h> .PP -\fBint scr_dump(const char *\fIfilename\fP); -\fBint scr_restore(const char *\fIfilename\fP); -\fBint scr_init(const char *\fIfilename\fP); -\fBint scr_set(const char *\fIfilename\fP); +\fBint scr_dump(const char * \fIfilename\fP); +\fBint scr_restore(const char * \fIfilename\fP); +\fBint scr_init(const char * \fIfilename\fP); +\fBint scr_set(const char * \fIfilename\fP); .fi .SH DESCRIPTION .I curses @@ -70,83 +70,183 @@ use \fB\%getwin\fP(3X) and \fB\%putwin\fP(3X), respectively. .SS scr_dump -\fB\%scr_dump\fP writes to +.B \%scr_dump +writes to .I filename the contents of the virtual screen; see \fB\%curscr\fP(3X). .SS scr_restore -\fB\%scr_restore\fP updates the virtual screen to contain the contents -of +.B \%scr_restore +updates the virtual screen to match the contents of .I filename -(if it was validly written with \fB\%scr_dump\fP). -No refresh is performed; -after performing any further desired updates, +(if validly written with +.BR \%scr_dump ")." +.I curses +does not perform a refresh; +after making any desired changes, call \fB\%doupdate\fP(3X) or similar. .SS scr_init -\fB\%scr_init\fP reads -.IR filename , +.B \%scr_init +reads +.IR filename "," using it to initialize .I curses data structures describing the state of the terminal screen. -If these data are valid, .I curses +then, +if it decides the terminal state is valid, bases its next update of the screen on this information rather than clearing it and starting from scratch. .PP -The data fail the validity check +.I curses +regards the terminal as in an invalid state for computation of updates +based on the contents of +.I filename +if +.bP +.I curses +knows that the terminal has been written to since the preceding +.B \%scr_dump +call, +or .bP -if the terminal employs +the terminal type supports the .I \%term\%info capabilities .B \%exit_ca_mode -.RB ( \%rmcup ) +.RB \%( rmcup ) or .B \%non_rev_rmcup -.RB ( \%nrrmc ) -are defined, -or -.bP -if +.RB \%( nrrmc ). +.PP +Either of the foregoing conditions means that .I curses -knows that the terminal has been written to since the preceding -\fB\%scr_dump\fP call. +cannot assume that the terminal's contents +match their representation in +.IR filename "." +The former is due to terminal features +(such as \fI\%xterm\fP(1)'s \*(``alternate screen\*('') +that couple cursor-positioning mode with a local cache of screen +contents. +.I curses +cannot know whether the terminal is displaying from that local cache +at the time the application calls +.BR \%scr_init "," +so it makes a pessimistic assumption that a full redraw is required; +see subsection \*(``Cursor Motions\*('' of \fB\%terminfo\fP(5). .PP -\fB\%scr_init\fP could be used after \fB\%initscr\fP(3X) or -\fB\%system\fP(3) to share the screen with another process that has -done a \fBscr_dump\fP after \fB\%endwin\fP(3X). +.B \%scr_init +could be used after \fB\%initscr\fP(3X) or \fI\%system\fP(3) to share +the screen with another process that has done a +.B \%scr_dump +after \fB\%endwin\fP(3X). +An application that supports suspending its state on exit and subsequent +resumption upon later execution might use +.B \%scr_dump +and +.B \%scr_init +thus. .SS scr_set -The \fBscr_set\fP routine is a combination of \fBscr_restore\fP and -\fBscr_init\fP. It tells the program that the information in \fIfilename\fP is -what is currently on the screen, and also what the program wants on the screen. -This can be thought of as a screen inheritance function. +.B \%scr_set +combines +.B \%scr_restore +and +.BR \%scr_init "," +synchronizing the contents of +.I filename +with the virtual screen. +It can be regarded as a screen inheritance function; +consider a real-time screen-sharing application. .SH RETURN VALUE -These functions return \fBOK\fP on success and \fBERR\fP on failure. +These functions return +.B OK +on success and +.B ERR +on failure. .PP -X/Open defines no failure conditions. -In this implementation, -each function fails if it cannot open -.IR filename . +In +.IR \%ncurses "," +each function returns +.B ERR +if it cannot open +.IR filename "." +.BR \%scr_init "," +.BR \%scr_restore "," +and +.B \%scr_set +return +.B ERR +if the contents of +.I filename +are invalid. .SH NOTES -\fB\%scr_init\fP, -\fB\%scr_set\fP, +.BR \%scr_init "," +.BR \%scr_restore "," and -\fB\%scr_restore\fP may be macros. +.B \%scr_set +may be implemented as macros. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.\" Unusually, SVID 4 explicitly indicated "OK" as a possible return +.\" value, rather than the "integer other than ERR" refrain (p. 529). .PP .\" SVID 4, p. 529 SVr4 omitted the .I \%const qualifiers. .PP -SVr4 documentation describes \fB\%scr_init\fP such that the dump data is -also considered invalid \*(``if the time-stamp of the tty is old\*('' +SVr4 documentation describes +.I \%scr_init +such that the dump data is also considered invalid +\*(``if the time-stamp of the tty is old\*('' but does not define \*(``old\*(''. +.PP +As of 2024, +.I \%PDCurses +provides these functions. +NetBSD +.I curses +does not. +.PP +Other implementations of +.I curses +store the window in binary form, +which makes the dump dependent +upon the +.I curses +library's internal data structures. +.I \%ncurses +avoids this drawback by storing the dump in textual form, +allowing more flexible use of the data. +For instance, +the +.I \%scr_restore +of SVr4 +.I curses +requires that the dumped window have the same dimensions +as the restored window. +.I \%ncurses +uses its +\fB\%wresize\fP(3X) +extension +to adjust the restored window size. +.SH HISTORY +SVr3 (1987) introduced +.IR \%scr_dump "," +.IR \%scr_init "," +and +.IR \%scr_restore "." +SVr3.1 added +.IR \%scr_set "." .SH SEE ALSO +.na \fB\%curses\fP(3X), \fB\%curs_initscr\fP(3X), \fB\%curs_refresh\fP(3X), \fB\%curs_util\fP(3X), \fB\%system\fP(3), -\fB\%scr_dump\fP(5) +\fB\%scr_dump\fP(5), +\fB\%terminfo\fP(5), +\fB\%wresize\fP(3X) +.ad diff --git a/contrib/ncurses/man/curs_scroll.3x b/contrib/ncurses/man/curs_scroll.3x index 16d5a501094f..aa9fdb8e4f54 100644 --- a/contrib/ncurses/man/curs_scroll.3x +++ b/contrib/ncurses/man/curs_scroll.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2006,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_scroll.3x,v 1.43 2024/04/20 18:54:36 tom Exp $ -.TH curs_scroll 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_scroll.3x,v 1.59 2025/04/05 22:20:39 tom Exp $ +.TH curs_scroll 3X 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -48,43 +48,59 @@ \fB\%scroll\fP, \fB\%scrl\fP, \fB\%wscrl\fP \- -scroll a \fIcurses\fR window +scroll a \fIcurses\fP window .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint scroll(WINDOW *\fIwin\fP); +\fBint scroll(WINDOW * \fIwin\fP); .PP \fBint scrl(int \fIn\fP); -\fBint wscrl(WINDOW *\fIwin\fP, int \fIn\fP); +\fBint wscrl(WINDOW * \fIwin\fP, int \fIn\fP); .fi .SH DESCRIPTION -\fBscroll\fP scrolls the given window up one line. +.B scroll +scrolls the given window up one line. That is, every visible line we might number .I i becomes line .IR i "\-1." -The text of the top line in the window disappears and the bottom line -is populated with blank characters; -see \fB\%bkgd\fP(3X) or \fB\%bkgrnd\fP(3X). -As an optimization, -if the scrolling region of the window is the entire screen, -the physical screen may be scrolled at the same time; -see \fB\%curscr\fP(3X). -.PP -\fB\%scrl\fP and \fB\%wscrl\fP scroll -.B \%stdscr -or the specified window up or down depending on the sign of -.IR n . +.B \%wscrl +and +.B \%scrl +scroll the specified window or +.BR \%stdscr "," +respectively, +up or down per the sign of +.IR n "." .bP For positive -.IR n , -line \fIi\fP+\fIn\fP becomes \fIi\fP (scrolling up); +.IR n "," +line +.IR i + n +becomes +.I i +(scrolling up); .bP for negative -.IR n , -line \fIi\fP-\fIn\fP becomes \fIi\fP (scrolling down). +.IR n "," +line +.IR i \- n +becomes +.I i +(scrolling down). +.PP +A line that scrolls beyond the window boundaries disappears; +.I curses +populates a new one emerging at the opposite boundary +with the background character; +see \fB\%bkgd\fP(3X) +(wide-character API users: \fB\%bkgrnd\fP(3X)). +As an optimization, +if the scrolling region of the window is the entire screen, +the physical screen may be scrolled at the same time; +see \fB\%curscr\fP(3X). .PP The cursor does not move. These functions perform no operation unless scrolling is enabled for the @@ -96,42 +112,79 @@ upon failure and .B OK upon success. .PP -.I \%ncurses -returns \fBERR\fP if scrolling is not enabled in the window, -for example with \fB\%scrollok\fP(3X), -or if the +In +.IR \%ncurses "," +they return +.B ERR +if +.bP +the +.I curses +screen has not been initialized, +.bP +(for functions taking a .I \%WINDOW -pointer is null. +pointer argument) +.I win +is a null pointer, +or +.bP +scrolling is not enabled in the window +(as by \fB\%scrollok\fP(3X)). .SH NOTES -Unusually, -there is no \fB\%wscroll\fP function; -\fBscroll\fP behaves as one would expect \fB\%wscroll\fP to, -accepting a \fI\%WINDOW\fP pointer argument. +.B \%scroll +and +.B \%scrl +may be implemented as macros. .PP -\fB\%scrl\fP and \fB\%scroll\fP may be implemented as macros. +Unusually, +there is no +.B \%wscroll +function; +.B scroll +behaves as one would expect +.B \%wscroll +to, +accepting a +.I \%WINDOW +pointer argument. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions. -It defines no error conditions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -SVr4 specifies only -\*(``an integer value other than \fBERR\fP\*('' as a successful return -value. +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 531 .PP SVr4 indicates that the optimization of physically scrolling immediately if the scroll region is the entire screen \*(``is\*('' performed, not \*(``may be\*('' performed. .I \%ncurses -deliberately does not guarantee that this will occur, -to leave open the possibility of smarter optimization of multiple scroll +deliberately does not guarantee that this occurs, +to leave open the possibility of better optimization of multiple scroll actions on the next update. .PP Neither SVr4 .I curses -nor X/Open Curses specify whether the current attribute or current color -pair of blanks generated by the scroll function are zeroed. -.I \%ncurses -does so. +nor X/Open Curses specify whether these functions zero the attributes or +color pair identifier of the background character. +In +.IR \%ncurses "," +they do not. +.SH HISTORY +4BSD (1980) +introduced +.IR scroll "," +defining it as a function. +.PP +SVr3.1 (1987) +added +.I \%scrl +and +.IR \%wscrl "," +redefining +.I \%scroll +as a macro wrapping the latter. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_outopts\fP(3X) diff --git a/contrib/ncurses/man/curs_slk.3x b/contrib/ncurses/man/curs_slk.3x index fbc718115434..f22f48aeb0f5 100644 --- a/contrib/ncurses/man/curs_slk.3x +++ b/contrib/ncurses/man/curs_slk.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_slk.3x,v 1.71 2024/04/20 18:54:36 tom Exp $ -.TH curs_slk 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_slk.3x,v 1.85 2025/01/19 00:51:10 tom Exp $ +.TH curs_slk 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -135,9 +135,9 @@ helping the user to associate each label with its numbered function key. \fBLINES\fP and the vertical size of \fB\%stdscr\fP are further reduced. .SS Labels Populate the labels with normal strings -(\fB\%slk_set\fP) +\%(\fBslk_set\fP) or wide-character strings -(\fB\%slk_wset\fP). +\%(\fBslk_wset\fP). Each function takes three parameters. .TP 8 \" "labnum" + 2n .I labnum @@ -213,47 +213,54 @@ this implementation provides \fB\%extended_slk_color\fP, which accepts an \fIint\fP value of at least 32 bits. .SH RETURN VALUE -Routines that return an integer return \fBERR\fP upon failure and -\fBOK\fP -(SVr4 specifies only -\*(``an integer value other than \fBERR\fP\*('') -upon successful completion. +Functions that return integers return +.B ERR +upon failure and +.B OK +upon success. .PP -X/Open Curses defines no error conditions. -.PP -In this implementation +In +.IR \%ncurses "," .RS 3 .TP 5 \fBslk_attr\fP returns the attribute used for the soft keys. .TP 5 \fBslk_attroff\fP, \fBslk_attron\fP, \fBslk_clear\fP, \fBslk_noutrefresh\fP, \fBslk_refresh\fP, \fBslk_touch\fP -return an error +return +.B ERR if the terminal or the softkeys were not initialized. .TP 5 \fBslk_attrset\fP -returns an error +returns +.B ERR if the terminal or the softkeys were not initialized. .TP 5 \fBslk_attr_set\fP -returns an error +returns +.B ERR if the terminal or the softkeys were not initialized, or the color pair is outside the range 0..\fBCOLOR_PAIRS\fP\-1. .TP 5 \fBslk_color\fP -returns an error +returns +.B ERR if the terminal or the softkeys were not initialized, or the color pair is outside the range 0..\fBCOLOR_PAIRS\fP\-1. .TP 5 \fBslk_init\fP -returns an error +returns +.B ERR if the format parameter is outside the range 0..3. .TP 5 \fBslk_label\fP -returns \fBNULL\fP on error. +returns +.I NULL +on error. .TP 5 \fBslk_set\fP -returns an error +returns +.B ERR if the terminal or the softkeys were not initialized, or the \fIlabnum\fP parameter is outside the range of label counts, or if the format parameter is outside the range 0..2, or if @@ -263,12 +270,15 @@ memory for the labels cannot be allocated. Most applications would use \fB\%slk_noutrefresh\fP because a \fB\%wrefresh\fP is likely to follow soon. .SH EXTENSIONS -X/Open Curses documents the \fIopts\fP argument -as reserved for future use, -saying that it must be null. -This implementation -uses that parameter in ABI 6 for the functions which have a color pair -parameter to support extended color pairs. +X/Open Curses documents the +.I opts +argument as reserved for future use, +saying that it must be a null pointer. +The +.IR \%ncurses\ 6 +ABI uses it +for the functions that accept a color pair parameter +to support extended color pairs. .PP For functions which modify the color, e.g., @@ -277,9 +287,12 @@ if \fIopts\fP is set it is treated as a pointer to \fIint\fP, and used to set the color pair instead of the \fIshort\fP pair parameter. .SH PORTABILITY -X/Open Curses, -Issue 4 describes these functions, -with some differences from SVr4 \fIcurses\fP: +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 533 .bP X/Open added functions like the SVr4 attribute-manipulation functions \fB\%slk_attron\fP, @@ -332,11 +345,13 @@ Finally, if there is no \fBfln\fP capability, If \fB\%slk_start\fP is given a non-null \fIgp\fP, it copies the \fIng\fP elements of the group of soft-keys, up to 16. .IP -If there are more than 16 elements, \fB\%slk_start\fP returns an error. +If there are more than 16 elements, \fB\%slk_start\fP returns +.BR ERR "." .bP The format codes \fB2\fP and \fB3\fP for \fB\%slk_init\fP were added by \fI\%ncurses\fP in 1996. -PDCurses 2.4 added this feature in 2001. +.I \%PDCurses +2.4 added this feature in 2001. .PP The function \fB\%slk_attr\fP was added by \fI\%ncurses\fP in 1996. .PP diff --git a/contrib/ncurses/man/curs_sp_funcs.3x b/contrib/ncurses/man/curs_sp_funcs.3x index e58a48e3caea..1e0f22408ae6 100644 --- a/contrib/ncurses/man/curs_sp_funcs.3x +++ b/contrib/ncurses/man/curs_sp_funcs.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2010-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_sp_funcs.3x,v 1.50 2024/04/20 18:56:31 tom Exp $ -.TH curs_sp_funcs 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_sp_funcs.3x,v 1.57 2025/02/01 22:47:44 tom Exp $ +.TH curs_sp_funcs 3X 2025-02-01 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,169 +46,169 @@ .nf \fB#include <curses.h> .PP -\fBint alloc_pair_sp(SCREEN* \fIsp\fP, int \fIfg\fP, int \fIbg\fP); -\fBint assume_default_colors_sp(SCREEN* \fIsp\fP, int \fIfg\fP, int \fIbg\fP); -\fBint baudrate_sp(SCREEN* \fIsp\fP); -\fBint beep_sp(SCREEN* \fIsp\fP); -\fBbool can_change_color_sp(SCREEN* \fIsp\fP); -\fBint cbreak_sp(SCREEN* \fIsp\fP); -\fBint color_content_sp(SCREEN* \fIsp\fP, short \fIcolor\fP, short* \fIr\fP, short* \fIg\fP, short* \fIb\fP); -\fBint curs_set_sp(SCREEN* \fIsp\fP, int \fIvisibility\fP); -\fBint def_prog_mode_sp(SCREEN* \fIsp\fP); -\fBint def_shell_mode_sp(SCREEN* \fIsp\fP); +\fBint alloc_pair_sp(SCREEN * \fIsp\fP, int \fIfg\fP, int \fIbg\fP); +\fBint assume_default_colors_sp(SCREEN * \fIsp\fP, int \fIfg\fP, int \fIbg\fP); +\fBint baudrate_sp(SCREEN * \fIsp\fP); +\fBint beep_sp(SCREEN * \fIsp\fP); +\fBbool can_change_color_sp(SCREEN * \fIsp\fP); +\fBint cbreak_sp(SCREEN * \fIsp\fP); +\fBint color_content_sp(SCREEN * \fIsp\fP, short \fIcolor\fP, short * \fIr\fP, short * \fIg\fP, short * \fIb\fP); +\fBint curs_set_sp(SCREEN * \fIsp\fP, int \fIvisibility\fP); +\fBint def_prog_mode_sp(SCREEN * \fIsp\fP); +\fBint def_shell_mode_sp(SCREEN * \fIsp\fP); .PP -\fBint define_key_sp(SCREEN* \fIsp\fP, const char * \fIdefinition\fP, int \fIkeycode\fP); -\fBint delay_output_sp(SCREEN* \fIsp\fP, int \fIms\fP); -\fBint doupdate_sp(SCREEN* \fIsp\fP); -\fBint echo_sp(SCREEN* \fIsp\fP); -\fBint endwin_sp(SCREEN* \fIsp\fP); -\fBchar erasechar_sp(SCREEN* \fIsp\fP); -\fBint erasewchar_sp(SCREEN* \fIsp\fP, wchar_t *\fIwc\fP); +\fBint define_key_sp(SCREEN * \fIsp\fP, const char * \fIdefinition\fP, int \fIkeycode\fP); +\fBint delay_output_sp(SCREEN * \fIsp\fP, int \fIms\fP); +\fBint doupdate_sp(SCREEN * \fIsp\fP); +\fBint echo_sp(SCREEN * \fIsp\fP); +\fBint endwin_sp(SCREEN * \fIsp\fP); +\fBchar erasechar_sp(SCREEN * \fIsp\fP); +\fBint erasewchar_sp(SCREEN * \fIsp\fP, wchar_t *\fIwc\fP); \fBint extended_color_content_sp(SCREEN * \fIsp\fP, int \fIcolor\fP, int * \fIr\fP, int * \fIg\fP, int * \fIb\fP); -\fBint extended_pair_content_sp(SCREEN* \fIsp\fP, int \fIpair\fP, int * \fIfg\fP, int * \fIbg\fP); -\fBint extended_slk_color_sp(SCREEN* \fIsp\fP, int \fIpair\fP); +\fBint extended_pair_content_sp(SCREEN * \fIsp\fP, int \fIpair\fP, int * \fIfg\fP, int * \fIbg\fP); +\fBint extended_slk_color_sp(SCREEN * \fIsp\fP, int \fIpair\fP); .PP -\fBvoid filter_sp(SCREEN* \fIsp\fP); -\fBint find_pair_sp(SCREEN* \fIsp\fP, int \fIfg\fP, int \fIbg\fP); -\fBint flash_sp(SCREEN* \fIsp\fP); -\fBint flushinp_sp(SCREEN* \fIsp\fP); -\fBint free_pair_sp(SCREEN* \fIsp\fP, int \fIpair\fP); -\fBint get_escdelay_sp(SCREEN* \fIsp\fP); -\fBint getmouse_sp(SCREEN* \fIsp\fP, MEVENT* \fIevent\fP); -\fBWINDOW* getwin_sp(SCREEN* \fIsp\fP, FILE* \fIfilep\fP); -\fBint halfdelay_sp(SCREEN* \fIsp\fP, int \fItenths\fP); -\fBbool has_colors_sp(SCREEN* \fIsp\fP); +\fBvoid filter_sp(SCREEN * \fIsp\fP); +\fBint find_pair_sp(SCREEN * \fIsp\fP, int \fIfg\fP, int \fIbg\fP); +\fBint flash_sp(SCREEN * \fIsp\fP); +\fBint flushinp_sp(SCREEN * \fIsp\fP); +\fBint free_pair_sp(SCREEN * \fIsp\fP, int \fIpair\fP); +\fBint get_escdelay_sp(SCREEN * \fIsp\fP); +\fBint getmouse_sp(SCREEN * \fIsp\fP, MEVENT * \fIevent\fP); +\fBWINDOW * getwin_sp(SCREEN * \fIsp\fP, FILE * \fIfilep\fP); +\fBint halfdelay_sp(SCREEN * \fIsp\fP, int \fItenths\fP); +\fBbool has_colors_sp(SCREEN * \fIsp\fP); .PP -\fBbool has_ic_sp(SCREEN* \fIsp\fP); -\fBbool has_il_sp(SCREEN* \fIsp\fP); -\fBint has_key_sp(SCREEN* \fIsp\fP, int \fIc\fP); -\fBbool has_mouse_sp(SCREEN* \fIsp\fP); -\fBint init_color_sp(SCREEN* \fIsp\fP, short \fIcolor\fP, short \fIr\fP, short \fIg\fP, short \fIb\fP); -\fBint init_extended_color_sp(SCREEN* \fIsp\fP, int \fIcolor\fP, int \fIr\fP, int \fIg\fP, int \fIb\fP); -\fBint init_extended_pair_sp(SCREEN* \fIsp\fP, int \fIpair\fP, int \fIfg\fP, int \fIbg\fP); -\fBint init_pair_sp(SCREEN* \fIsp\fP, short \fIpair\fP, short \fIfg\fP, short \fIbg\fP); -\fBint intrflush_sp(SCREEN* \fIsp\fP, WINDOW* \fIwin\fP, bool \fIbf\fP); -\fBint is_cbreak_sp(SCREEN* \fIsp\fP); +\fBbool has_ic_sp(SCREEN * \fIsp\fP); +\fBbool has_il_sp(SCREEN * \fIsp\fP); +\fBint has_key_sp(SCREEN * \fIsp\fP, int \fIc\fP); +\fBbool has_mouse_sp(SCREEN * \fIsp\fP); +\fBint init_color_sp(SCREEN * \fIsp\fP, short \fIcolor\fP, short \fIr\fP, short \fIg\fP, short \fIb\fP); +\fBint init_extended_color_sp(SCREEN * \fIsp\fP, int \fIcolor\fP, int \fIr\fP, int \fIg\fP, int \fIb\fP); +\fBint init_extended_pair_sp(SCREEN * \fIsp\fP, int \fIpair\fP, int \fIfg\fP, int \fIbg\fP); +\fBint init_pair_sp(SCREEN * \fIsp\fP, short \fIpair\fP, short \fIfg\fP, short \fIbg\fP); +\fBint intrflush_sp(SCREEN * \fIsp\fP, WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBint is_cbreak_sp(SCREEN * \fIsp\fP); .PP -\fBint is_echo_sp(SCREEN* \fIsp\fP); -\fBint is_nl_sp(SCREEN* \fIsp\fP); -\fBint is_raw_sp(SCREEN* \fIsp\fP); -\fBbool is_term_resized_sp(SCREEN* \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP); -\fBbool isendwin_sp(SCREEN* \fIsp\fP); -\fBint key_defined_sp(SCREEN* \fIsp\fP, const char *\fIdefinition\fP); -\fBchar* keybound_sp(SCREEN* \fIsp\fP, int \fIkeycode\fP, int \fIcount\fP); -\fBNCURSES_CONST char* keyname_sp(SCREEN* \fIsp\fP, int \fIc\fP); -\fBint keyok_sp(SCREEN* \fIsp\fP, int \fIkeycode\fP, bool \fIenable\fP); -\fBchar killchar_sp(SCREEN* \fIsp\fP); +\fBint is_echo_sp(SCREEN * \fIsp\fP); +\fBint is_nl_sp(SCREEN * \fIsp\fP); +\fBint is_raw_sp(SCREEN * \fIsp\fP); +\fBbool is_term_resized_sp(SCREEN * \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP); +\fBbool isendwin_sp(SCREEN * \fIsp\fP); +\fBint key_defined_sp(SCREEN * \fIsp\fP, const char *\fIdefinition\fP); +\fBchar * keybound_sp(SCREEN * \fIsp\fP, int \fIkeycode\fP, int \fIcount\fP); +\fBNCURSES_CONST char * keyname_sp(SCREEN * \fIsp\fP, int \fIc\fP); +\fBint keyok_sp(SCREEN * \fIsp\fP, int \fIkeycode\fP, bool \fIenable\fP); +\fBchar killchar_sp(SCREEN * \fIsp\fP); .PP -\fBint killwchar_sp(SCREEN* \fIsp\fP, wchar_t *\fIwc\fP); -\fBchar* longname_sp(SCREEN* \fIsp\fP); -\fBint mcprint_sp(SCREEN* \fIsp\fP, char *\fIdata\fP, int \fIlen\fP); -\fBint mouseinterval_sp(SCREEN* \fIsp\fP, int \fIerval\fP); -\fBmmask_t mousemask_sp(SCREEN* \fIsp\fP, mmask_t \fInewmask\fP, mmask_t *\fIoldmask\fP); -\fBint mvcur_sp(SCREEN* \fIsp\fP, int \fIoldrow\fP, int \fIoldcol\fP, int \fInewrow\fP, int \fInewcol\fP); -\fBint napms_sp(SCREEN* \fIsp\fP, int \fIms\fP); -\fBWINDOW* newpad_sp(SCREEN* \fIsp\fP, int \fInrows\fP, int \fIncols\fP); -\fBSCREEN* new_prescr(void); -\fBSCREEN* newterm_sp(SCREEN* \fIsp\fP, const char *\fItype\fP, FILE *\fIoutfd\fP, FILE *\fIinfd\fP); +\fBint killwchar_sp(SCREEN * \fIsp\fP, wchar_t *\fIwc\fP); +\fBchar * longname_sp(SCREEN * \fIsp\fP); +\fBint mcprint_sp(SCREEN * \fIsp\fP, char *\fIdata\fP, int \fIlen\fP); +\fBint mouseinterval_sp(SCREEN * \fIsp\fP, int \fIerval\fP); +\fBmmask_t mousemask_sp(SCREEN * \fIsp\fP, mmask_t \fInewmask\fP, mmask_t *\fIoldmask\fP); +\fBint mvcur_sp(SCREEN * \fIsp\fP, int \fIoldrow\fP, int \fIoldcol\fP, int \fInewrow\fP, int \fInewcol\fP); +\fBint napms_sp(SCREEN * \fIsp\fP, int \fIms\fP); +\fBWINDOW * newpad_sp(SCREEN * \fIsp\fP, int \fInrows\fP, int \fIncols\fP); +\fBSCREEN * new_prescr(void); +\fBSCREEN * newterm_sp(SCREEN * \fIsp\fP, const char *\fItype\fP, FILE *\fIoutf\fP, FILE *\fIinf\fP); .PP -\fBWINDOW* newwin_sp(SCREEN* \fIsp\fP, int \fInlines\fP, int \fIncols\fP, int \fIbegin_y\fP, int \fIbegin_x\fP); -\fBint nl_sp(SCREEN* \fIsp\fP); -\fBint nocbreak_sp(SCREEN* \fIsp\fP); -\fBint noecho_sp(SCREEN* \fIsp\fP); -\fBvoid nofilter_sp(SCREEN* \fIsp\fP); -\fBint nonl_sp(SCREEN* \fIsp\fP); -\fBvoid noqiflush_sp(SCREEN* \fIsp\fP); -\fBint noraw_sp(SCREEN* \fIsp\fP); -\fBint pair_content_sp(SCREEN* \fIsp\fP, short \fIpair\fP, short* \fIfg\fP, short* \fIbg\fP); -\fBvoid qiflush_sp(SCREEN* \fIsp\fP); +\fBWINDOW * newwin_sp(SCREEN * \fIsp\fP, int \fInlines\fP, int \fIncols\fP, int \fIbegin_y\fP, int \fIbegin_x\fP); +\fBint nl_sp(SCREEN * \fIsp\fP); +\fBint nocbreak_sp(SCREEN * \fIsp\fP); +\fBint noecho_sp(SCREEN * \fIsp\fP); +\fBvoid nofilter_sp(SCREEN * \fIsp\fP); +\fBint nonl_sp(SCREEN * \fIsp\fP); +\fBvoid noqiflush_sp(SCREEN * \fIsp\fP); +\fBint noraw_sp(SCREEN * \fIsp\fP); +\fBint pair_content_sp(SCREEN * \fIsp\fP, short \fIpair\fP, short * \fIfg\fP, short * \fIbg\fP); +\fBvoid qiflush_sp(SCREEN * \fIsp\fP); .PP -\fBint raw_sp(SCREEN* \fIsp\fP); -\fBvoid reset_color_pairs_sp(SCREEN* \fIsp\fP); -\fBint reset_prog_mode_sp(SCREEN* \fIsp\fP); -\fBint reset_shell_mode_sp(SCREEN* \fIsp\fP); -\fBint resetty_sp(SCREEN* \fIsp\fP); -\fBint resize_term_sp(SCREEN* \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP); -\fBint resizeterm_sp(SCREEN* \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP); -\fBint ripoffline_sp(SCREEN* \fIsp\fP, int \fIline\fP, int (*\fIinit\fP)(WINDOW* \fIwin\fP, int \fIfmt\fP)); -\fBint savetty_sp(SCREEN* \fIsp\fP); -\fBint scr_init_sp(SCREEN* \fIsp\fP, const char *\fIfilename\fP); +\fBint raw_sp(SCREEN * \fIsp\fP); +\fBvoid reset_color_pairs_sp(SCREEN * \fIsp\fP); +\fBint reset_prog_mode_sp(SCREEN * \fIsp\fP); +\fBint reset_shell_mode_sp(SCREEN * \fIsp\fP); +\fBint resetty_sp(SCREEN * \fIsp\fP); +\fBint resize_term_sp(SCREEN * \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP); +\fBint resizeterm_sp(SCREEN * \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP); +\fBint ripoffline_sp(SCREEN * \fIsp\fP, int \fIline\fP, int (*\fIinit\fP)(WINDOW * \fIwin\fP, int \fIfmt\fP)); +\fBint savetty_sp(SCREEN * \fIsp\fP); +\fBint scr_init_sp(SCREEN * \fIsp\fP, const char *\fIfilename\fP); .PP -\fBint scr_restore_sp(SCREEN* \fIsp\fP, const char *\fIfilename\fP); -\fBint scr_set_sp(SCREEN* \fIsp\fP, const char *\fIfilename\fP); -\fBint set_escdelay_sp(SCREEN* \fIsp\fP, int \fIms\fP); -\fBint set_tabsize_sp(SCREEN* \fIsp\fP, int \fIcols\fP); -\fBint slk_attrset_sp(SCREEN* \fIsp\fP, const chtype \fIa\fP); -\fBint slk_attr_set_sp(SCREEN* \fIsp\fP, const attr_t \fIattrs\fP, short \fIpair\fP, void*\fIopts\fP); -\fBint slk_attroff_sp(SCREEN* \fIsp\fP, const chtype \fIa\fP); -\fBint slk_attron_sp(SCREEN* \fIsp\fP, const chtype \fIa\fP); -\fBattr_t slk_attr_sp(SCREEN* \fIsp\fP); -\fBint slk_clear_sp(SCREEN* \fIsp\fP); +\fBint scr_restore_sp(SCREEN * \fIsp\fP, const char *\fIfilename\fP); +\fBint scr_set_sp(SCREEN * \fIsp\fP, const char *\fIfilename\fP); +\fBint set_escdelay_sp(SCREEN * \fIsp\fP, int \fIms\fP); +\fBint set_tabsize_sp(SCREEN * \fIsp\fP, int \fIcols\fP); +\fBint slk_attrset_sp(SCREEN * \fIsp\fP, const chtype \fIa\fP); +\fBint slk_attr_set_sp(SCREEN * \fIsp\fP, const attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP); +\fBint slk_attroff_sp(SCREEN * \fIsp\fP, const chtype \fIa\fP); +\fBint slk_attron_sp(SCREEN * \fIsp\fP, const chtype \fIa\fP); +\fBattr_t slk_attr_sp(SCREEN * \fIsp\fP); +\fBint slk_clear_sp(SCREEN * \fIsp\fP); .PP -\fBint slk_color_sp(SCREEN* \fIsp\fP, short \fIpair\fP); -\fBint slk_init_sp(SCREEN* \fIsp\fP, int \fIfmt\fP); -\fBchar* slk_label_sp(SCREEN* \fIsp\fP, int \fIlabnum\fP); -\fBint slk_noutrefresh_sp(SCREEN* \fIsp\fP); -\fBint slk_refresh_sp(SCREEN* \fIsp\fP); -\fBint slk_restore_sp(SCREEN* \fIsp\fP); -\fBint slk_set_sp(SCREEN* \fIsp\fP, int \fIlabnum\fP, const char * \fIlabel\fP, int \fIfmt\fP); -\fBint slk_touch_sp(SCREEN* \fIsp\fP); -\fBint start_color_sp(SCREEN* \fIsp\fP); -\fBattr_t term_attrs_sp(SCREEN* \fIsp\fP); +\fBint slk_color_sp(SCREEN * \fIsp\fP, short \fIpair\fP); +\fBint slk_init_sp(SCREEN * \fIsp\fP, int \fIfmt\fP); +\fBchar * slk_label_sp(SCREEN * \fIsp\fP, int \fIlabnum\fP); +\fBint slk_noutrefresh_sp(SCREEN * \fIsp\fP); +\fBint slk_refresh_sp(SCREEN * \fIsp\fP); +\fBint slk_restore_sp(SCREEN * \fIsp\fP); +\fBint slk_set_sp(SCREEN * \fIsp\fP, int \fIlabnum\fP, const char * \fIlabel\fP, int \fIfmt\fP); +\fBint slk_touch_sp(SCREEN * \fIsp\fP); +\fBint start_color_sp(SCREEN * \fIsp\fP); +\fBattr_t term_attrs_sp(SCREEN * \fIsp\fP); .PP -\fBchtype termattrs_sp(SCREEN* \fIsp\fP); -\fBchar* termname_sp(SCREEN* \fIsp\fP); -\fBint typeahead_sp(SCREEN* \fIsp\fP, int \fIfd\fP); -\fBint unget_wch_sp(SCREEN* \fIsp\fP, const wchar_t \fIwc\fP); -\fBint ungetch_sp(SCREEN* \fIsp\fP, int \fIc\fP); -\fBint ungetmouse_sp(SCREEN* \fIsp\fP, MEVENT* \fIevent\fP); -\fBint use_default_colors_sp(SCREEN* \fIsp\fP); -\fBvoid use_env_sp(SCREEN* \fIsp\fP, bool \fIbf\fP); -\fBint use_legacy_coding_sp(SCREEN* \fIsp\fP, int \fIlevel\fP); +\fBchtype termattrs_sp(SCREEN * \fIsp\fP); +\fBchar * termname_sp(SCREEN * \fIsp\fP); +\fBint typeahead_sp(SCREEN * \fIsp\fP, int \fIfd\fP); +\fBint unget_wch_sp(SCREEN * \fIsp\fP, const wchar_t \fIwc\fP); +\fBint ungetch_sp(SCREEN * \fIsp\fP, int \fIc\fP); +\fBint ungetmouse_sp(SCREEN * \fIsp\fP, MEVENT * \fIevent\fP); +\fBint use_default_colors_sp(SCREEN * \fIsp\fP); +\fBvoid use_env_sp(SCREEN * \fIsp\fP, bool \fIbf\fP); +\fBint use_legacy_coding_sp(SCREEN * \fIsp\fP, int \fIlevel\fP); \fBvoid use_tioctl_sp(SCREEN *\fIsp\fP, bool \fIbf\fP); .PP -\fBint vid_attr_sp(SCREEN* \fIsp\fP, attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP); -\fBint vid_puts_sp(SCREEN* \fIsp\fP, attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP, NCURSES_SP_OUTC \fIputc\fP); -\fBint vidattr_sp(SCREEN* \fIsp\fP, chtype \fIattrs\fP); -\fBint vidputs_sp(SCREEN* \fIsp\fP, chtype \fIattrs\fP, NCURSES_SP_OUTC \fIputc\fP); -\fBwchar_t* wunctrl_sp(SCREEN* \fIsp\fP, cchar_t *\fIwch\fP); +\fBint vid_attr_sp(SCREEN * \fIsp\fP, attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP); +\fBint vid_puts_sp(SCREEN * \fIsp\fP, attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP, NCURSES_SP_OUTC \fIputc\fP); +\fBint vidattr_sp(SCREEN * \fIsp\fP, chtype \fIattrs\fP); +\fBint vidputs_sp(SCREEN * \fIsp\fP, chtype \fIattrs\fP, NCURSES_SP_OUTC \fIputc\fP); +\fBwchar_t * wunctrl_sp(SCREEN * \fIsp\fP, cchar_t *\fIwch\fP); .PP \fB#include <form.h> .PP -\fBFORM* new_form_sp(SCREEN* \fIsp\fP, FIELD **\fIfields\fP); +\fBFORM * new_form_sp(SCREEN * \fIsp\fP, FIELD **\fIfields\fP); .PP \fB#include <menu.h> .PP -\fBMENU* new_menu_sp(SCREEN* \fIsp\fP, ITEM **\fIitems\fP); +\fBMENU * new_menu_sp(SCREEN * \fIsp\fP, ITEM **\fIitems\fP); .PP \fB#include <panel.h> .PP -\fBPANEL* ceiling_panel(SCREEN* \fIsp\fP); -\fBPANEL* ground_panel(SCREEN* \fIsp\fP); -\fBvoid update_panels_sp(SCREEN* \fIsp\fP); +\fBPANEL * ceiling_panel(SCREEN * \fIsp\fP); +\fBPANEL * ground_panel(SCREEN * \fIsp\fP); +\fBvoid update_panels_sp(SCREEN * \fIsp\fP); .PP \fB#include <term.h> .PP -\fBint del_curterm_sp(SCREEN* \fIsp\fP, TERMINAL *\fIoterm\fP); -\fBint putp_sp(SCREEN* \fIsp\fP, const char *\fIstr\fP); -\fBint restartterm_sp(SCREEN* \fIsp\fP, NCURSES_CONST char*\fIterm\fP, int \fIfiledes\fP, int *\fIerrret\fP); -\fBTERMINAL* set_curterm_sp(SCREEN* \fIsp\fP, TERMINAL*\fInterm\fP); -\fBint tgetent_sp(SCREEN* \fIsp\fP, char *\fIbp\fP, const char *\fIname\fP); -\fBint tgetflag_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP); -\fBint tgetnum_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP); -\fBchar* tgetstr_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP, char **\fIarea\fP); -\fBchar* tgoto_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP, int \fIcol\fP, int \fIrow\fP); -\fBint tigetflag_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP); +\fBint del_curterm_sp(SCREEN * \fIsp\fP, TERMINAL *\fIoterm\fP); +\fBint putp_sp(SCREEN * \fIsp\fP, const char *\fIstr\fP); +\fBint restartterm_sp(SCREEN * \fIsp\fP, NCURSES_CONST char *\fIterm\fP, int \fIfiledes\fP, int *\fIerrret\fP); +\fBTERMINAL * set_curterm_sp(SCREEN * \fIsp\fP, TERMINAL *\fInterm\fP); +\fBint tgetent_sp(SCREEN * \fIsp\fP, char *\fIbp\fP, const char *\fIname\fP); +\fBint tgetflag_sp(SCREEN * \fIsp\fP, const char *\fIcapname\fP); +\fBint tgetnum_sp(SCREEN * \fIsp\fP, const char *\fIcapname\fP); +\fBchar * tgetstr_sp(SCREEN * \fIsp\fP, const char *\fIcapname\fP, char **\fIarea\fP); +\fBchar * tgoto_sp(SCREEN * \fIsp\fP, const char *\fIcapname\fP, int \fIcol\fP, int \fIrow\fP); +\fBint tigetflag_sp(SCREEN * \fIsp\fP, const char *\fIcapname\fP); .PP -\fBint tigetnum_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP); -\fBchar* tigetstr_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP); +\fBint tigetnum_sp(SCREEN * \fIsp\fP, const char *\fIcapname\fP); +\fBchar * tigetstr_sp(SCREEN * \fIsp\fP, const char *\fIcapname\fP); \fI/* tparm_sp may use 9 long parameters rather than being variadic */ -\fBchar* tparm_sp(SCREEN* \fIsp\fP, const char *\fIstr\fP, ...); -\fBint tputs_sp(SCREEN* \fIsp\fP, const char *\fIstr\fP, int \fIaffcnt\fP, NCURSES_SP_OUTC \fIputc\fP); +\fBchar * tparm_sp(SCREEN * \fIsp\fP, const char *\fIstr\fP, ...); +\fBint tputs_sp(SCREEN * \fIsp\fP, const char *\fIstr\fP, int \fIaffcnt\fP, NCURSES_SP_OUTC \fIputc\fP); .PP \fB#include <unctrl.h> .PP -\fBNCURSES_CONST char* unctrl_sp(SCREEN* \fIsp\fP, chtype \fIch\fP); +\fBNCURSES_CONST char * unctrl_sp(SCREEN * \fIsp\fP, chtype \fIch\fP); .fi .SH DESCRIPTION This implementation can be configured to provide a set of functions which diff --git a/contrib/ncurses/man/curs_termattrs.3x b/contrib/ncurses/man/curs_termattrs.3x index dacd3b0f4d84..91c206f06bfb 100644 --- a/contrib/ncurses/man/curs_termattrs.3x +++ b/contrib/ncurses/man/curs_termattrs.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2015 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,18 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_termattrs.3x,v 1.41 2024/04/20 21:20:07 tom Exp $ -.TH curs_termattrs 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_termattrs.3x,v 1.61 2025/08/23 22:39:20 tom Exp $ +.TH curs_termattrs 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} .SH NAME \fB\%baudrate\fP, \fB\%erasechar\fP, @@ -41,88 +51,169 @@ \fB\%term_attrs\fP, \fB\%termattrs\fP, \fB\%termname\fP \- -\fIcurses\fR environment query routines +get and set terminal attributes with \fIcurses\fP .SH SYNOPSIS .nf \fB#include <curses.h> .PP \fBint baudrate(void); \fBchar erasechar(void); -\fBint erasewchar(wchar_t *\fIwc\fP); +\fBint erasewchar(wchar_t * \fIwc\fP); \fBbool has_ic(void); \fBbool has_il(void); \fBchar killchar(void); -\fBint killwchar(wchar_t *\fIwc\fP); -\fBchar *longname(void); +\fBint killwchar(wchar_t * \fIwc\fP); +\fBchar * longname(void); \fBattr_t term_attrs(void); \fBchtype termattrs(void); -\fBchar *termname(void); +\fBchar * termname(void); .fi .SH DESCRIPTION .SS baudrate -The \fBbaudrate\fP routine returns the output speed of the terminal. -The -number returned is in bits per second, for example \fB9600\fP, and is an -integer. +.B \%baudrate +returns the line speed of the terminal, +an integer value measured in bits per second, +for example +.BR 9600 "." .SS "erasechar, erasewchar" -The \fBerasechar\fP routine returns the user's current erase character. +.B \%erasechar +returns the terminal's erase character. .PP -The \fBerasewchar\fP routine stores the current erase character -in the location referenced by \fIwc\fP. -If no erase character has been defined, the routine fails -and the location referenced by \fIwc\fP is not changed. +.B \%erasewchar +stores the erase character in the location referenced by +.IR wc "." +If no erase character has been defined, +it fails and the location referenced by +.I wc +is not changed. .SS "has_ic, has_il" -The \fBhas_ic\fP routine is true if the terminal has insert- and delete- -character capabilities. +.B \%has_ic +returns +.B TRUE +if the terminal has insert- and delete-character capabilities. .PP -The \fBhas_il\fP routine is true if the terminal has insert- and delete-line -capabilities, or can simulate them using scrolling regions. -This might -be used to determine if it would be appropriate to turn on physical -scrolling using \fBscrollok\fP(3X). +.B \%has_il +returns +.B TRUE +if the terminal has insert- and delete-line capabilities, +or can simulate them using scrolling regions. +It might be used to determine whether it would be appropriate +to use \fBscrollok\fP(3X) to turn on scrolling. .SS "killchar, killwchar" -The \fBkillchar\fP routine returns the user's current line kill character. +.B \%killchar +returns the terminal's line kill character. .PP -The \fBkillwchar\fP routine stores the current line-kill character -in the location referenced by \fIwc\fP. +.B \%killwchar +stores the line-kill character in the location referenced by +.IR wc "." If no line-kill character has been defined, -the routine fails and the location referenced by \fIwc\fP is not changed. +it fails and the location referenced by +.I wc +is not changed. .SS longname -The \fBlongname\fP routine returns a pointer to a static area -containing a verbose description of the current terminal. -The maximum -length of a verbose description is 128 characters. -It is defined only -after the call to \fBinitscr\fP or \fBnewterm\fP. The area is -overwritten by each call to \fBnewterm\fP and is not restored by -\fBset_term\fP, so the value should be saved between calls to -\fBnewterm\fP if \fBlongname\fP is going to be used with multiple -terminals. +.B \%longname +returns a pointer to static storage +containing a verbose description of the terminal being managed by +.IR curses "." +The maximum length of a verbose description is 128 characters. +The storage is populated only after \fBinitscr\fP(3X) or +\fBnewterm\fP(3X) is called. +This storage is overwritten by each call to +.B \%newterm +and not restored by \fBset_term\fP(3X), +so its contents should be saved between calls to +.B \%initscr +or +.B \%newterm +if +.B \%longname +is to be used with multiple terminals. .SS "termattrs, term_attrs" If a given terminal does not support a video attribute that an -application program is trying to use, \fBcurses\fP may substitute a +application program is trying to use, +.I curses +may substitute a different video attribute for it. -The \fBtermattrs\fP and \fBterm_attrs\fP functions -return a logical \fBOR\fP of all video attributes supported by the -terminal using \fBA_\fP and \fBWA_\fP constants respectively. -This information is useful when a \fBcurses\fP program +.B \%termattrs +and +.B \%term_attrs +return a logical \*(``or\*('' of all video attributes supported by the +terminal using +.B A_ +and +.B WA_ +constants respectively. +This information is useful when a +.I curses +program needs complete control over the appearance of the screen. .SS termname -The \fBtermname\fP routine returns the terminal name used by \fBsetupterm\fP. +.B \%termname +returns the terminal name used by \fBsetupterm\fP(3X). .SH RETURN VALUE -\fBlongname\fP and \fBtermname\fP return \fBNULL\fP on error. +.B \%longname +and +.B \%termname +return +.I NULL +on error. .PP -Routines that return an integer return \fBERR\fP upon failure and \fBOK\fP -(SVr4 only specifies "an integer value other than \fBERR\fP") upon successful -completion. +Functions that return an integer return +.B ERR +upon failure and +.B OK +upon success. .SH NOTES -Note that \fBtermattrs\fP may be a macro. +.BR \%erasewchar "," +.BR \%killwchar "," +and +.B \%term_attrs +are part of +.IR \%ncurses "'s" +wide-character API, +and are not available in its non-wide-character configuration. +.PP +.B \%termattrs +may be implemented as a macro. .SH PORTABILITY -X/Open Curses, Issue 4 describes these functions. -It changes the -return type of \fBtermattrs\fP to the new type \fBattr_t\fP. -Most versions of curses truncate the result returned by \fBtermname\fP to -14 characters. +X/Open Curses Issue\ 4 describes these functions. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 535 +.PP +Most versions of +.I curses +truncate the string returned by +.I \%termname +to 14 characters. +.SH HISTORY +4BSD (1980) +introduced +.IR \%longname "." +.PP +SVr2 (1984) +added +.IR \%baudrate "," +.IR \%erasechar "," +.IR \%killchar "," +.IR \%has_ic "," +and +.IR \%has_il "." +.PP +SVr3 (1987) +supplied +.IR \%termname "." +Later that year, +SVr3.1 brought +.IR \%termattrs "." +.PP +X/Open Curses Issue\ 4 (1995) +specified +.IR \%erasewchar "," +.IR \%killwchar "," +and +.IR \%term_attrs "." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_initscr\fP(3X), diff --git a/contrib/ncurses/man/curs_termcap.3x b/contrib/ncurses/man/curs_termcap.3x index 6bd2a66a0b55..2617c8ebc32d 100644 --- a/contrib/ncurses/man/curs_termcap.3x +++ b/contrib/ncurses/man/curs_termcap.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2017,2018 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_termcap.3x,v 1.85 2024/04/20 19:13:12 tom Exp $ -.TH curs_termcap 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_termcap.3x,v 1.107 2025/08/16 19:09:12 tom Exp $ +.TH curs_termcap 3X 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -40,11 +40,59 @@ .el .ds '' "" .\} . +.ie \n(.g .ds : \: +.el .ds : \" empty +. .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. . +.\" URL hyperlink support macros from groff's "an-ext.tmac" +. +.\" Save the automatic hyphenation mode. +.\" +.\" In AT&T troff, there was no register exposing the hyphenation mode, +.\" and no way to save and restore it. Set `mH` to a reasonable value +.\" for your implementation and preference. +.de mY +. ie !\\n(.g \ +. nr mH 14 +. el \ +. do nr mH \\n[.hy] \" groff extension register +.. +. +.\" Prepare link text for mail/web hyperlinks. `MT` and `UR` call this. +.de mV +. ds mU \\$1\" +.. +. +.\" Emit hyperlink. The optional argument supplies trailing punctuation +.\" after link text. `ME` and `UE` call this. +.de mQ +. mY +. nh +<\\*(mU>\\$1 +. hy \\n(mH +. rm mU +.. +. +.\" Start URL. +.\" .UR url +.if !\n(.g \{\ +.de UR +. mV \\$1 +.. +.\} +. +.\" End URL. +.\" .UE [punctuation] +.if !\n(.g \{\ +.de UE +. mQ \\$1 +.. +.\} +. .SH NAME \fB\%PC\fP, \fB\%UP\fP, @@ -67,12 +115,12 @@ \fBchar * BC; \fB@NCURSES_OSPEED@ ospeed; .PP -\fBint tgetent(char *\fIbp\fP, const char *\fIname\fP); -\fBint tgetflag(const char *\fIid\fP); -\fBint tgetnum(const char *\fIid\fP); -\fBchar *tgetstr(const char *\fIid\fP, char **\fIarea\fP); -\fBchar *tgoto(const char *\fIcap\fP, int \fIcol\fP, int \fIrow\fP); -\fBint tputs(const char *\fIstr\fP, int \fIaffcnt\fP, int (*\fIputc\fP)(int)); +\fBint tgetent(char * \fIbp\fP, const char * \fIname\fP); +\fBint tgetflag(const char * \fIid\fP); +\fBint tgetnum(const char * \fIid\fP); +\fBchar * tgetstr(const char * \fIid\fP, char ** \fIsbuf\fP); +\fBchar * tgoto(const char * \fIcap\fP, int \fIcol\fP, int \fIrow\fP); +\fBint tputs(const char * \fIstr\fP, int \fIaffcnt\fP, int (* \fIputc\fP)(int)); .fi .SH DESCRIPTION .I \%ncurses @@ -90,10 +138,10 @@ This must be done before calling any of the other functions. It returns .RS 3 .TP 5 \" "-1" + 2n + adjust for PDF -1 +.B 1 on success, .TP -0 +.B 0 if there is no such entry (or if the matching entry describes a generic terminal, having too little information for @@ -101,20 +149,21 @@ having too little information for applications to run), and .TP -\-1 -if the \fI\%term\%info\fP database could not be found. +.B \-1 +if the +.I \%term\%info +database could not be found. .RE .PP This implementation differs from those of historical \fItermcap\fP libraries. -.RS 3 .bP .I \%ncurses ignores the buffer pointer \fIbp\fP, as do other \fItermcap\fP implementations conforming to portions of X/Open Curses now withdrawn. The BSD \fItermcap\fP library would store a copy of the terminal type -description in the area referenced by this pointer. +description in the buffer referenced by this pointer. \fI\%term\%info\fP stores terminal type descriptions in compiled form, which is not the same thing. .bP @@ -127,7 +176,6 @@ capability, nor whether the terminal type description supports an addressable cursor, a property essential for any \fIcurses\fP implementation to operate. -.RE .SS "Retrieving Capability Values" \fB\%tgetflag\fP reports the Boolean entry for \fIid\fP, or zero if it is not available. @@ -137,38 +185,40 @@ or \-1 if it is not available. .PP \fB\%tgetstr\fP returns the string entry for \fIid\fP, or -.B NULL +.I NULL if it is not available. Use \fB\%tputs\fP to output the string returned. The -.I area +.I sbuf parameter is used as follows. -.RS 3 .bP It is assumed to be the address of a pointer to a buffer managed by the calling application. .bP However, -\fI\%ncurses\fP checks to ensure that -.I area +.I \%ncurses +checks to ensure that +.I sbuf is not -.BR NULL , -and also that the resulting buffer pointer is not -.BR NULL . +.IR NULL "," +and that the pointer obtained by dereferencing +.I sbuf +is also not +.IR NULL "." If either check fails, -.I area -is ignored. +.I \%ncurses +ignores +.IR sbuf . .bP If the checks succeed, \fI\%ncurses\fP also copies the return value to the buffer pointed to by -\fIarea\fP, +\fIsbuf\fP, and the library updates -.I area +.I sbuf to point past the null character terminating this value. .bP The return value itself is an address in the terminal type description loaded into memory. -.RE .SS "Applying String Capabilities" String capabilities can be parameterized; see subsection \*(``Parameterized Strings\*('' in \fB\%terminfo\fP(5). @@ -216,24 +266,48 @@ availability. It can retrieve capabilities by either \fItermcap\fP or \fI\%term\%info\fP code. .SS "Global Variables" -The variables -\fBPC\fP, -\fBUP\fP and -\fBBC\fP -are set by \fB\%tgetent\fP to the \fI\%term\%info\fP entry's data for -\fB\%pad_char\fP, -\fB\%cursor_up\fP and -\fB\%backspace_if_not_bs\fP, +.B \%tgetent +sets the variables +.BR PC "," +.BR UP "," +and +.B BC +to the +.I \%term\%info +entry's data for +.B \%pad_char +.RB ( pad ), +.B \%cursor_up +.RB ( cuu1 ), +and +.B \%backspace_if_not_bs +.RB ( OTbs ), respectively. -\fBUP\fP is not used by \fI\%ncurses\fP. -\fBPC\fP is used by \fB\%delay_output\fP(3X). -\fBBC\fP is used by \fB\%tgoto\fP emulation. -The variable \fB\%ospeed\fP is set by \fI\%ncurses\fP using a -system-specific encoding to indicate the terminal's data rate. +.I \%ncurses +does not employ +.B cuu1 +internally. +\fB\%delay_output\fP(3X) +uses +.BR pad "," +while +.B \%tgoto +emulation uses the obsolete +.I termcap +capability +.BR bs "," +represented in +.I \%ncurses +.I \%term\%info +as \*(``OTbs\*(''. +.I \%ncurses +assigns the variable +.B \%ospeed +a system-specific value to encode the terminal's data rate. .SS "Releasing Memory" The \fItermcap\fP functions provide no means of freeing memory, -because legacy \fItermcap\fP implementations used only the buffer -areas provided by the caller via \fB\%tgetent\fP and \fB\%tgetstr\fP. +because legacy \fItermcap\fP implementations used only the storage +provided by the caller via \fB\%tgetent\fP and \fB\%tgetstr\fP. Those buffers are unused in \fI\%term\%info\fP. .PP By contrast, @@ -254,7 +328,7 @@ The \fIscreen\fP(1) program relies upon this arrangement to improve its performance. .PP An application that uses only the \fItermcap\fP functions, -not the higher level +not the higher-level .I \%curses API, could release the memory using \fB\%del_curterm\fP(3X), @@ -270,12 +344,12 @@ and are documented above. .PP \fB\%tgoto\fP returns -.B NULL +.I NULL on error. Error conditions include: .bP uninitialized state -(\fB\%tgetent\fP was not called successfully), +\%(\fBtgetent\fP was not called successfully), .bP .I cap being a null pointer, @@ -302,110 +376,149 @@ and .SH PORTABILITY These functions are no longer standardized (and the variables never were); -\fI\%ncurses\fP provides them to support legacy applications. -They should not be used in new programs. -.SS Standards -.bP -X/Open Curses, Issue 4, Version 2 (1996), -describes these functions, -marking them as -\*(``TO BE WITHDRAWN\*(''. -.bP -X/Open Curses, Issue 7 (2009) marks the \fItermcap\fP interface -(along with \fB\%vwprintw\fP and \fB\%vwscanw\fP) as withdrawn. +see section \*(``HISTORY\*('' below. +.I \%ncurses +provides them to support legacy applications; +they should not be used in new programs. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 536 .PP Neither X/Open Curses nor the SVr4 man pages documented the return -values of \fB\%tgetent\fP correctly, +values of +.I \%tgetent +correctly, though all three shown here were in fact returned ever since SVr1. In particular, an omission in the X/Open Curses specification has been misinterpreted -to mean that \fB\%tgetent\fP returns \fBOK\fP or \fBERR\fP. +to mean that +.I \%tgetent +returns +.I OK +or +.IR ERR "." Because the purpose of these functions is to provide compatibility with -the \fItermcap\fP library, -that is a defect in X/Open Curses, Issue 4, Version 2 -rather than in \fI\%ncurses\fP. +the +.I termcap +library, +that is a defect in X/Open Curses Issue\ 4 Version\ 2 +rather than in +.IR \%ncurses "." .SS "Compatibility with BSD \fItermcap\fP" -Externally visible variables are provided for support of certain -\fItermcap\fP applications. +.I \%ncurses +provides externally visible variables to support certain +.I termcap +applications. However, their correct usage is poorly documented; for example, it is unclear when reading and writing them is meaningful. In particular, -some applications are reported to declare and/or modify \fB\%ospeed\fP. +some applications are reported to declare and/or modify +.IR \%ospeed "." .PP -The constraint that only the first two characters of the \fIid\fP -parameter are used escapes many application developers. -The BSD \fItermcap\fP library did not require a trailing null character -on the capability identifier passed to \fB\%tgetstr\fP, -\fB\%tgetnum\fP, +The constraint that only the first two characters of the +.I id +parameter are looked up in the terminal database +escapes many application developers. +The BSD +.I termcap +library did not require a trailing null character +after the capability identifier passed to +.IR \%tgetstr "," +.IR \%tgetnum "," and -\fB\%tgetflag\fP. +.IR \%tgetflag "." .\" See <https://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/src/\ .\" termlib/termcap.c>. -Some applications thus assume that the \fItermcap\fP interface does not -require the trailing null character for the capability identifier. -.bP +Some applications thus assume that the +.I termcap +interface does not require the trailing null character +for the capability identifier. .I \%ncurses -disallows matches by the \fItermcap\fP interface against extended -capability names that are longer than two characters; +disallows matches by the +.I termcap +interface against extended capability names +that are longer than two characters; see \fB\%user_caps\fP(5). .PP -The BSD \fItermcap\fP function \fB\%tgetent\fP returns the text of a -\fItermcap\fP entry in the buffer passed as an argument. -This library, -like other \fI\%term\%info\fP implementations, +The BSD +.I termcap +function +.I \%tgetent +returns the text of a +.I termcap +entry in the buffer passed as an argument. +.IR \%ncurses "," +like other +.I \%term\%info +implementations, does not store terminal type descriptions as text. It sets the buffer contents to a null-terminated string. .SS "Header File" -This library includes a \fI\%termcap.h\fP header for compatibility with -other implementations, -but the header is rarely used because the other implementations are not -strictly compatible. +.I \%ncurses +includes a +.I \%termcap.h +header file for compatibility with other implementations, +but it is rarely used because the other implementations +are not mutually compatible; +see below. .SH HISTORY .\" See https://www.oreilly.com/openbook/opensources/book/kirkmck.html .\" for much BSD release history. -Bill Joy originated a forerunner of \fItermcap\fP called -\*(``ttycap\*('', +Bill Joy originated a forerunner of +.I termcap +called \*(``ttycap\*('', dated September 1977, and released in 1BSD (March 1978). .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/s7/ttycap.c .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/man7/ttycap.7 -It used many of the same function names as the later \fItermcap\fP, +It used many of the same function names as the later +.IR termcap "," such as -\fB\%tgetent\fP, -\fB\%tgetflag\fP, -\fB\%tgetnum\fP, +.IR \%tgetent "," +.IR \%tgetflag "," +.IR \%tgetnum "," and -\fB\%tgetstr\fP. +.IR \%tgetstr "." .PP A clear descendant, -the \fItermlib\fP library, +the +.I termlib +library, .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/src/termlib/ followed in 2BSD (May 1979), -adding \fB\%tgoto\fP and \fB\%tputs\fP. +adding +.I \%tgoto +and +.IR \%tputs "." The former applied at that time only to cursor positioning capabilities, .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/bin/etc/termcap thus the overly specific name. Little changed in 3BSD (late 1979) -except the addition of test programs and a \fI\%termlib\fP man page, +except the addition of test programs and a +.I termlib +man page, which documented the API shown in section \*(``SYNOPSIS\*('' above. .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/lib/\ .\" libtermlib/ .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/man/man3/\ .\" termlib.3 .PP -4BSD -(November 1980) -renamed \fItermlib\fP to \fItermcap\fP +4BSD (November 1980) +renamed +.I termlib +to +.I termcap .\" ...except in the source tree... .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\ .\" libtermlib/makefile and added another test program. -The library remained much the same though 4.3BSD +The library remained much the same through 4.3BSD (June 1986). 4.4BSD-Lite (June 1994) @@ -418,10 +531,11 @@ Function prototypes were a feature of ANSI C (1989). The library long antedated the standard and thus provided no header file declaring them. Nevertheless, -the BSD sources included two different \fI\%termcap.h\fP header files -over time. +the BSD sources included two different +.I \%termcap.h +header files over time. .bP -One was used internally by \fBjove\fP(1) from 4.3BSD onward. +One was used internally by \fIjove\fP(1) from 4.3BSD onward. .\" 2BSD became a branch retaining support for non-virtual memory .\" systems (such as the PDP-11) whereas most BSD development focused on .\" the VAX and other VM-enabled systems starting with 3BSD. @@ -435,55 +549,108 @@ One was used internally by \fBjove\fP(1) from 4.3BSD onward. .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD/usr/contrib/\ .\" jove/Makefile .\" --much too late for 2BSD (1979). -It declared global symbols for the \fItermcap\fP variables that it used. +It declared global symbols for the +.I termcap +variables that it used. .bP The other appeared in 4.4BSD-Lite Release 2 (June 1995) -as part of \fIlibedit\fP -(also known as the \fI\%edit\%line\fP library). +as part of +.I libedit +(also known as the +.I \%edit\%line +library). CSRG source history shows that this was added in mid-1992. -The \fIlibedit\fP header file was used internally as a convenience for -compiling the \fI\%edit\%line\fP library. +The +.I libedit +header file was used internally as a convenience +for compiling the +.I \%edit\%line +library. It declared function prototypes, but no global variables. -This header file was added to NetBSD's \fItermcap\fP library in -mid-1994. +NetBSD's +.I termcap +library added this header file in mid-1994. .PP Meanwhile, -GNU \fItermcap\fP began development in 1990. -Its first release (1.0) in 1991 included a \fI\%termcap.h\fP header. -Its second (1.1) in September 1992 modified the header to use -\fIconst\fP for the function prototypes in the header where one would -expect the parameters to be read-only. -BSD \fItermcap\fP did not. -The prototype for \fB\%tputs\fP also differed, +GNU +.I termcap +began development in 1990. +Its first release (1.0) in 1991 included a +.I \%termcap.h +header file. +Its second (1.1) release in September 1992 modified the file to use +.I const +for the function prototypes in the header where one would +expect parameters to be read-only. +BSD +.I termcap +did not. +The prototype for +.I \%tputs +also differed, but in that instance, -it was \fIlibedit\fP that differed from BSD \fItermcap\fP. +it was +.I libedit +that differed from BSD +.IR termcap "." .PP -GNU \fItermcap\fP 1.3 was bundled with \fIbash\fP(1) in mid-1993 to -support the \fI\%readline\fP(3) library. +GNU \fIbash\fP(1) has bundled GNU +.I termcap +1.3 since mid-1993 to support its \fI\%readline\fP(3) library, +and continues to use it if configured to do so. .PP -\fI\%ncurses\fP 1.8.1 +.I \%ncurses +1.8.1 (November 1993) -provided a \fI\%termcap.h\fP file. -It reflected influence from GNU \fItermcap\fP and \fBemacs\fP(1) -(rather than \fBjove\fP(1)), +provided a +.I \%termcap.h +file. +It reflected influence from GNU +.I termcap +and \fI\%emacs\fP(1) +(rather than \fIjove\fP(1)), providing the following interface: .bP -global symbols used by \fIemacs\fP, +global symbols used by +.IR \%emacs "," .bP -\fIconst\fP-qualified function prototypes, +.IR const -qualified +function prototypes, and .bP -a prototype for \fBtparam\fP, -a GNU \fItermcap\fP feature. +a prototype for +.IR tparam "," +a GNU +.I termcap +feature. .PP Later (in mid-1996) -the \fB\%tparam\fP function was removed from \fI\%ncurses\fP. +the +.I tparam +function was removed from +.IR \%ncurses "." Any two of the four implementations thus differ, -and programs that intend to work with all \fItermcap\fP library -interfaces must account for that fact. +and programs that intend to work with all +.I termcap +library interfaces must account for that fact. +.PP +X/Open Curses Issue\ 4, +Version\ 2 (1996), +describes these functions, +marking them as +\*(``TO BE WITHDRAWN\*(''. +.PP +X/Open Curses Issue\ 7 (2009) withdrew the +.I termcap +interface +(along with the +.I \%vwprintw +and +.I \%vwscanw +functions). .SH BUGS If you call \fB\%tgetstr\fP to fetch .B \%column_address @@ -510,15 +677,14 @@ users can be surprised. .IP \(bu 4 \fB\%tputs("50")\fP in a \fI\%term\%info\fP system transmits \*(``50\*('' rather than busy-waiting for 50 milliseconds. -.IP \(bu 4 +.IP However, if \fI\%ncurses\fP is configured to support \fItermcap\fP, it may also have been configured to support BSD-style padding. -.IP In that case, \fB\%tputs\fP inspects strings passed to it, looking for digits at the beginning of the string. -.IP +.IP \(bu 4 \fB\%tputs("50")\fP in a \fItermcap\fP system may busy-wait for 50 milliseconds rather than transmitting \*(``50\*(''. .PP @@ -533,15 +699,17 @@ One consequence is that \fItermcap\fP applications assume that .RB ( sgr0 ) capability) does not reset the alternate character set. -\fI\%ncurses\fP checks for, -and modifies the data shared with, -the \fItermcap\fP interface to accommodate the latter's limitation in -this respect. +\fI\%ncurses\fP inspects the data shared with the +.I termcap +interface and modifies it as necessary +to accommodate the latter's limitation in this respect. .SH "SEE ALSO" +.UR https://\*:invisible\-\*:island\*:.net/\*:ncurses/\*:tctest\*:.html +.I "TCTEST \(em A Termcap Test Utility" +.UE +.PP \fB\%curses\fP(3X), \fB\%curs_terminfo\fP(3X), \fB\%putc\fP(3), \fB\%term_variables\fP(3X), \fB\%terminfo\fP(5) -.PP -https://invisible\-island.net/ncurses/tctest.html diff --git a/contrib/ncurses/man/curs_terminfo.3x b/contrib/ncurses/man/curs_terminfo.3x index 10d1fa78b6b4..9a687182512c 100644 --- a/contrib/ncurses/man/curs_terminfo.3x +++ b/contrib/ncurses/man/curs_terminfo.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_terminfo.3x,v 1.136 2024/04/14 00:14:40 tom Exp $ -.TH curs_terminfo 3X 2024-04-13 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_terminfo.3x,v 1.176 2025/11/12 01:06:36 tom Exp $ +.TH curs_terminfo 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -48,7 +48,6 @@ . .SH NAME \fB\%del_curterm\fP, -\fB\%mvcur\fP, \fB\%putp\fP, \fB\%restartterm\fP, \fB\%set_curterm\fP, @@ -71,7 +70,7 @@ \fB#include <curses.h> \fB#include <term.h> .PP -\fBTERMINAL *cur_term; +\fBTERMINAL * cur_term; .PP \fBconst char * const boolnames[]; \fBconst char * const boolcodes[]; @@ -83,40 +82,40 @@ \fBconst char * const strcodes[]; \fBconst char * const strfnames[]; .PP -\fBint setupterm(const char *\fIterm\fP, int \fIfiledes\fP, int *\fIerrret\fP); -\fBTERMINAL *set_curterm(TERMINAL *\fInterm\fP); -\fBint del_curterm(TERMINAL *\fIoterm\fP); -\fBint restartterm(const char *\fIterm\fP, int \fIfiledes\fP, int *\fIerrret\fP); +\fBint setupterm(const char * \fIterm\fP, int \fIfiledes\fP, int * \fIerrret\fP); +\fBTERMINAL * set_curterm(TERMINAL * \fInterm\fP); +\fBint del_curterm(TERMINAL * \fIoterm\fP); +\fBint restartterm(const char * \fIterm\fP, int \fIfiledes\fP, int * \fIerrret\fP); .PP -\fBchar *tparm(const char *\fIstr\fP, \fR.\|.\|.\fP); +\fBchar * tparm(const char * \fIstr\fP, \fR.\|.\|.\fP); \fI/* or */ -\fBchar *tparm(const char *\fIstr\fP, long \fIp1\fP \fR.\|.\|.\fP \fBlong\fP \fIp9\fP); +\fBchar * tparm(const char * \fIstr\fP, long \fIp1\fP \fR.\|.\|.\fP \fBlong\fP \fIp9\fP); .PP -\fBint tputs(const char *\fIstr\fP, int \fIaffcnt\fP, int (*\fIputc\fP)(int)); -\fBint putp(const char *\fIstr\fP); +\fBint tputs(const char * \fIstr\fP, int \fIaffcnt\fP, int (* \fIputc\fP)(int)); +\fBint putp(const char * \fIstr\fP); .PP -\fBint vidputs(chtype \fIattrs\fP, int (*\fIputc\fP)(int)); +\fBint vidputs(chtype \fIattrs\fP, int (* \fIputc\fP)(int)); \fBint vidattr(chtype \fIattrs\fP); -\fBint vid_puts(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP, int (*\fIputc\fP)(int)); -\fBint vid_attr(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP); +\fBint vid_puts(attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP, int (* \fIputc\fP)(int)); +\fBint vid_attr(attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP); .PP -\fBint mvcur(int \fIoldrow\fP, int \fIoldcol\fP, int \fInewrow\fP, int \fInewcol\fP); +\fBint tigetflag(const char * \fIcap-code\fP); +\fBint tigetnum(const char * \fIcap-code\fP); +\fBchar * tigetstr(const char * \fIcap-code\fP); .PP -\fBint tigetflag(const char *\fIcap-code\fP); -\fBint tigetnum(const char *\fIcap-code\fP); -\fBchar *tigetstr(const char *\fIcap-code\fP); -.PP -\fBchar *tiparm(const char *\fIstr\fP, \fR.\|.\|.\fP); +\fBchar * tiparm(const char * \fIstr\fP, \fR.\|.\|.\fP); .PP \fI/* extensions */ -\fBchar *tiparm_s(int \fIexpected\fP, int \fImask\fP, const char *\fIstr\fP, ...); -\fBint tiscan_s(int *\fIexpected\fP, int *\fImask\fP, const char *\fIstr\fP); +\fBchar * tiparm_s(int \fIexpected\fP, int \fImask\fP, const char * \fIstr\fP, .\|.\|.); +\fBint tiscan_s(int * \fIexpected\fP, int * \fImask\fP, const char * \fIstr\fP); .PP \fI/* deprecated */ -\fBint setterm(const char *\fIterm\fP); +\fBint setterm(const char * \fIterm\fP); .fi .SH DESCRIPTION -These low-level functions must be called by programs that deal directly +These lower-level functions of the +.I curses +standard must be called by programs that deal directly with the .I \%term\%info database to handle certain terminal capabilities, @@ -134,92 +133,75 @@ Capability names and codes use the POSIX portable character set. Capability string values have no associated encoding; they are strings of 8-bit characters. .SS Initialization -Initially, -\fB\%setupterm\fP should be called. -The high-level -.I curses -functions \fB\%initscr\fP and \fB\%newterm\fP call \fB\%setupterm\fP to -initialize the low-level set of terminal-dependent variables listed in +Call +.B \%setupterm +from your application to have +.I \%term\%info +manage the terminal device; +this action initializes the terminal-dependent variables listed in \fB\%term_variables\fP(3X). -.PP -Applications can use the terminal capabilities either directly -(via header definitions), -or by special functions. -The header files -.I \%curses.h -and -.I \%term.h -should be included -(in that order) -to get the definitions for these strings, -numbers, -and flags. -.PP -The +(A +.I curses +application calling \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X) achieves +the same result.) +Applications can use the terminal capabilities either directly, +by object definitions corresponding to capability names and codes +(see \fB\%term_variables\fP(3X)) +or by calling the functions documented here. +.B \%setupterm +initializes the .I \%term\%info variables .B \%lines and .B \%columns -are initialized by \fB\%setupterm\fP as follows. -.bP -If \fB\%use_env(FALSE)\fP has been called, -values for -.B \%lines -and -.B \%columns -specified in -.I \%term\%info -are used. -.bP -Otherwise, -if the environment variables -.I LINES -and -.I \%COLUMNS -exist, -their values are used. -If these environment variables do not exist and the program is running -in a window, -the current window size -is used. -Otherwise, -if the environment variables do not exist, -the values for -.B \%lines -and -.B \%columns -specified in the -.I \%term\%info -database are used. +as described in \fB\%use_env\fP(3X). .PP -Parameterized strings should be passed through \fB\%tparm\fP to -instantiate them. +Pass parameterized string capability values through +.B \%tparm +to instantiate them. All .I \%term\%info strings -(including the output of \fB\%tparm\fP) -should be sent to the terminal device with \fB\%tputs\fP or -\fB\%putp\fP. -Call \fB\%reset_shell_mode\fP to restore the terminal modes before -exiting; -see \fB\%curs_kernel\fP(3X). +(including the output of +.BR \%tparm ")" +should be sent to the terminal device with +.B \%tputs +or +.BR \%putp "." +Call +\fB\%reset_shell_mode\fP(3X) to restore the terminal modes before +exiting. +(A +.I curses +application calling \fB\%endwin\fP(3X) achieves the same result.) +.\" XXX: What should a "pure" terminfo application that wants to link +.\" only with libtinfo, and not libcurses, do? .PP -Programs that use -cursor addressing should +Programs that use cursor addressing should emit certain capabilities +at specific times. +Specifically, +output .bP -output \fB\%enter_ca_mode\fP upon startup and +.B \%enter_ca_mode +upon startup, +and .bP -output \fB\%exit_ca_mode\fP before exiting. +.B \%exit_ca_mode +before exiting. .PP Programs that execute shell subprocesses should .bP -call \fB\%reset_shell_mode\fP and -output \fB\%exit_ca_mode\fP before the shell -is called and +call \fB\%reset_shell_mode\fP(3X) and output +.B \%exit_ca_mode +before the shell is called, +and .bP -output \fB\%enter_ca_mode\fP and -call \fB\%reset_prog_mode\fP after returning from the shell. +output +.B \%enter_ca_mode +and call \fB\%reset_prog_mode\fP(3X) after returning from the shell. +.\" XXX: What should a "pure" terminfo application that wants to link +.\" only with libtinfo, and not libcurses, do? .PP \fB\%setupterm\fP reads in the .I \%term\%info @@ -228,7 +210,7 @@ initializing the .I \%term\%info structures, but does not set up the output virtualization structures used by -.IR curses . +.IR curses "." Its parameters follow. .RS 3 .TP 5 @@ -250,9 +232,9 @@ terminal, passing an output .I stream rather than a -.IR descriptor . +.IR descriptor "." In -.IR curses , +.IR curses "," the two are the same because \fB\%newterm\fP calls \fB\%setupterm\fP, passing the file descriptor derived from its output stream parameter. .TP 5 @@ -262,12 +244,14 @@ the caller. If .I errret is not null, -then \fB\%setupterm\fP returns +then +.B \%setupterm +returns .B OK or .B ERR and stores a status value in the integer pointed to by -.IR errret . +.IR errret "." A return value of .B OK combined with status of @@ -280,17 +264,16 @@ If .B ERR is returned, examine -.I errret: +.IR errret "." .RS .TP 5 .B 1 -means that the terminal is hardcopy, +means that the terminal is a hard-copy type +(lacks destructive backspace), and cannot be used for .I curses applications. -.IP -\fB\%setupterm\fP determines if the entry is a hardcopy type by -checking the +The library determines this fact by checking the terminal type's .B \%hardcopy .RB ( hc ) capability. @@ -302,8 +285,8 @@ having too little information for .I curses applications to run. .IP -\fB\%setupterm\fP determines if the entry is a generic type by -checking the +.B \%setupterm +determines if the entry is a generic type by checking the .B \%generic_type .RB ( gn ) capability. @@ -317,84 +300,102 @@ database could not be found. If .I errret is null, -\fB\%setupterm\fP reports an error message upon finding an error and -exits. +.B \%setupterm +reports an error message upon finding an error and exits. Thus, the simplest call is: .RS .IP .EX -setupterm((char *)0, 1, (int *)0); +setupterm((char *) NULL, 1, (int *) NULL); .EE .RE .IP which uses all the defaults and sends the output to -.BR stdout . +.IR stdout "." .RE .\" ******************************************************************** .SS "The Terminal State" -\fB\%setupterm\fP stores its information about the terminal in a +.B \%setupterm +stores its information about the terminal in a .I \%TERMINAL -structure pointed to by the global variable \fB\%cur_term\fP. +structure pointed to by the global variable +.BR \%cur_term "." If it detects an error, or decides that the terminal is unsuitable (hardcopy or generic), it discards this information, -making it not available to applications. +making it unavailable to applications. .PP -If \fB\%setupterm\fP is called repeatedly for the same terminal type, -it will reuse the information. -It maintains only one copy of a given terminal's capabilities in memory. -If it is called for different terminal types, -\fB\%setupterm\fP allocates new storage for each set of terminal -capabilities. +If +.B \%setupterm +is called repeatedly for the same terminal type, +it reuses the information. +It maintains only one copy of a given type's capabilities in memory. +If called for different types, +.B \%setupterm +allocates new storage for each set of terminal capabilities. .PP -\fB\%set_curterm\fP sets \fB\%cur_term\fP to -.IR \%nterm , -and makes all of the +.B \%set_curterm +sets +.B \%cur_term +to +.IR \%nterm "," +making all of the .I \%term\%info Boolean, numeric, -and string variables use the values from -.IR \%nterm . -It returns the old value of \fB\%cur_term\fP. +and string capabilities use the values from +.IR \%nterm "." +It returns the old value of +.BR \%cur_term "." .PP -\fB\%del_curterm\fP frees the space pointed to by -.I \%oterm -and makes it available for further use. +.B \%del_curterm +releases the memory pointed to by +.IR \%oterm "." If .I \%oterm is -the same as \fB\%cur_term\fP, +the same as +.BR \%cur_term "," references to any of the .I \%term\%info Boolean, numeric, -and string variables thereafter may refer to invalid memory locations -until another \fB\%setupterm\fP has been called. +and string capabilities thereafter may refer to invalid memory locations +until +.B \%setupterm +is called again. .PP -\fB\%restartterm\fP is similar to \fB\%setupterm\fP and \fB\%initscr\fP, -except that it is called after restoring memory to a previous state +.B \%restartterm +is similar to +.BR \%setupterm "," +but is intended for use after restoring program memory +to a previous state (for example, -when reloading a game saved as a core image dump). -\fB\%restartterm\fP assumes that the windows and the input and output -options are the same as when memory was saved, -but the terminal type and baud rate may be different. +when reloading an application that has been suspended from one terminal +session and restored in another). +.B \%restartterm +assumes that the display dimensions +and the input and output options are the same as when memory was saved, +but the terminal type and line speed may differ. Accordingly, -\fB\%restartterm\fP saves various terminal state bits, -calls \fB\%setupterm\fP, -and then restores the bits. +.B \%restartterm +saves relevant terminal state, +calls +.BR \%setupterm "," +then restores that state. .\" ******************************************************************** .SS "Formatting Output" \fB\%tparm\fP instantiates the string .I str with parameters -.IR pi . -A pointer is returned to the result of +.IR pi "." +It returns a pointer to a character string representing .I str -with the parameters applied. -Application developers should keep in mind these quirks of the -interface: +with the parameters applied to \*(``%\*('' expressions within. +.\" XXX: Whose responsibility is it to free that string? +Application developers should keep in mind some quirks of the interface. .bP Although \fB\%tparm\fP's actual parameters may be integers or strings, the prototype expects @@ -413,67 +414,79 @@ it is interpreted by \fB\%tputs\fP. The capability string is null-terminated. Use \*(``\e200\*('' where an ASCII NUL is needed in the output. .PP -\fB\%tiparm\fP is a newer form of \fB\%tparm\fP which uses +\fB\%tiparm\fP is a newer form of \fB\%tparm\fP that uses .I \%stdarg.h -rather than a fixed-parameter list. +rather than a fixed-length parameter list. Its numeric parameters are .IR int s rather than .IR long "s." .PP -Both \fB\%tparm\fP and \fB\%tiparm\fP assume that the application passes -parameters consistent with the terminal description. -Two extensions are provided as alternatives to deal with untrusted data. +.B \%tparm +and +.B \%tiparm +assume that the application +passes parameters consistent with the terminal description. +.I \%ncurses +provides two extensions as alternatives to deal with untrusted data. .bP -\fB\%tiparm_s\fP is an extension which is a safer formatting function -than \fB\%tparm\fR or \fB\%tiparm\fR, +The +.B \%tiparm_s +extension is a safer formatting function than +.B \%tparm +or +.BR \%tiparm "," because it allows the developer to tell the .I curses library how many parameters to expect in the parameter list, and which may be string parameters. .IP -The \fImask\fP parameter has one bit set for each of the parameters +The +.I mask +parameter has one bit set for each of the parameters (up to 9) passed as .I char pointers rather than numbers. .bP -The extension \fB\%tiscan_s\fP allows the application to inspect a -formatting capability to see what the +The extension +.B \%tiscan_s +allows the application +to inspect a formatting capability to see what the .I curses library would assume. .\" ******************************************************************** .SS "Output Functions" -String capabilities can contain padding information, +String capabilities can contain +.IR padding "," a time delay (accommodating performance limitations of hardware terminals) -expressed as \fB$<\fIn\fB>\fR, -where \fIn\fP is a nonnegative integral count of milliseconds. -If \fIn\fP exceeds 30,000 +expressed as +.BI $< n >\c +, +where +.I n +is a nonnegative integral count of milliseconds. +If +.I n +exceeds 30,000 (thirty seconds), -it is capped at that value. +.I \%ncurses +caps it at that value. .PP -\fB\%tputs\fP interprets time-delay information in the string +.B \%tputs +interprets time delays in the string .I str -and outputs it, -executing the delays: +and acts upon them. .bP The .I str parameter must be a .I \%term\%info -string variable or the return value of -\fB\%tparm\fP, -\fB\%tiparm\fP, -\fB\%tgetstr\fP, -or \fB\%tgoto\fP. -.IP -The \fB\%tgetstr\fP and \fB\%tgoto\fP functions are part of the -.I termcap -interface, -which happens to share these function names with the -.I \%term\%info -API. +string capability or the return value of +.B \%tparm +or +.BR \%tiparm "." .bP .I affcnt is the number of lines affected, @@ -486,9 +499,9 @@ is a .IR \%putchar -like function to which the characters are passed, one at a time. -.IP -If \fB\%tputs\fP processes a time-delay, -it uses the \fB\%delay_output\fP(3X) function, +.PP +.B \%tputs +processes each time delay with the \fB\%delay_output\fP(3X) function, routing any resulting padding characters through this function. .PP \fB\%putp\fR calls @@ -496,19 +509,19 @@ routing any resulting padding characters through this function. .IB str ", 1, putchar)\c" \*(''. The output of \fB\%putp\fP always goes to -.BR stdout , +.IR stdout "," rather than the .I \%file\%des specified in \fB\%setupterm\fP. .PP \fB\%vidputs\fP displays the string on the terminal in the video attribute mode -.IR attrs , +.IR attrs "," which is any combination of the attributes listed in \fB\%curses\fP(3X). The characters are passed to the .IR \%putchar -like function -.IR putc . +.IR putc "." .PP \fB\%vidattr\fP is like \fB\%vidputs\fP, except that it outputs through \fI\%putchar\fP(3). @@ -519,20 +532,20 @@ and correspond to .B \%vidattr and -.BR \%vidputs , +.BR \%vidputs "," respectively. They use multiple parameters to represent the character attributes and color; namely, .bP -.IR \%attrs , +.IR \%attrs "," of type -.IR \%attr_t , +.IR \%attr_t "," for the attributes and .bP -.IR pair , +.IR pair "," of type -.IR short , +.IR short "," for the color pair number. .PP Use the attribute constants prefixed with @@ -540,7 +553,7 @@ Use the attribute constants prefixed with with .B \%vid_attr and -.BR \%vid_puts . +.BR \%vid_puts "." .PP X/Open Curses reserves the .I opts @@ -548,44 +561,39 @@ argument for future use, saying that applications must provide a null pointer for that argument; but see section \*(``EXTENSIONS\*('' below. .PP -\fB\%mvcur\fP provides low-level cursor motion. -It takes effect immediately -(rather than at the next refresh). -Unlike the other low-level output functions, -which either write to the standard output or pass an output function -parameter, -\fB\%mvcur\fP uses an output file descriptor derived from -the output stream parameter of \fB\%newterm\fP(3X). -.PP -While \fB\%putp\fP and \fB\%mvcur\fP are low-level functions that do not -use high-level +While +.B \%putp +is a lower-level function +that does not use higher-level .I curses state, .I \%ncurses -declares them in +declares it in .I \%curses.h -because System\ V did this +because System\ V did so (see section \*(``HISTORY\*('' below). .\" ******************************************************************** .SS "Terminal Capability Functions" -\fB\%tigetflag\fP, -\fB\%tigetnum\fP, -and \fB\%tigetstr\fP return the value of the capability corresponding to +.BR \%tigetflag "," +.BR \%tigetnum "," +and +.B \%tigetstr +return the value of the capability corresponding to the .I \%term\%info -.IR cap-code , +.IR cap-code "," such as -.BR xenl , +.BR xenl "," passed to them. The .I cap-code -for each capability is given in the table column entitled -.I cap-code -code in the capabilities section of \fB\%terminfo\fP(5). +for each capability is given in the table column of that name +in the \*(``Capabilities\*('' section of \fB\%terminfo\fP(5). .PP These functions return special values to denote errors. .PP -\fB\%tigetflag\fP returns +.B \%tigetflag +returns .TP .B \-1 if @@ -596,7 +604,8 @@ or .B 0 if it is canceled or absent from the terminal description. .PP -\fB\%tigetnum\fP returns +.B \%tigetnum +returns .TP .B \-2 if @@ -607,7 +616,8 @@ or .B \-1 if it is canceled or absent from the terminal description. .PP -\fB\%tigetstr\fP returns +.B \%tigetstr +returns .TP .B "(char *)\-1" if @@ -615,7 +625,7 @@ if is not a string capability, or .TP -.B 0 +.B NULL if it is canceled or absent from the terminal description. .\" ******************************************************************** .SS "Terminal Capability Names" @@ -628,9 +638,9 @@ and .bP the long \fI\%term\%info\fP names (\*(``fnames\*('') .PP -for each of the predefined +for each standard .I \%term\%info -variables: +capability name. .PP .RS .nf @@ -646,11 +656,11 @@ terminal description. As a side effect, it sets \fB\%cur_term\fP to point to this memory. If an application calls -.IP +.RS .EX del_curterm(cur_term); .EE -.PP +.RE the memory will be freed. .PP The formatting functions \fB\%tparm\fP and \fB\%tiparm\fP extend the @@ -684,11 +694,16 @@ Normally they do not free this memory, but it is possible to do that using the \fB\%delscreen\fP(3X) function. .\" ******************************************************************** .SH RETURN VALUE -X/Open Curses defines no failure conditions. +Functions that return integers return +.B ERR +upon failure and +.B OK +upon success. +.PP In -.IR \%ncurses , +.IR \%ncurses "," .TP 5 -.B del_curtem +.B del_curterm fails if its terminal parameter is null. .TP 5 .B putp @@ -696,15 +711,16 @@ calls \fB\%tputs\fP, returning the same error codes. .TP 5 .B restartterm -fails if the associated call to \fB\%setupterm\fP returns an error. +fails if the associated call to \fB\%setupterm\fP returns +.BR ERR "." .TP 5 .B setupterm fails if it cannot allocate enough memory, or create the initial windows -.RB ( \%stdscr , -.BR \%curscr , +.RB \%( stdscr , +.BR \%curscr "," and -.BR \%newscr ) +.BR \%newscr ")." Other error conditions are documented above. .TP 5 .B tparm @@ -738,12 +754,12 @@ and unlike the other wide-character functions, is also provided in the non-wide-character configuration. .\" ******************************************************************** .SH EXTENSIONS -The functions marked as extensions were designed for -.IR \%ncurses , +The functions marked as extensions originated in +.IR \%ncurses "," and are not found in SVr4 -.IR curses , +.IR curses "," 4.4BSD -.IR curses , +.IR curses "," or any other previous .I curses implementation. @@ -752,57 +768,84 @@ implementation. allows .I opts to be a pointer to -.IR int , +.IR int "," which overrides the .I pair .RI ( short ) argument. .\" ******************************************************************** .SH PORTABILITY -\fB\%setterm\fP is not described by X/Open and must be considered -non-portable. -All other functions are as described by X/Open. +Except for +.IR \%setterm "," +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value +except where \*(``otherwise noted\*('' +as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 539 +.SS "Header Files" +On legacy +.I curses +systems, +include +.I \%curses.h +and +.I \%term.h +in that order +to make visible the definitions of the string arrays +storing the capability names and codes. .SS "Compatibility Macros" -This implementation provides a few macros for compatibility with systems -before SVr4 +.I \%ncurses +implements a few macros for early System\ V +.I curses +compatibility (see section \*(``HISTORY\*('' below). They include -\fB\%Bcrmode\fP, -\fB\%Bfixterm\fP, -\fB\%Bgettmode\fP, -\fB\%Bnocrmode\fP, -\fB\%Bresetterm\fP, -\fB\%Bsaveterm\fP, +.IR \%crmode "," +.IR \%fixterm "," +.IR \%gettmode "," +.IR \%nocrmode "," +.IR \%resetterm "," +.IR \%saveterm "," and -\fB\%Bsetterm\fP. +.IR \%setterm "." .PP In SVr4, these are found in -.IR \%curses.h , -but except for \fB\%setterm\fP, +.IR \%curses.h "," +but except for +.IR \%setterm "," are likewise macros. The one function, -\fB\%setterm\fP, +.IR \%setterm "," is mentioned in the manual page. -It further notes that \fB\%setterm\fP was replaced by \fB\%setupterm\fP, +It further notes that +.I \%setterm +was replaced by +.IR \%setupterm "," stating that the call .RS .EX -setupterm(\fIterm\fP, 1, (int *)0) +.RI setupterm( term ", 1, (int *)0)" .EE .RE -provides the same functionality as \fB\%setterm(\fIterm\fB)\fR, -discouraging the latter for new programs. -.I \%ncurses -implements each of these symbols as macros for BSD -.I curses -compatibility. +provides the same functionality as +.RS +.EX +.RI setterm( term ) +.EE +.RE +and discouraging the latter for new programs. .SS "Legacy Data" -\fB\%setupterm\fP copies the terminal name to the array \fB\%ttytype\fP. -This is not part of X/Open Curses, +.I \%setupterm +copies the terminal name to the array +.IR \%ttytype "." +This behavior is not specified by X/Open Curses, but is assumed by some applications. .PP -Other implementions may not declare the capability name arrays. +Other implementations may not declare the capability name arrays. Some provide them without declaring them. X/Open Curses does not specify them. .PP @@ -811,29 +854,39 @@ as defined by .RB \%\*(`` "@TIC@ \-x" \*('', are not stored in the arrays described here. .SS "Output Buffering" -Older versions of \fI\%ncurses\fP assumed that the file descriptor -passed to \fB\%setupterm\fP from \fB\%initscr\fP or \fB\%newterm\fP uses -buffered I/O, -and would write to the corresponding stream. +Older versions of +.I \%ncurses +assumed that the file descriptor passed to +.I \%setupterm +from +.I \%initscr +or +.I \%newterm +used buffered I/O, +and wrote to the corresponding +.I stdio +stream. In addition to the limitation that the terminal was left in block-buffered mode on exit (like System\ V -.IR curses ), +.IR curses ")," it was problematic because .I \%ncurses did not allow a reliable way to clean up on receiving -.BR SIGTSTP . +.IR SIGTSTP "." .PP -The current version (ncurses6) +.I \%ncurses +.RI 6. x uses output buffers managed directly by -.IR \%ncurses . -Some of the low-level functions described in this manual page write -to the standard output. -They are not signal-safe. -The high-level functions in +.IR \%ncurses "." +The lower-level functions described here +that write to the terminal device +do so via the standard output stream; +they thus are not signal-safe. +The higher-level functions in .I \%ncurses -employ alternate versions of these functions using the more reliable -buffering scheme. +employ alternate versions of these functions +using a more reliable buffering scheme. .SS "Function Prototypes" The X/Open Curses prototypes are based on the SVr4 .I curses @@ -844,19 +897,23 @@ standardized in the late 1980s. X/Open Curses uses .I \%const less effectively than a later design might, -sometimes applying it needlessly to values that are already constant, -and in most cases overlooking parameters that normally would use -.IR \%const . +sometimes applying it needlessly to function parameters +that are passed by value +(and therefore copied), +and in most cases overlooking parameters +that normally would benefit from +.IR \%const "." Passing .IR \%const -qualified parameters to functions that do not declare them .I \%const may prevent the program from compiling. On the other hand, -\*(``writable strings\*('' are an obsolescent feature. +\*(``writable strings\*('' are an obsolescent C language feature. .IP As an extension, -this implementation can be configured to change the function prototypes +.I \%ncurses +can be configured to change the function prototypes to use the .I \%const keyword. @@ -864,41 +921,55 @@ The .I \%ncurses ABI 6 enables this feature by default. .bP -X/Open Curses prototypes \fB\%tparm\fP with a fixed number of -parameters, +X/Open Curses prototypes +.I \%tparm +with a fixed number of parameters, rather than a variable argument list. .IP -This implementation uses a variable argument list, +.I \%ncurses +uses a variable argument list, but can be configured to use the fixed-parameter list. Portable applications should provide nine parameters after the format; zeroes are fine for this purpose. .IP In response to review comments by Thomas E. Dickey, -X/Open Curses Issue 7 proposed the \fB\%tiparm\fP function in mid-2009. +X/Open Curses Issue\ 7 proposed the +.I \%tiparm +function in mid-2009. .IP -While \fB\%tiparm\fP is always provided in \fI\%ncurses\fP, -the older form is only available as a build-time configuration option. +While +.I \%tiparm +is always provided in +.IR \%ncurses "," +the older form is available only as a build-time configuration option. If not specially configured, -\fB\%tparm\fP is the same as \fB\%tiparm\fP. +.I \%tparm +is the same as +.IR \%tiparm "." .PP -Both forms of \fB\%tparm\fP have drawbacks: +Both forms of +.I \%tparm +have drawbacks. .bP -Most of the calls to \fB\%tparm\fP use only one or two parameters. +Most calls to +.I \%tparm +require only one or two parameters. Passing nine on each call is awkward. .IP Using .I long for the numeric parameter type is a workaround to make the parameter use -the same amount of stack as a pointer. -That approach dates back to the mid-1980s, +the same amount of stack memory as a pointer. +That approach dates to the mid-1980s, before C was standardized. -Since then, -there is a standard -(and pointers are not required to fit in a -.IR long ). +Since ANSI\ C (1989), +C language standards do not require a pointer to fit in a +.IR long ")." .bP Providing the right number of parameters for a variadic function -such as \fB\%tiparm\fP can be a problem, +such as +.I \%tiparm +can be a problem, in particular for string parameters. However, only a few @@ -907,21 +978,35 @@ capabilities use string parameters (for instance, the ones used for programmable function keys). .IP -The \fI\%ncurses\fP library checks usage of these capabilities, -and returns an error if the capability mishandles string parameters. +The +.I \%ncurses +library checks usage of these capabilities, +and returns +.I ERR +if the capability mishandles string parameters. But it cannot check if a calling program provides strings in the right -places for the \fB\%tparm\fP calls. +places for the +.I \%tparm +calls. .IP -The \fB\%@TPUT@\fR(1) program checks its use of these capabilities with -a table, -so that it calls \fB\%tparm\fP correctly. +.IR \%ncurses 's +\fB\%@TPUT@\fR(1) checks its use of these capabilities with a table, +so that it calls +.I \%tparm +correctly. .SS "Special \fITERM\fP treatment" -If configured to use the terminal driver, -.\" XXX: as opposed to the Unix terminal driver, termio(s)? +If +.I \%ncurses +is configured to use a terminal driver +that does not employ the POSIX +.I \%termios +API, as with the MinGW port, .bP -\fB\%setupterm\fP interprets a missing/empty \fITERM\fP variable as the -special value \*(``unknown\*(''. +.I \%setupterm +interprets a missing or empty +.I TERM +variable as the special value \*(``unknown\*(''. .IP SVr4 .I curses @@ -935,69 +1020,47 @@ capability, while the latter does not. A generic terminal is unsuitable for full-screen applications. .bP -\fB\%setupterm\fP allows explicit use of the -the windows console driver by checking if \fB$TERM\fP is set to -\*(``#win32con\*('' or an abbreviation of that string. +.I \%setupterm +allows explicit use of the Microsoft Windows console driver by checking +whether the +.I TERM +environment variable has the value \*(``#win32con\*('' +or an abbreviation of that string. .SS "Other Portability Issues" In SVr4, -\fB\%set_curterm\fP returns an -.IR int , -.B OK +.I \%set_curterm +returns an +.IR int "," +.I OK or -.BR ERR . +.IR ERR "." We have chosen to implement the X/Open Curses semantics. .PP In SVr4, -the third argument of \fB\%tputs\fP has the type -.RB \*(`` "int (*putc)(char)" \*(''. +the third argument of +.I \%tputs +has the type +.RB \*(`` "int (*)(char)" \*(''. .PP -At least one implementation of X/Open Curses (Solaris) returns a value -other than -.B OK +At least one implementation of X/Open Curses +(Solaris +.IR \%xcurses ")" +returns a value other than +.I OK or -.B ERR -from \fB\%tputs\fP. +.I ERR +from +.IR \%tputs "." It instead returns the length of the string, and does no error checking. .PP -X/Open Curses notes that after calling \fB\%mvcur\fP, -the -.I curses -state may not match the actual terminal state, -and that an application should touch and refresh the window before -resuming normal -.I curses -calls. -Both -.I \%ncurses -and SVr4 +Very old versions of AIX +.\" Can we be more specific? Like, AIX 4.3.3 and earlier? --GBR .I curses -implement \fB\%mvcur\fP using the -.I SCREEN -data allocated in either \fB\%initscr\fP or \fB\%newterm\fP. -So though it is documented as a -.I \%term\%info -function, -\fB\%mvcur\fP is really a -.I curses -function that is not well specified. -.PP -X/Open Curses states that the old location must be given for -\fB\%mvcur\fP to accommodate terminals that lack absolute cursor -positioning. -.\" X/Open Curses Issue 7, p. 161 -.I \%ncurses -allows the caller to use \-1 for either or both old coordinates. -The \-1 tells -.I \%ncurses -that the old location is unknown, -and that it must use only absolute motion, -as with the -.B \%cursor_address -.RB ( cup ) -capability, -rather than the least costly combination of absolute and relative -motion. +required inclusion of +.I \%curses.h +before +.IR \%term.h . .\" ******************************************************************** .SH HISTORY SVr2 (1984) introduced the @@ -1006,14 +1069,14 @@ feature. Its programming manual mentioned the following low-level functions. .PP .TS -lB lB -lB lx. +Lb Lb +Li Lw(47n)x. Function Description _ fixterm restore terminal to \*(``in \fIcurses\fP\*('' state gettmode establish current terminal modes mvcur low level cursor motion -putp use \fBtputs\fP to send characters via \fIputchar\fP +putp use \fItputs\fP to send characters via \fIputchar\fP resetterm set terminal modes to \*(``out of \fIcurses\fP\*(''\ state resetty reset terminal flags to stored value @@ -1023,7 +1086,7 @@ setterm establish terminal with given type setupterm establish terminal with given type tparm interpolate parameters into string capability tputs apply padding information to a string -vidattr like \fBvidputs\fP, but output through \fIputchar\fP +vidattr like \fIvidputs\fP, but output through \fIputchar\fP vidputs T{ write string to terminal, applying specified attributes T} @@ -1036,8 +1099,8 @@ compatibility (commenting that they \*(``may go away at a later date\*(''). .PP .TS -lB lB -lB lx. +Lb Lb +Li Lw(48n)x. Function Description _ tgetent look up \fItermcap\fP entry for given \fIname\fP @@ -1054,7 +1117,8 @@ Early .I \%term\%info programs obtained capability values from the .I \%TERMINAL -structure initialized by \fB\%setupterm\fP. +structure initialized by +.IR \%setupterm "." .PP SVr3 (1987) extended .I \%term\%info @@ -1062,11 +1126,15 @@ by adding functions to retrieve capability values (like the .I termcap interface), -and reusing \fB\%tgoto\fP and \fB\%tputs\fP. +and reusing +.I \%tgoto +and +.IR \%tputs "." .PP +.ne 4v .TS -lB lB -lB lx. +Lb Lb +LI Lx. Function Description _ tigetflag get Boolean entry for given \fIid\fP @@ -1082,33 +1150,40 @@ interface, documenting them as obsolete. .PP .TS -lB lB -l lx. +Lb Lb +Li Lix. Function Replaced by _ crmode cbreak fixterm reset_prog_mode -gettmode \fIn/a\fP +gettmode \fRn/a\fP nocrmode nocbreak resetterm reset_shell_mode saveterm def_prog_mode setterm setupterm .TE .PP -SVr3 kept the \fB\%mvcur\fP, -\fB\%vidattr\fP, -and \fB\%vidputs\fP functions, -along with \fB\%putp\fP, -\fB\%tparm\fP, -and \fB\%tputs\fP. +SVr3 kept the +.IR \%mvcur "," +.IR \%vidattr "," +and +.I \%vidputs +functions, +along with +.IR \%putp "," +.IR \%tparm "," +and +.IR \%tputs "." The latter were needed to support padding, -and to handle capabilities accessed by functions such as \fB\%vidattr\fP -(which used more than the two parameters supported by \fB\%tgoto\fP). +and to handle capabilities accessed by functions such as +.I \%vidattr +(which used more than the two parameters supported by +.IR \%tgoto ")." .PP SVr3 introduced the functions for switching between terminal descriptions; for example, -\fB\%set_curterm\fP. +.IR \%set_curterm "." Some changes reflected incremental improvements to the SVr2 library. .bP The @@ -1118,11 +1193,16 @@ for the .I term structure provided in SVr2. .bP -Various global variables such as \fB\%boolnames\fP were mentioned -in the programming manual at this point, +Various global variables such as +.I \%boolnames +were mentioned in the programming manual at this point, though the variables had been provided in SVr2. .PP -SVr4 (1989) added the \fB\%vid_attr\fP and \fB\%vid_puts\fP functions. +SVr4 (1989) added the +.I \%vid_attr +and +.I \%vid_puts +functions. .PP Other low-level functions are declared in the .I curses diff --git a/contrib/ncurses/man/curs_threads.3x b/contrib/ncurses/man/curs_threads.3x index d49c16e71f09..a387c874ba74 100644 --- a/contrib/ncurses/man/curs_threads.3x +++ b/contrib/ncurses/man/curs_threads.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2021-2023,2024 Thomas E. Dickey * +.\" Copyright 2021-2024,2025 Thomas E. Dickey * .\" Copyright 2008-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_threads.3x,v 1.56 2024/03/16 15:35:01 tom Exp $ -.TH curs_threads 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_threads.3x,v 1.59 2025/02/15 19:41:22 tom Exp $ +.TH curs_threads 3X 2025-02-15 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -102,7 +102,7 @@ It further makes functions of the common global variables \fB\%newscr\fP, and \fB\%ttytype\fP, -maintaining them as as read-only values in the \fISCREEN\fP structure. +maintaining them as read-only values in the \fISCREEN\fP structure. .PP Even this is not enough to make an application using \fIcurses\fP thread-safe. diff --git a/contrib/ncurses/man/curs_touch.3x b/contrib/ncurses/man/curs_touch.3x index 613b6958268d..29a3a3ace011 100644 --- a/contrib/ncurses/man/curs_touch.3x +++ b/contrib/ncurses/man/curs_touch.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,18 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_touch.3x,v 1.47 2024/04/20 21:20:07 tom Exp $ -.TH curs_touch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_touch.3x,v 1.63 2025/01/19 00:51:10 tom Exp $ +.TH curs_touch 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} .SH NAME \fB\%touchwin\fP, \fB\%touchline\fP, @@ -77,16 +87,19 @@ call to \fB\%wrefresh\fP; otherwise they return \fBFALSE\fP. In addition, \fB\%is_linetouched\fP returns \fBERR\fP if \fIline\fP is not valid for the given window. .SH RETURN VALUE -All routines return the integer \fBERR\fP upon failure and an integer value -other than \fBERR\fP upon successful completion, unless otherwise noted in the -preceding routine descriptions. +Functions returning integers return +.B ERR +upon failure and +.B OK +upon success. .PP -X/Open Curses does not specify any error conditions. -In this implementation +In +.IR \%ncurses "," .RS 3 .TP 5 \fBis_linetouched\fP -returns an error +returns +.B ERR if the window pointer is null, or if the line number is outside the window boundaries. .IP @@ -101,23 +114,40 @@ the \fBERR\fP is provided by a macro named \fB\%is_linetouched\fP. The actual function returns \fBFALSE\fP when it detects an error. .TP 5 \fBwtouchln\fP -returns an error +returns +.B ERR if the window pointer is null, or if the line number is outside the window boundaries. .RE .SH NOTES -All of these routines except \fB\%wtouchln\fP may be macros. +All of these functions except +.B \%wtouchln +may be implemented as macros. .SH PORTABILITY -These functions were introduced by SVr4. -The Solaris \fIcurses\fP header file, -for instance, defines both an actual function and macro for each. -The macros give the same result as the actual functions. -SVr4 \fIcurses\fP does not check the window parameter \fIwin\fP to ensure -that it is not \fBNULL\fP; -otherwise this implementation behaves the same as SVr4. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. .PP -X/Open Curses, Issue 4 describes these functions, -but defines no error conditions. +SVr4 describes a successful return value +except where \*(``otherwise noted\*('' +as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 540 +.PP +SVr4 does not check +.I win +to ensure that it is not a null pointer. +.SH HISTORY +SVr2 (1984) introduced +.IR \%touchwin "," +.PP +SVr3 (1987) added +.IR \%touchline "." +SVr3.1 later that year supplied +.IR \%is_linetouched "," +.IR \%is_wintouched "," +.IR \%untouchwin "," +and +.IR \%wtouchln "." .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_refresh\fP(3X), diff --git a/contrib/ncurses/man/curs_trace.3x b/contrib/ncurses/man/curs_trace.3x index ddae79112541..7f9d115e1369 100644 --- a/contrib/ncurses/man/curs_trace.3x +++ b/contrib/ncurses/man/curs_trace.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2000-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_trace.3x,v 1.50 2024/04/20 21:24:19 tom Exp $ -.TH curs_trace 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_trace.3x,v 1.55 2025/01/19 00:51:10 tom Exp $ +.TH curs_trace 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -139,7 +139,7 @@ If the file already exists, no tracing is done. .bP If tracing is not available, \fBcurses_trace\fP returns zero (0). .SS "Trace Parameter" -The trace parameter is formed by OR'ing +The trace parameter is formed by logically \*(``or\*(''-ing values from the list of \fBTRACE_\fIxxx\fR definitions in \fB<curses.h>\fR. These include: .TP 5 @@ -264,13 +264,15 @@ if \fBDEBUG\fP was defined when building the library. .IP The SVr4 tracing feature is undocumented. .bP -PDCurses provides \fBtraceon\fP and \fBtraceoff\fP, +.I \%PDCurses +provides \fBtraceon\fP and \fBtraceoff\fP, which (like SVr4) are always available, and enable tracing to the \*(``trace\*('' file only when a debug-library is built. .IP -PDCurses has a short description of these functions, +.I \%PDCurses +has a short description of these functions, with a note that they are not present in X/Open Curses, \fI\%ncurses\fP or NetBSD. It does not mention SVr4, diff --git a/contrib/ncurses/man/curs_util.3x b/contrib/ncurses/man/curs_util.3x index 1df0a1d3f394..ba2e5ec2defd 100644 --- a/contrib/ncurses/man/curs_util.3x +++ b/contrib/ncurses/man/curs_util.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,17 +28,21 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_util.3x,v 1.101 2024/04/20 21:20:07 tom Exp $ -.TH curs_util 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_util.3x,v 1.151 2025/11/12 01:06:36 tom Exp $ +.TH curs_util 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq +.ds ^ \(ha +.ds ~ \(ti .\} .el \{\ .ie t .ds `` `` .el .ds `` "" .ie t .ds '' '' .el .ds '' "" +.ds ^ ^ +.ds ~ ~ .\} . .de bP @@ -63,53 +67,83 @@ miscellaneous \fIcurses\fR utility routines .nf \fB#include <curses.h> .PP -\fBconst char *unctrl(chtype \fIch\fP); -\fBwchar_t *wunctrl(cchar_t *\fIwch\fP); +\fBconst char * unctrl(chtype \fIch\fP); +\fBwchar_t * wunctrl(cchar_t * \fIwch\fP); .PP -\fBconst char *keyname(int \fIc\fP); -\fBconst char *key_name(wchar_t \fIwc\fP); +\fBconst char * keyname(int \fIc\fP); +\fBconst char * key_name(wchar_t \fIwc\fP); .PP \fBvoid filter(void); +\fI/* extension */ +\fBvoid nofilter(void); .PP -\fBvoid use_env(bool \fIf\fP); +\fBvoid use_env(bool \fIbf\fP); +\fI/* extension */ +\fBvoid use_tioctl(bool \fIbf\fP); .PP -\fBint putwin(WINDOW *\fIwin\fP, FILE *\fIfilep\fP); -\fBWINDOW *getwin(FILE *\fIfilep\fP); +\fBint putwin(WINDOW * \fIwin\fP, FILE * \fIfilep\fP); +\fBWINDOW * getwin(FILE * \fIfilep\fP); .PP \fBint delay_output(int \fIms\fP); -\fBint flushinp(void); .PP -\fI/* extensions */ -\fBvoid nofilter(void); -\fBvoid use_tioctl(bool \fIf\fP); +\fBint flushinp(void); .fi .SH DESCRIPTION -.SS unctrl -The \fBunctrl\fP routine returns a character string which is a printable -representation of the character \fIch\fP: -.bP -Printable characters are displayed as themselves, -e.g., a one-character string containing the key. +.SS "unctrl, wunctrl" +.B unctrl +returns a null-terminated character string printably representing the +.I curses +character +.IR ch , +often one that originated in keyboard input; +see \fBgetch\fP(3X). .bP -Control characters are displayed in the \fB^\fIX\fR notation. +Printable characters represent themselves as a one-character string. .bP -Printing characters are displayed as is. +Control characters are expressed in +.BI \*^ X +notation, +where +.I X +is the printable symbol of the control code's value plus 32 +in the ISO\ 646/\*(``ASCII\*('' character set. .bP -DEL (character 127) is displayed as \fB^?\fP. +DEL +(character code 127) +is represented as +.BR \*^? . .bP -Values above 128 are either meta characters -(if the screen has not been initialized, -or if \fBmeta\fP(3X) has been called with a \fBTRUE\fP parameter), -shown in the \fBM\-\fIX\fR notation, -or are displayed as themselves. -In the latter case, the values may not be printable; -this follows the X/Open specification. +A character code greater than 127 is represented in one of two ways. +.IP +If the screen has not been initialized or is in meta mode +(see \fBmeta\fP(3X)), +it is expressed in +.BI M- X +notation, +where X +is the representation of the code's value minus 128, +as described above. +.IP +If the screen is not in meta mode, +the character code is assumed to represent itself. +It nevertheless may not be printable; +this is the case for character codes 128-159 in ISO\ 8859 encodings. +.IP +.IR \%ncurses 's +\fB\%use_legacy_coding\fP(3X) +function configures +.BR \%unctrl 's +handling of these character codes. .PP -The corresponding \fBwunctrl\fP returns a printable representation of -a complex character \fIwch\fP. +.B \%wunctrl +returns a null-terminated wide-character string printably representing +the +.I curses +complex character +.IR wch . .PP -In both \fBunctrl\fP and \fBwunctrl\fP the attributes and color associated -with the character parameter are ignored. +Both functions ignore the attributes and color pair selection +of their argument. .SS "keyname, key_name" The \fBkeyname\fP routine returns a character string corresponding to the key \fIc\fP. @@ -121,22 +155,28 @@ They are displayed using \fBunctrl\fP. Values above 256 may be the codes for function keys. The function key name is displayed. .bP -Otherwise (if there is no corresponding name and the key is not a character) -the function returns null, to denote an error. +Otherwise +(if there is no corresponding name and the key is not a character) +the function returns null, +to denote an error. X/Open also lists an \*(``UNKNOWN KEY\*('' return value, which some implementations return rather than null. .LP The corresponding \fBkey_name\fP returns a multibyte character string corresponding -to the wide-character value \fIw\fP. -The two functions (\fBkeyname\fP and \fBkey_name\fP) +to the wide-character value \fIwc\fP. +The two functions +(\fBkeyname\fP and \fBkey_name\fP) do not return the same set of strings: .bP -\fBkeyname\fP returns null where \fBkey_name\fP would display a meta character. +\fBkeyname\fP returns null where \fBkey_name\fP +would display a meta character. .bP \fBkey_name\fP does not return the name of a function key. .SS "filter, nofilter" -The \fBfilter\fP routine, if used, must be called before \fBinitscr\fP or +The \fBfilter\fP routine, +if used, +must be called before \fBinitscr\fP or \fBnewterm\fP are called. Calling \fBfilter\fP causes these changes in initialization: .bP @@ -156,14 +196,15 @@ the capability \fBed\fP is disabled if \fBbce\fP is set; .bP and the \fBhome\fP string is set to the value of \fBcr\fP. .PP -The \fBnofilter\fP routine cancels the effect of a preceding \fBfilter\fP -call. +The \fBnofilter\fP routine cancels the effect +of a preceding \fBfilter\fP call. That allows the caller to initialize a screen on a different device, using a different value of \fB$TERM\fP. The limitation arises because the \fBfilter\fP routine modifies the in-memory copy of the terminal information. .SS use_env -The \fBuse_env\fP routine, if used, +The \fBuse_env\fP routine, +if used, should be called before \fBinitscr\fP or \fBnewterm\fP are called (because those compute the screen size). @@ -181,43 +222,46 @@ Then it asks for the screen size via operating system calls. If successful, it overrides the values from the terminal database. .bP -Finally (unless \fBuse_env\fP was called with \fBFALSE\fP parameter), +Finally +(unless \fBuse_env\fP was called with \fBFALSE\fP parameter), \fI\%ncurses\fP examines the \fILINES\fP or \fI\%COLUMNS\fP environment variables, using a value in those to override the results from the operating system or terminal database. .IP -\fI\%curses\fP also updates the screen size in response to -\fBSIGWINCH\fP, +.I curses +also updates the screen size in response to +.IR \%SIGWINCH "," unless overridden by the \fILINES\fP or \fI\%COLUMNS\fP environment variables, .SS use_tioctl -The \fBuse_tioctl\fP routine, if used, +The \fBuse_tioctl\fP routine, +if used, should be called before \fBinitscr\fP or \fBnewterm\fP are called (because those compute the screen size). After \fBuse_tioctl\fP is called with \fBTRUE\fP as an argument, \fI\%ncurses\fP modifies the last step in its computation of screen size as follows: .bP -checks if the \fILINES\fP and \fI\%COLUMNS\fP environment variables +checks whether the \fILINES\fP and \fI\%COLUMNS\fP environment variables are set to a number greater than zero. .bP -for each, \fI\%ncurses\fP updates the corresponding environment variable +for each, +\fI\%ncurses\fP updates the corresponding environment variable with the value that it has obtained via operating system call or from the terminal database. .bP \fI\%ncurses\fP re-fetches the value of the environment variables so -that it is still the environment variables which set the screen size. +that it is still the environment variables that set the screen size. .PP The \fB\%use_env\fP and \fB\%use_tioctl\fP routines combine as follows. .IP .TS -lB lB lB -lB lB lx. +Lb Lb Lb +Lb Lb Lw(29n)x. use_env use_tioctl Summary _ TRUE FALSE T{ -This is the default behavior. \fI\%ncurses\fP uses operating system calls unless overridden by \fILINES\fP or \fI\%COLUMNS\fP environment variables; @@ -234,7 +278,9 @@ T} .TE .SS "putwin, getwin" The \fBputwin\fP routine writes all data associated -with window (or pad) \fIwin\fP into +with window +(or pad) +\fIwin\fP into the file to which \fIfilep\fP points. This information can be later retrieved using the \fBgetwin\fP function. @@ -248,16 +294,18 @@ There are a few caveats: .bP the data written is a copy of the \fI\%WINDOW\fP structure, and its associated character cells. -The format differs between the wide-character (\fI\%ncursesw\fP) and -non-wide (\fI\%ncurses\fP) libraries. -You can transfer data between the two, however. +The format differs between the wide-character \%(\fIncursesw\fP) and +non-wide \%(\fIncurses\fP) libraries. +You can transfer data between the two, +however. .bP -the retrieved window is always created as a top-level window (or pad), +the retrieved window is always created as a top-level window +(or pad), rather than a subwindow. .bP the window's character cells contain the color pair \fIvalue\fP, but not the actual color \fInumbers\fP. -If cells in the retrieved window use color pairs which have not been +If cells in the retrieved window use color pairs that have not been created in the application using \fBinit_pair\fP, they will not be colored when the window is refreshed. .SS delay_output @@ -269,7 +317,8 @@ because \fI\%ncurses\fP transmits null characters instead of sleeping and requesting resumption from the operating system. Padding is used unless: .bP -the terminal description has \fBnpc\fP (\fBno_pad_char\fP) capability, or +the terminal description has \fBnpc\fP (\fBno_pad_char\fP) capability, +or .bP the environment variable \fB\%NCURSES_NO_PADDING\fP is set. .PP @@ -279,57 +328,85 @@ If the value of \fIms\fP exceeds 30,000 (thirty seconds), it is capped at that value. .SS flushinp -The \fBflushinp\fP routine throws away any typeahead that has been typed by the -user and has not yet been read by the program. +The \fBflushinp\fP routine throws away any typeahead +that has been typed by the user +and has not yet been read by the program. .SH RETURN VALUE -Except for \fBflushinp\fP, routines that return an integer return \fBERR\fP -upon failure and \fBOK\fP (SVr4 specifies only "an integer value other than -\fBERR\fP") upon successful completion. +Except for +.BR \%flushinp "," +functions that return integers return +.B ERR +upon failure and +.B OK +upon success. .PP -Routines that return pointers return \fBNULL\fP on error. +Functions that return pointers return a null pointer on failure. .PP -X/Open Curses does not specify any error conditions. -In this implementation -.RS 3 -.TP 5 -\fBflushinp\fP -returns an error if the terminal was not initialized. -.TP 5 -\fBputwin\fP -returns an error if the associated \fBfwrite\fP calls return an error. -.RE +In +.IR \%ncurses "," +.bP +.B \%flushinp +returns +.B ERR +if the terminal was not initialized, +and +.bP +.B \%putwin +returns +.B ERR +if its associated \fIwrite\fP(2) calls return +.BR ERR "." +.SH NOTES +.B \%wunctrl +is part of +.IR \%ncurses "'s" +wide-character API, +and is not available in its non-wide-character configuration. .SH PORTABILITY +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +.PP +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 542 .SS filter -The SVr4 documentation describes the action of \fBfilter\fP only in the vaguest -terms. -The description here is adapted from X/Open Curses (which -erroneously fails to describe the disabling of \fBcuu\fP). +The SVr4 documentation describes the action of \fBfilter\fP +only in the vaguest terms. +The description here is adapted from X/Open Curses +(which erroneously fails to describe the disabling of \fBcuu\fP). .SS "delay_output padding" The limitation to 30 seconds and the use of \fBnapms\fP differ from other implementations. .bP -SVr4 curses does not delay if no padding character is available. +SVr4 +.I curses +does not delay if no padding character is available. .bP -NetBSD curses uses \fBnapms\fP when no padding character is available, +NetBSD +.I curses +uses \fBnapms\fP when no padding character is available, but does not take timing into account when using the padding character. .PP Neither limits the delay. .SS keyname The \fBkeyname\fP function may return the names of user-defined -string capabilities which are defined in the terminfo entry via the \fB\-x\fP +string capabilities that are defined in the terminfo entry +via the \fB\-x\fP option of \fB@TIC@\fP. -This implementation automatically assigns at run-time keycodes to -user-defined strings which begin with \*(``k\*(''. -The keycodes start at KEY_MAX, but are not guaranteed to be -the same value for different runs because user-defined codes are -merged from all terminal descriptions which have been loaded. +This implementation automatically assigns at run-time key codes to +user-defined strings that begin with \*(``k\*(''. +The key codes start at KEY_MAX, +but are not guaranteed to be the same value for different runs +because user-defined codes are merged +from all terminal descriptions that have been loaded. The \fBuse_extended_names\fP(3X) function controls whether this data is loaded when the terminal description is read by the library. .SS "nofilter, use_tioctl" The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to \fI\%ncurses\fP. -They were not supported on Version 7, BSD or System V implementations. +They were not supported on Version 7, +BSD or System V implementations. It is recommended that any code depending on \fI\%ncurses\fP extensions be conditioned using \fBNCURSES_VERSION\fP. .SS "putwin/getwin file-format" @@ -341,81 +418,134 @@ use an implementation-specific format. Although the format is an obvious target for standardization, it has been overlooked. .IP -Interestingly enough, according to the copyright dates in Solaris source, -the functions (along with \fBscr_init\fP, etc.) originated with -the University of California, Berkeley (in 1982) -and were later (in 1988) incorporated into SVr4. -Oddly, there are no such functions in the 4.3BSD curses sources. +Interestingly enough, +according to the copyright dates in Solaris source, +the functions +(along with \fBscr_init\fP, +etc.\&) +originated with the University of California, +Berkeley +(in 1982) +and were later +(in 1988) +incorporated into SVr4. +Oddly, +there are no such functions in the 4.3BSD +.I curses +sources. .bP -Most implementations simply dump the binary \fI\%WINDOW\fP structure +Most implementations simply dump the binary +.I \%WINDOW +structure to the file. -These include SVr4 curses, NetBSD and PDCurses, +These include SVr4 +.IR curses , +NetBSD +.IR curses , +and +.IR \%PDCurses , as well as older \fI\%ncurses\fP versions. This implementation -(as well as the X/Open variant of Solaris curses, dated 1995) +(as well as +.IR \%xcurses "," +the X/Open variant of Solaris +.IR curses "," +dated 1995) uses textual dumps. .IP -The implementations which use binary dumps use block-I/O -(the \fBfwrite\fP and \fBfread\fP functions). -Those that use textual dumps use buffered-I/O. +The implementations that use binary dumps use block I/O +(\fIwrite\fP(2) and \fIread\fP(2) functions). +Those that use textual dumps use buffered I/O. A few applications may happen to write extra data in the file using these functions. -Doing that can run into problems mixing block- and buffered-I/O. -This implementation reduces the problem on writes by flushing the output. -However, reading from a file written using mixed schemes may not be successful. +Doing that can run into problems mixing block and buffered I/O. +This implementation reduces the problem on writes by flushing the +output. +However, +reading from a file written using mixed schemes may not be successful. .SS "unctrl, wunctrl" -X/Open Curses, Issue 4 describes these functions. -It states that \fBunctrl\fP and \fBwunctrl\fP will return a null pointer if -unsuccessful, but does not define any error conditions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for them. +It states that \fBunctrl\fP and \fBwunctrl\fP will return a null pointer +if unsuccessful. This implementation checks for three cases: .bP the parameter is a 7-bit US\-ASCII code. This is the case that X/Open Curses documented. .bP -the parameter is in the range 128\-159, i.e., a C1 control code. -If \fBuse_legacy_coding\fP(3X) has been called with a \fB2\fP parameter, -\fBunctrl\fP returns the parameter, i.e., a one-character string with +the parameter is in the range 128\-159, +i.e., +a C1 control code. +If \fB\%use_legacy_coding\fP(3X) has been called with a \fB2\fP parameter, +\fBunctrl\fP returns the parameter, +i.e., +a one-character string with the parameter as the first character. -Otherwise, it returns \*(``~@\*('', \*(``~A\*('', etc., -analogous to \*(``^@\*('', \*(``^A\*('', C0 controls. +Otherwise, +it returns \*(``\*~@\*('', +\*(``\*~A\*('', +etc., +analogous to \*(``\*^@\*('', +\*(``\*^A\*('', +C0 controls. .IP -X/Open Curses does not document whether \fBunctrl\fP can be called before -initializing curses. +X/Open Curses does not document whether \fBunctrl\fP can be called +before initializing +.IR curses "." This implementation permits that, -and returns the \*(``~@\*('', etc., values in that case. +and returns the \*(``\*~@\*('', +etc., +values in that case. .bP parameter values outside the 0 to 255 range. \fBunctrl\fP returns a null pointer. .PP -The strings returned by \fBunctrl\fP in this implementation are determined -at compile time, +The strings returned by \fBunctrl\fP in this implementation +are determined at compile time, showing C1 controls from the upper-128 codes -with a \*(``~\*('' prefix rather than \*(``^\*(''. +with a \*(``\*~\*('' prefix rather than \*(``\*^\*(''. Other implementations have different conventions. -For example, they may show both sets of control characters with \*(``^\*('', +For example, +they may show both sets of control characters with \*(``\*^\*('', and strip the parameter to 7 bits. Or they may ignore C1 controls and treat all of the upper-128 codes as printable. -This implementation uses 8 bits but does not modify the string to reflect -locale. -The \fBuse_legacy_coding\fP(3X) function allows the caller to +This implementation uses 8 bits +but does not modify the string to reflect locale. +The \fB\%use_legacy_coding\fP(3X) function allows the caller to change the output of \fBunctrl\fP. .PP -Likewise, the \fBmeta\fP(3X) function allows the caller to change the -output of \fBkeyname\fP, i.e., +Likewise, +the \fBmeta\fP(3X) function allows the caller to change the output +of \fBkeyname\fP, +i.e., it determines whether to use the \*(``M\-\*('' prefix for \*(``meta\*('' keys (codes in the range 128 to 255). -Both \fBuse_legacy_coding\fP(3X) and \fBmeta\fP(3X) succeed only after -curses is initialized. +Both \fB\%use_legacy_coding\fP(3X) and \fBmeta\fP(3X) succeed only after +.I curses +is initialized. X/Open Curses does not document the treatment of codes 128 to 159. When treating them as \*(``meta\*('' keys -(or if \fBkeyname\fP is called before initializing curses), -this implementation returns strings \*(``M\-^@\*('', \*(``M\-^A\*('', etc. +(or if \fBkeyname\fP is called before initializing +.IR curses ")," +this implementation returns strings \*(``M\-\*^@\*('', +\*(``M\-\*^A\*('', +etc. .PP -X/Open Curses documents \fBunctrl\fP as declared in \fB<unctrl.h>\fP, -which \fI\%ncurses\fP does. -However, \fI\%ncurses\fP' \fB<curses.h>\fP includes \fB<unctrl.h>\fP, -matching the behavior of SVr4 curses. +X/Open Curses documents +.I \%unctrl +as declared in +.IR \%unctrl.h "," +which +.I \%ncurses +does. +However, +.IR \%ncurses 's +.I \%curses.h +includes +.IR \%unctrl.h "," +matching the behavior of SVr4 +.IR curses "." Other implementations may not do that. .SS "use_env, use_tioctl" If \fI\%ncurses\fP is configured to provide the sp-functions extension, @@ -423,8 +553,49 @@ the state of \fBuse_env\fP and \fBuse_tioctl\fP may be updated before creating each \fIscreen\fP rather than once only (\fBcurs_sp_funcs\fP(3X)). This feature of \fBuse_env\fP -is not provided by other implementations of curses. +is not provided by other implementations of +.IR curses "." +.SH HISTORY +4BSD (1980) +introduced +.IR \%unctrl "," +defining it as a macro +in +.IR \%unctrl.h "." +.PP +SVr2 (1984) +added +.IR \%delay_output "," +.IR \%flushinp "," +and +.IR \%keyname "." +.PP +SVr3 (1987) supplied +.IR \%filter "." +Later that year, +SVr3.1 brought +.I \%getwin +and +.IR \%putwin "," +reading and writing window dumps +with \fI\%fread\fP(3) and \fI\%fwrite\fP(3), +respectively. +.PP +SVr4 (1989) furnished +.IR \%use_env "." +.PP +X/Open Curses Issue\ 4 (1995) specified +.I \%key_name +and +.IR \%wunctrl "." +.PP +.I \%ncurses +5.6 (2006) added +.IR \%nofilter "," \" 20060107 +and 6.0 (2015) +.IR \%use_tioctl "." \" 20120714 .SH SEE ALSO +.na \fB\%curses\fP(3X), \fB\%curs_initscr\fP(3X), \fB\%curs_inopts\fP(3X), @@ -433,3 +604,4 @@ is not provided by other implementations of curses. \fB\%curs_sp_funcs\fP(3X), \fB\%curs_variables\fP(3X), \fB\%legacy_coding\fP(3X) +.ad diff --git a/contrib/ncurses/man/curs_variables.3x b/contrib/ncurses/man/curs_variables.3x index 467b69444565..0d2d0beb6466 100644 --- a/contrib/ncurses/man/curs_variables.3x +++ b/contrib/ncurses/man/curs_variables.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2010-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_variables.3x,v 1.47 2024/04/13 22:37:35 tom Exp $ -.TH curs_variables 3X 2024-04-13 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_variables.3x,v 1.73 2025/08/23 23:02:32 tom Exp $ +.TH curs_variables 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -48,6 +48,51 @@ .el .IP \(bu 2 .. . +.\" URL hyperlink support macros from groff's "an-ext.tmac" +. +.\" Save the automatic hyphenation mode. +.\" +.\" In AT&T troff, there was no register exposing the hyphenation mode, +.\" and no way to save and restore it. Set `mH` to a reasonable value +.\" for your implementation and preference. +.de mY +. ie !\\n(.g \ +. nr mH 14 +. el \ +. do nr mH \\n[.hy] \" groff extension register +.. +. +.\" Prepare link text for mail/web hyperlinks. `MT` and `UR` call this. +.de mV +. ds mU \\$1\" +.. +. +.\" Emit hyperlink. The optional argument supplies trailing punctuation +.\" after link text. `ME` and `UE` call this. +.de mQ +. mY +. nh +<\\*(mU>\\$1 +. hy \\n(mH +. rm mU +.. +. +.\" Start URL. +.\" .UR url +.if !\n(.g \{\ +.de UR +. mV \\$1 +.. +.\} +. +.\" End URL. +.\" .UE [punctuation] +.if !\n(.g \{\ +.de UE +. mQ \\$1 +.. +.\} +. .SH NAME \fI\%bool\fP, \fI\%chtype\fP, @@ -59,6 +104,7 @@ \fB\%FALSE\fP, \fB\%ERR\fP, \fB\%OK\fP, +\fB\%CCHARW_MAX\fP, \fB\%curscr\fP, \fB\%newscr\fP, \fB\%stdscr\fP, @@ -88,6 +134,9 @@ \fBconst \fI/*\fP .\|.\|. \fI*/\fP ERR; \fBconst \fI/*\fP .\|.\|. \fI*/\fP OK; .PP +\fI/* extension */ +\fBconst \fI/*\fP .\|.\|. \fI*/\fP CCHARW_MAX; +.PP \fI/* variables */ \fBint COLORS; \fBint COLOR_PAIRS; @@ -114,24 +163,49 @@ that provide read-only access to the library's state. In either case, applications should treat them as read-only to avoid confusing the library. -.SH "CONSTANTS" +.SH CONSTANTS .SS "TRUE, FALSE" -The \fIcurses\fP library defines \fBTRUE\fP and \fBFALSE\fP +The +.I curses +library defines +.B TRUE +and +.B FALSE to represent the values of the Boolean data type. .SS "ERR, OK" -\fIcurses\fP and \fIterminfo\fP routines frequently return these -constant integral values indicating failure and success, +.I curses +and +.I \%term\%info +functions frequently return these constant integral values +indicating failure and success, respectively. -.SH "PREDEFINED TYPES" +.SS CCHARW_MAX +This integral value, +an +.I \%ncurses +extension, +indicates the maximum number of +.I \%wchar_t +wide characters that can be stored in a +.I curses +complex character +.IR \%cchar_t "." +.SH "DATA TYPES" .SS "\fIbool\fP" -X/Open Issue 4 \fIcurses\fP (1996) preceded the ISO C99 and ISO C++98 +.I curses +defines an integral type +.IR bool "." +X/Open Issue\ 4 +.I curses +(1996) preceded the ISO\ C99 and ISO\ C++98 standards, -each of which also defined a Boolean data type. -The \fIcurses\fP library requires an integral type \fIbool\fP. +each of which also defined a Boolean data type of the same name. .PP -\fB\%ncurses\fP' configure script attempts to discover the +.IR \%ncurses 's +configure script attempts to discover the data type used by the system's C and C++ compilers, -to reuse for the \fIcurses\fP \fIbool\fP. +to reuse them as its own +.IR bool "." .SS "\fIchtype\fP" The \fI\%chtype\fP integral type combines a (\*(``narrow\*('', @@ -173,7 +247,26 @@ represents rectangular portions of the terminal screen with the structure type; see subsection \*(``Overview\*('' of \fB\%ncurses\fP(3X). .SH "VARIABLES" -.SS "curscr, stdscr, newscr" +.SS "curscr, newscr, stdscr" +When a +.I curses +application calls +\fB\%initscr\fP(3X) or \fB\%newterm\fP(3X), +the library creates a window named +.B \%stdscr +that is the same size as the terminal screen, +(minus any lines reserved by +\fB\%ripoffline\fP(3X) or \fB\%slk_init\fP(3X)) +and is the implicit window used by functions +that interact with a window +but do not take a parameter identifying one; +many +.I curses +functions use it. +An application need not use +.BR \%stdscr ";" +it might prefer to tile the display into multiple windows instead. +.PP The library records updates to the terminal screen in a window named \fB\%curscr\fP. This object is referred to as the \*(``physical screen\*('' in @@ -190,40 +283,41 @@ and When the screen is refreshed, \fIcurses\fP determines a minimal set of updates using the terminal's capabilities to make \fB\%curscr\fP look like \fB\%newscr\fP. -.PP -Once \fIcurses\fP is initialized, -it creates a window named \fB\%stdscr\fP. -It is the same size as the terminal screen and is the default window -used by routines that do not take a parameter identifying one. -Many \fIcurses\fP functions use this window. .SS COLORS -Once \fIcurses\fP is initialized, -\fB\%COLORS\fP +Once a +.I curses +screen is initialized, +.B \%COLORS contains the number of colors supported by the terminal; see \fB\%curs_color\fP(3X). .SS COLOR_PAIRS -Once \fIcurses\fP is initialized, -\fB\%COLOR_PAIRS\fP +Once a +.I curses +screen is initialized, +.B \%COLOR_PAIRS contains the number of color pairs supported by the terminal; see \fB\%curs_color\fP(3X). .SS "COLS, LINES" -Once \fIcurses\fP is initialized, +Once a +.I curses +screen is initialized, .B \%COLS and .B LINES -contain the screen's width and height in character cells, +contain its width and height in character cells, respectively; that is, the number of columns and lines. .SS ESCDELAY -For +When reading key strokes from a window in keypad mode, .I curses -to distinguish the ESC character resulting from a user's press of the -\*(``Escape\*('' key on the input device from one beginning an -.I "escape sequence" -(as commonly produced by function keys), -it waits after the escape character to see if further characters are -available on the input stream within a short interval. +distinguishes the ESC character resulting from a user's press of the +\*(``Escape\*('' key on the input device +from one beginning an escape sequence +(commonly produced by function keys), +by waiting after receiving the escape character +to see if further characters are available +on the input stream within a short interval. .B \%ESCDELAY stores this interval in milliseconds. .PP @@ -236,8 +330,9 @@ The \fIcurses\fP library converts a tab character to this number of spaces as it adds a tab to a window; see \fB\%curs_addch\fP(3X). .SH NOTES -Either \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X) initializes -\fIcurses\fP. +Initialize a +.I curses +screen with either \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X). .PP If .I \%ncurses @@ -246,12 +341,39 @@ is configured to provide separate and .I \%tinfo libraries, -most of these variables reside in the former. +most of these symbols reside in the former. +Both use the +.B bool +data type. +.SH EXTENSIONS +The +.B \%CCHARW_MAX +constant, +and +.BR \%ESCDELAY "," +.BR \%TABSIZE "," +and +.B \%newscr +variables, +are +extensions, +the first of these originating in +.\" Solaris xcurses calls it M_CCHAR_MAX. +.IR \%ncurses "." .SH PORTABILITY +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP The X/Open Curses standard documents all of the foregoing types and -symbols except for \fB\%newscr\fP, -\fB\%TABSIZE\fP, -and \fB\%ESCDELAY\fP. +symbols except for +.BR \%CCHARW_MAX "," +.BR \%newscr "," +.BR \%TABSIZE "," +and +.BR \%ESCDELAY "." .PP X/Open Curses describes \fB\%curscr\fP only as \*(``an internal data structure\*(''; @@ -270,52 +392,98 @@ it is used as a working area for combining the standard window When the update of \fB\%newscr\fP is complete, \fIcurses\fP modifies \fB\%curscr\fP to match \fB\%newscr\fP. .PP -\fB\%TABSIZE\fP is a feature of SVr4 \fIcurses\fP. +.B \%TABSIZE +is a feature of SVr4 +.IR curses "." .bP -SVr4 initially sets \fB\%TABSIZE\fP from the terminal description's -\fB\%init_tabs\fP capability. +SVr4 initially sets +.B \%TABSIZE +from the terminal description's +.B \%init_tabs +.RB ( it ) +capability. After that, -it can be altered by applications using SVr4 \fIcurses\fP. +it can be altered by applications using SVr4 +.IR curses "." .bP -SVr4 \fIcurses\fP uses the value of \fB\%TABSIZE\fP to compute the -position of tab stops when updating both +SVr4 +.I curses +uses +.BR \%TABSIZE 's +value to compute the position of tab stops when updating both the virtual screen with \fB\%addch\fP(3X) and the physical screen with \fB\%mvcur\fP(3X). .bP -\fI\%ncurses\fP uses the value of \fB\%TABSIZE\fP only to update the -virtual screen. -It uses the terminal description's \*(``\fBit\fP\*('' -(\fB\%init_tabs\fP) capability for computing hardware tabs +In +.IR \%ncurses "," +.BR \%TABSIZE 's +value affects only the virtual screen. +The library uses the terminal type description's +.B \%init_tabs +.RB ( it ) +capability to compute hardware tabs (that is, tab stops on the physical screen). .bP Other implementations differ. For instance, -NetBSD \fIcurses\fP allows \fB\%TABSIZE\fP to be set through an -environment variable. -\fI\%ncurses\fP does not. +NetBSD +.I curses +allows +.B \%TABSIZE +to be set through an environment variable. +.I \%ncurses +does not. .IP -NetBSD \fIcurses\fP does not support hardware tabs; -it uses the \fB\%init_tabs\fP capability and the \fB\%TABSIZE\fP -variable only for updating the virtual screen. +NetBSD +.I curses +does not support hardware tabs; +it uses the +.B \%init_tabs +.RB ( it ) +capability and the +.B \%TABSIZE +variable only to update the virtual screen. .PP -\fB\%ESCDELAY\fP is a feature of AIX \fIcurses\fP. +.B \%ESCDELAY +is a feature of AIX +.IR curses "." .bP -In AIX, -the units for \fB\%ESCDELAY\fP are \fIfifths\fP of milliseconds. +AIX treats +.BR \%ESCDELAY 's +value as counting +.I fifths +of milliseconds. .bP -The default value for AIX's \fB\%ESCDELAY\fP equals 0.1 seconds. +AIX's default +.B \%ESCDELAY +equals 0.1 seconds. .bP -AIX also enforces a limit of 10,000 seconds for \fB\%ESCDELAY\fP; -\fI\%ncurses\fP does not enforce any upper limit. +AIX also enforces a limit of 10,000 seconds for +.BR \%ESCDELAY ";" +.I \%ncurses +does not enforce an upper limit. .PP -\fI\%ncurses\fP has long used \fB\%ESCDELAY\fP with units of -milliseconds, +.I \%ncurses +has long interpreted +.B \%ESCDELAY +as a count of milliseconds, making it impossible to be completely compatible with AIX. Consequently, most users have decided either to override the value, or to rely upon its default. .SH SEE ALSO +.UR https://\*:unicode\*:.org/\*:reports/\*:tr29/ +[UAX #29] \*(``Unicode Standard Annex #29: Unicode Text +Segmentation\*('' +.UE +.PP +\fB\%getcchar\fP(3X) +further discusses the +.I \%ncurses +extension +.BR \%CCHARW_MAX "." +.PP \fB\%curses\fP(3X), \fB\%curs_color\fP(3X), \fB\%curs_opaque\fP(3X), @@ -323,7 +491,3 @@ or to rely upon its default. \fB\%curs_threads\fP(3X), \fB\%term_variables\fP(3X), \fB\%terminfo\fP(5) -.PP -[UAX #29] \*(``Unicode Standard Annex #29: Unicode Text -Segmentation\*(''; -\%<https://\*:unicode\*:.org/\*:reports/\*:tr29/> diff --git a/contrib/ncurses/man/curs_window.3x b/contrib/ncurses/man/curs_window.3x index d3d55c751444..b930a4c85a8e 100644 --- a/contrib/ncurses/man/curs_window.3x +++ b/contrib/ncurses/man/curs_window.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2020-2023,2024 Thomas E. Dickey * +.\" Copyright 2020-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,19 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_window.3x,v 1.48 2024/04/20 21:20:07 tom Exp $ -.TH curs_window 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: curs_window.3x,v 1.71 2025/08/23 22:50:00 tom Exp $ +.TH curs_window 3X 2025-08-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} +. .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -50,23 +61,23 @@ create and manipulate \fIcurses\fR windows .nf \fB#include <curses.h> .PP -\fBWINDOW *newwin( - \fBint \fInlines\fB, int \fIncols\fB,\fR - \fBint \fIbegin_y\fB, int \fIbegin_x\fB);\fR -\fBint delwin(WINDOW *\fIwin\fB);\fR -\fBint mvwin(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR -\fBWINDOW *subwin(WINDOW *\fIorig\fB,\fR - \fBint \fInlines\fB, int \fIncols\fB,\fR - \fBint \fIbegin_y\fB, int \fIbegin_x\fB);\fR -\fBWINDOW *derwin(WINDOW *\fIorig\fB,\fR - \fBint \fInlines\fB, int \fIncols\fB,\fR - \fBint \fIbegin_y\fB, int \fIbegin_x\fB);\fR -\fBint mvderwin(WINDOW *\fIwin\fB, int \fIpar_y\fB, int \fIpar_x\fB);\fR -\fBWINDOW *dupwin(WINDOW *\fIwin\fB);\fR -\fBvoid wsyncup(WINDOW *\fIwin\fB);\fR -\fBint syncok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR -\fBvoid wcursyncup(WINDOW *\fIwin\fB);\fR -\fBvoid wsyncdown(WINDOW *\fIwin\fB);\fR +\fBWINDOW * newwin(\fR + \fBint \fInlines\fP, int \fIncols\fP, + \fBint \fIbegin_y\fP, int \fIbegin_x\fP); +\fBint delwin(WINDOW * \fIwin\fP); +\fBint mvwin(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP); +\fBWINDOW * subwin(WINDOW * \fIorig\fP, + \fBint \fInlines\fP, int \fIncols\fP, + \fBint \fIbegin_y\fP, int \fIbegin_x\fP); +\fBWINDOW * derwin(WINDOW * \fIorig\fP, + \fBint \fInlines\fP, int \fIncols\fP, + \fBint \fIbegin_y\fP, int \fIbegin_x\fP); +\fBint mvderwin(WINDOW * \fIwin\fP, int \fIpar_y\fP, int \fIpar_x\fP); +\fBWINDOW * dupwin(WINDOW * \fIwin\fP); +\fBvoid wsyncup(WINDOW * \fIwin\fP); +\fBint syncok(WINDOW * \fIwin\fP, bool \fIbf\fP); +\fBvoid wcursyncup(WINDOW * \fIwin\fP); +\fBvoid wsyncdown(WINDOW * \fIwin\fP); .fi .SH DESCRIPTION .SS newwin @@ -94,21 +105,23 @@ Regardless of the function used for creating a new window (e.g., \fBnewwin\fP, \fBsubwin\fP, \fBderwin\fP, \fBnewpad\fP), rather than a duplicate (with \fBdupwin\fP), all of the window modes are initialized to the default values. -These functions set window modes after a window is created: +The following functions set a window's modes after it is created: .RS .PP -\fB\%idcok\fP -\fB\%idlok\fP -\fB\%immedok\fP -\fB\%keypad\fP -\fB\%leaveok\fP -\fB\%nodelay\fP -\fB\%scrollok\fP -\fB\%setscrreg\fP -\fB\%syncok\fP -\fB\%wbkgdset\fP -\fB\%wbkgrndset\fP and -\fB\%wtimeout\fP. +.BR \%idcok "," +.BR \%idlok "," +.BR \%immedok "," +.BR \%keypad "," +.BR \%leaveok "," +.BR \%nodelay "," +.BR \%notimeout "," +.BR \%scrollok "," +.BR \%setscrreg "," +.BR \%syncok "," +.BR \%wbkgdset "," +.BR \%wbkgrndset "," +and +.BR \%wtimeout "." .RE .SS delwin Calling \fBdelwin\fP deletes the named window, freeing all memory @@ -163,105 +176,168 @@ The routine \fBwcursyncup\fP updates the current cursor position of all the ancestors of the window to reflect the current cursor position of the window. .SH RETURN VALUE -Routines that return an integer return the integer \fBERR\fP upon failure and -\fBOK\fP (SVr4 only specifies "an integer value other than \fBERR\fP") upon -successful completion. +Functions that return integers return +.B ERR +upon failure and +.B OK +upon success. .PP -Routines that return pointers return \fBNULL\fP on error. +Functions that return pointers return a null pointer on failure. .PP -X/Open defines no error conditions. -In this implementation -.TP 5 -\fBdelwin\fP -returns an error if the window pointer is null, or -if the window is the parent of another window. -.TP 5 -\fBderwin\fP -returns an error if the parent window pointer is null, or -if any of its ordinates or dimensions is negative, or -if the resulting window does not fit inside the parent window. -.TP 5 -\fBdupwin\fP -returns an error if the window pointer is null. +.I \%ncurses +defines several error conditions. +.bP +.B \%delwin +returns +.B ERR +if +.I win +is a null pointer, +or if it is the parent of another window. .IP -This implementation also maintains a list of windows, -and checks that the pointer passed to \fBdelwin\fP is one that -it created, returning an error if it was not.. -.TP 5 -\fBmvderwin\fP -returns an error -if the window pointer is null, or -if some part of the window would be placed off-screen. -.TP 5 -\fBmvwin\fP -returns an error -if the window pointer is null, or -if the window is really a pad, or -if some part of the window would be placed off-screen. -.TP 5 -\fBnewwin\fP -will fail if either of its beginning ordinates is negative, or -if either the number of lines or columns is negative. -.TP 5 -\fBsyncok\fP -returns an error -if the window pointer is null. -.TP 5 -\fBsubwin\fP -returns an error if the parent window pointer is null, or -if any of its ordinates or dimensions is negative, or -if the resulting window does not fit inside the parent window. +.I \%ncurses +maintains a list of windows, +and checks that the pointer passed to +.B \%delwin +is one that it created, +returning +.B ERR +if it was not. +.bP +.B \%derwin +returns +.B ERR +if +.I orig +is a null pointer, +or if any of the ordinate or dimension arguments is negative, +or if the resulting window does not fit inside the parent window. +.bP +.B \%dupwin +returns +.B ERR +if +.I win +is a null pointer. +.bP +.B \%mvderwin +returns +.B ERR +if +.I win +is a null pointer, +or if any part of the window would be placed off-screen. +.bP +.B \%mvwin +returns +.B ERR +if +.I win +is a null pointer, +if +.I win +is a pad, +or if any part of the window would be placed off-screen. +.bP +.B \%newwin +returns +.B ERR +if any of its arguments is negative. +.bP +.B \%subwin +returns +.B ERR +if +.I orig +is a null pointer, +or if any of the ordinate or dimension arguments is negative, +or if the resulting window does not fit inside the parent window. +.bP +.B \%syncok +returns +.B ERR +if +.I win +is a null pointer. +.PP +Functions that return a window pointer fail if memory allocation +for their data structures fails. .PP -The functions which return a window pointer -may also fail if there is insufficient memory for its data structures. -Any of these functions will fail if the screen has not been initialized, -i.e., with \fBinitscr\fP or \fBnewterm\fP. +All of these functions fail if the screen has not been initialized; +see \fBinitscr\fP(3X) or \fBnewterm\fP(3X). .SH NOTES -If many small changes are made to the window, the \fBwsyncup\fP option could -degrade performance. +.B \%syncok +may be implemented as a macro. .PP -Note that \fBsyncok\fP may be a macro. +Calling +.B \%syncup +on a window and making many small changes to it +could degrade performance. .SH PORTABILITY -X/Open Curses, Issue 4 describes these functions. +X/Open Curses Issue\ 4 describes these functions. +It specifies no error conditions for +.IR \%delwin "," +.IR \%derwin "," +.IR \%dupwin "," +.IR \%newwin "," +.IR \%mvderwin "," +or +.IR \%syncok "." .PP -X/Open Curses states regarding \fBdelwin\fP: -.bP -It must delete subwindows before deleting their parent. -.bP -If \fBdelwin\fP is asked to delete a parent window, -it can only succeed if the curses library keeps a list of the subwindows. -SVr4 curses kept a count of the number of subwindows rather than a list. -It simply returned \fBERR\fP when asked to delete a subwindow. -Solaris X/Open curses does not even make that check, -and will delete a parent window which still has subwindows. -.bP -Since release 4.0 (1996), -\fI\%ncurses\fP maintains a list of windows for each screen, -to ensure that a window has no subwindows before allowing deletion. -.bP -NetBSD copied this feature of \fI\%ncurses\fP in 2003. -.br -PDCurses follows the scheme used in Solaris X/Open curses. -.SH BUGS -The subwindow functions -\fB\%subwin\fP, -\fB\%derwin\fP, -\fB\%mvderwin\fP, -\fB\%wsyncup\fP, -\fB\%wsyncdown\fP, -\fB\%wcursyncup\fP, -and -\fB\%syncok\fP -are flaky, -incompletely implemented, -and not well tested. +For functions returning integers +(except +.IR \%delwin ")," +SVr4 describes a successful return value only as +\*(``an integer value other than +.IR ERR \*(''. \" Courier roman in source; SVID 4, vol. 3, p. 544 +.PP +Regarding +.IR \%delwin "," +X/Open Curses states that +.RS +.PP +[t]he application must delete subwindows before deleting the main +window. +.RE .PP -System\ V's \fIcurses\fP documentation is unclear about what -\fB\%wsyncup\fP and \fB\%wsyncdown\fP actually do. +If +.I \%delwin +is asked to delete a parent window, +it can succeed only if the +.I curses +library keeps a list of its subwindows. +SVr4 +.I curses +kept a count of the number of subwindows rather than a list. +It simply returned +.B ERR +when asked to delete a subwindow. +Solaris X/Open +.I curses +.RI \%( xcurses ) +does not make even that check, +and will delete a parent window that still has subwindows. +.I \%PDCurses +also behaves this way. +.PP +.I \%ncurses +4.0 (1996) and later maintains a list of windows for each screen +to ensure that a window has no subwindows before allowing its deletion. +NetBSD +.I curses +has followed suit since 2003. +.PP +SVr4 +.I curses +documentation is unclear about what +.I \%wsyncup +and +.I \%wsyncdown +actually do. It seems to imply that they are supposed to touch only those lines that are affected by changes to a window's ancestors. -The language here, -and behavior of \fI\%ncurses\fP, +The description and behavior of these functions in +.I \%ncurses is patterned on the X/Open Curses standard; this approach may result in slower updates. .SH SEE ALSO diff --git a/contrib/ncurses/man/define_key.3x b/contrib/ncurses/man/define_key.3x index 667d8cd312fe..a64c9a06e065 100644 --- a/contrib/ncurses/man/define_key.3x +++ b/contrib/ncurses/man/define_key.3x @@ -29,43 +29,101 @@ .\" .\" Author: Thomas E. Dickey 1997 .\" -.\" $Id: define_key.3x,v 1.42 2024/03/16 15:35:01 tom Exp $ -.TH define_key 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: define_key.3x,v 1.52 2024/12/28 21:26:21 tom Exp $ +.TH define_key 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +. .SH NAME \fB\%define_key\fP \- -define a \fIcurses\fR keycode +define a \fIcurses\fP function key code .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint define_key(const char *\fIdefinition\fP, int \fIkeycode\fP); +\fBint define_key(const char * \fIdefinition\fP, int \fIkey-code\fP); .fi .SH DESCRIPTION -This is an extension to the \fIcurses\fP library. -It permits an application to define keycodes with their corresponding control -strings, -so that the \fI\%ncurses\fP library will interpret them just as it would -the predefined codes in the terminfo database. +The +.B \%define_key +.I \%ncurses +extension permits a +.I curses +application to +.I bind +a string +.I definition +to the function key +.I key-code +returned by \fB\%wgetch\fP(3X) +(wide-character API users: +\fB\%wget_wch\fP(3X)) +when \fB\%keypad\fP(3X) is enabled in a window and a function key is +pressed. +.I \%ncurses +interprets such a binding as it does those in the +.I \%term\%info +database entry for the terminal type. .PP -If \fIdefinition\fP is \fBNULL\fP, -any existing one for the keycode is removed. -Similarly, if the given keycode is negative or zero, any existing string -for the given definition is removed. +A +.I definition +of +.I NULL +removes any existing binding from +.IR key-code "." +Similarly, +a non-positive +.I key-code +removes an existing binding for +.IR definition "," +if any. .SH RETURN VALUE -Either \fIkeycode\fP must be greater than zero, -or \fIdefinition\fP must be non-\fBNULL\fP, -otherwise \fBERR\fP is returned. -\fBERR\fP may also be returned if there is insufficient memory to allocate the -data to store the definition. -If no error is detected, \fBOK\fP is returned. +.B \%define_key +returns +.B ERR +if +.bP +.I definition +is +.I NULL +and +.I key-code +is nonpositive, +or +.bP +insufficient memory is available to bind +.I definition +to +.IR key-code "." +.PP +Otherwise, +.B \%define_key +returns +.BR OK "." +.SH EXTENSIONS +.B \%define_key +is an +.I \%ncurses +extension. .SH PORTABILITY -These routines are specific to \fI\%ncurses\fP. -They were not supported on -Version 7, BSD or System V implementations. -It is recommended that -any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +NetBSD +.I curses +since 2.0 (2004) supports +.IR \%define_key "." .SH AUTHORS Thomas Dickey .SH SEE ALSO +\fB\%curses\fP(3X), +\fB\%keybound\fP(3X), \fB\%keyok\fP(3X), -\fB\%key_defined\fP(3X) +\fB\%key_defined\fP(3X), +\fB\%terminfo\fP(5) diff --git a/contrib/ncurses/man/form.3x b/contrib/ncurses/man/form.3x index 2f8f884861fa..c54a4e1438bb 100644 --- a/contrib/ncurses/man/form.3x +++ b/contrib/ncurses/man/form.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form.3x,v 1.54 2024/03/16 15:35:01 tom Exp $ -.TH form 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form.3x,v 1.62 2025/11/12 01:27:41 tom Exp $ +.TH form 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -47,7 +47,7 @@ .. .SH NAME \fBform\fP \- -curses extension for programming forms +present user-fillable forms in \fIcurses\fP windows .SH SYNOPSIS .nf \fB#include <form.h> @@ -79,7 +79,9 @@ The \fBform\fP library maintains a default value for field attributes. You can get or set this default by calling the appropriate \fBset_\fP or retrieval -routine with a \fBNULL\fP field pointer. +routine with a +.I NULL +field pointer. Changing this default with a \fBset_\fP function affects future field creations, but does not change the rendering of fields already created. @@ -92,10 +94,9 @@ Routines flagged with \*(``*\*('' are \fI\%ncurses\fP-specific, not present in SVr4. .PP .TS -l l -l l . +L L. \fBcurses\fP Routine Name Manual Page Name -= +_ current_field \fBform_page\fP(3X) data_ahead \fBform_data\fP(3X) data_behind \fBform_data\fP(3X) @@ -173,7 +174,9 @@ unfocus_current_field \fBform_page\fP(3X)* unpost_form \fBform_post\fP(3X) .TE .SH RETURN VALUE -Routines that return pointers return \fBNULL\fP on error, +Routines that return pointers return +.I NULL +on error, and set \fBerrno\fP to the corresponding error-code returned by functions returning an integer. Routines that return diff --git a/contrib/ncurses/man/form_driver.3x b/contrib/ncurses/man/form_driver.3x index 882a49dd4634..1a1773a6faec 100644 --- a/contrib/ncurses/man/form_driver.3x +++ b/contrib/ncurses/man/form_driver.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_driver.3x,v 1.61 2024/04/20 18:55:09 tom Exp $ -.TH form_driver 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_driver.3x,v 1.64 2025/10/04 20:59:08 tom Exp $ +.TH form_driver 3X 2025-10-04 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -51,7 +51,8 @@ Once a form has been posted (displayed), you should funnel input events to it through \fBform_driver\fP. This routine has three major input cases: .bP The input is a form navigation request. -Navigation request codes are constants defined in \fB<form.h>\fP, +Navigation request codes are constants defined in +.IR form.h "," which are distinct from the key- and character codes returned by \fBwgetch\fP(3X). .bP diff --git a/contrib/ncurses/man/form_field.3x b/contrib/ncurses/man/form_field.3x index 9799d0c0cfda..700a97cd4be6 100644 --- a/contrib/ncurses/man/form_field.3x +++ b/contrib/ncurses/man/form_field.3x @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field.3x,v 1.34 2024/03/16 15:35:01 tom Exp $ -.TH form_field 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_field.3x,v 1.36 2024/12/28 21:26:21 tom Exp $ +.TH form_field 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBform_field\fP \- make and break connections between fields and forms @@ -44,7 +44,8 @@ make and break connections between fields and forms .fi .SH DESCRIPTION The function \fBset_form_fields\fP changes the field pointer array of -the given \fIform\fP. The array must be terminated by a \fBNULL\fP. +the given \fIform\fP. The array must be terminated by a +.IR NULL "." .PP The function \fBform_fields\fP returns the field array of the given form. .PP @@ -53,11 +54,13 @@ The function \fBfield_count\fP returns the count of fields in \fIform\fP. The function \fBmove_field\fP moves the given field (which must be disconnected) to a specified location on the screen. .SH RETURN VALUE -The function \fBform_fields\fP returns a pointer (which may be \fBNULL\fP). +The function \fBform_fields\fP returns a pointer (which may be +.IR NULL ")." It does not set \fBerrno\fP. .PP -The function \fBfield_count\fP returns \fBERR\fP if the \fIform\fP parameter -is \fBNULL\fP. +The function \fBfield_count\fP returns \fBERR\fP if the \fIform\fP +parameter is +.IR NULL "." .PP The functions \fBset_form_fields\fP and \fBmove_field\fP return one of the following codes on error: diff --git a/contrib/ncurses/man/form_field_buffer.3x b/contrib/ncurses/man/form_field_buffer.3x index ba176d3e122b..020ce41c204c 100644 --- a/contrib/ncurses/man/form_field_buffer.3x +++ b/contrib/ncurses/man/form_field_buffer.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_buffer.3x,v 1.45 2024/03/16 15:35:01 tom Exp $ -.TH form_field_buffer 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_field_buffer.3x,v 1.47 2024/12/28 21:26:21 tom Exp $ +.TH form_field_buffer 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -104,7 +104,9 @@ is set to a nonzero value whenever the field changes. The function \fBset_max_field\fP sets the maximum size for a dynamic field. An argument of 0 turns off any maximum size threshold for that field. .SH RETURN VALUE -The \fBfield_buffer\fP function returns NULL on error. +The \fBfield_buffer\fP function returns +.I NULL +on error. It sets \fBerrno\fP according to their success: .TP 5 .B E_OK diff --git a/contrib/ncurses/man/form_field_new.3x b/contrib/ncurses/man/form_field_new.3x index 9cf08adb521c..fdf1ff5585b9 100644 --- a/contrib/ncurses/man/form_field_new.3x +++ b/contrib/ncurses/man/form_field_new.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_new.3x,v 1.41 2024/03/16 15:35:01 tom Exp $ -.TH form_field_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_field_new.3x,v 1.43 2024/12/28 21:26:21 tom Exp $ +.TH form_field_new 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBnew_field\fP, \fBdup_field\fP, @@ -66,7 +66,8 @@ Attribute data is separate. The function \fBfree_field\fP de-allocates storage associated with a field. .SH RETURN VALUE The functions \fBnew_field\fP, \fBdup_field\fP, \fBlink_field\fP return -\fBNULL\fP on error. +.I NULL +on error. They set \fBerrno\fP according to their success: .TP 5 .B E_OK diff --git a/contrib/ncurses/man/form_field_opts.3x b/contrib/ncurses/man/form_field_opts.3x index 9ab3ad0cb32a..8972a7ffa61c 100644 --- a/contrib/ncurses/man/form_field_opts.3x +++ b/contrib/ncurses/man/form_field_opts.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2014,2015 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,18 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_opts.3x,v 1.44 2024/03/16 15:35:01 tom Exp $ -.TH form_field_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_field_opts.3x,v 1.47 2025/01/19 00:51:10 tom Exp $ +.TH form_field_opts 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} .SH NAME \fBset_field_opts\fP, \fBfield_opts_on\fP, @@ -46,8 +56,8 @@ set and get field options \fBint field_opts_off(FIELD *\fIfield\fP, Field_Options \fIopts\fP); .fi .SH DESCRIPTION -The function \fBset_field_opts\fP sets all the given field's option bits (field -option bits may be logically-OR'ed together). +The function \fBset_field_opts\fP sets all the given field's option bits +(field option bits may be logically \*(``or\*(''-ed together). .PP The function \fBfield_opts_on\fP turns on the given option bits, and leaves others alone. diff --git a/contrib/ncurses/man/form_field_userptr.3x b/contrib/ncurses/man/form_field_userptr.3x index 6eea09201e76..ef511e59fb35 100644 --- a/contrib/ncurses/man/form_field_userptr.3x +++ b/contrib/ncurses/man/form_field_userptr.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_userptr.3x,v 1.30 2024/03/16 15:35:01 tom Exp $ -.TH form_field_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_field_userptr.3x,v 1.32 2024/12/28 21:26:21 tom Exp $ +.TH form_field_userptr 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_field_userptr\fP, \fBfield_userptr\fP \- @@ -46,7 +46,8 @@ Every form field has a field that can be used to hold application-specific data These functions get and set that field. .SH RETURN VALUE -The function \fBfield_userptr\fP returns a pointer (which may be \fBNULL\fP). +The function \fBfield_userptr\fP returns a pointer (which may be +.IR NULL ")." It does not set \fBerrno\fP. .PP The function \fBset_field_userptr\fP returns \fBE_OK\fP (success). diff --git a/contrib/ncurses/man/form_field_validation.3x b/contrib/ncurses/man/form_field_validation.3x index 54fa2a72a4b4..c196f08e318a 100644 --- a/contrib/ncurses/man/form_field_validation.3x +++ b/contrib/ncurses/man/form_field_validation.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_validation.3x,v 1.53 2024/03/16 15:35:01 tom Exp $ -.TH form_field_validation 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_field_validation.3x,v 1.62 2025/08/16 19:11:47 tom Exp $ +.TH form_field_validation 3X 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -55,7 +55,7 @@ data type validation for fields \fBFIELDTYPE *field_type(const FIELD *\fIfield\fP); \fBint set_field_type(FIELD *\fIfield\fP, FIELDTYPE *\fItype\fP, ...); .PP -\fI/* predefined field types */\fP +\fI/* field types */\fP \fBFIELDTYPE *TYPE_ALNUM; \fBFIELDTYPE *TYPE_ALPHA; \fBFIELDTYPE *TYPE_ENUM; @@ -66,7 +66,7 @@ data type validation for fields .fi .SH DESCRIPTION By default, no validation is done on form fields. -You can associate a form with with a \fIfield type\fP, +You can associate a form with a \fIfield type\fP, making the form library validate input. .SS field_arg Returns a pointer to the field's argument block. @@ -81,12 +81,12 @@ a field type with a given form field. This is the type checked by validation functions. Most field types are configurable, via arguments which the caller provides when calling \fBset_field_type\fP. -.PP -Several field types are predefined by the form library. -.SH PREDEFINED TYPES -It is possible to set up new programmer-defined field types. -Field types are implemented via the \fBFIELDTYPE\fP data -structure, which contains several pointers to functions. +.SH "FIELD TYPES" +The +.I form +library defines several field types. +They are implemented via the \fBFIELDTYPE\fP data structure, +which contains several pointers to functions. .PP See the \fBform_fieldtype\fP(3X) manual page, which describes functions which can be used to construct @@ -174,7 +174,7 @@ trailing spaces (up to an empty field), or "^ *[0\-9]* *$" which is good for leading and trailing spaces around the digits. .SS TYPE_IPV4 -An Internet Protocol Version 4 address. +An Internet Protocol Version\ 4 address. Required parameter: .bP none @@ -186,8 +186,12 @@ The address itself is not validated. .PP This is an \fI\%ncurses\fP extension; this field type may not be available in other curses implementations. +.PP +It is possible to set up new programmer-defined field types. .SH RETURN VALUE -The functions \fBfield_type\fP and \fBfield_arg\fP return \fBNULL\fP on error. +The functions \fBfield_type\fP and \fBfield_arg\fP return +.I NULL +on error. The function \fBset_field_type\fP returns one of the following: .TP 5 .B E_OK diff --git a/contrib/ncurses/man/form_fieldtype.3x b/contrib/ncurses/man/form_fieldtype.3x index 81a58b1d8e48..0422a17fe4ef 100644 --- a/contrib/ncurses/man/form_fieldtype.3x +++ b/contrib/ncurses/man/form_fieldtype.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2006,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,19 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_fieldtype.3x,v 1.46 2024/03/16 15:35:01 tom Exp $ -.TH form_fieldtype 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_fieldtype.3x,v 1.51 2025/01/19 00:51:10 tom Exp $ +.TH form_fieldtype 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} +. .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -102,7 +113,9 @@ This function may be used by applications to copy argument-blocks. Frees an argument-block structure. .PP You must supply the \fImake_arg\fP function. -The other two are optional: you may supply NULL for them. +The other two are optional: you may supply +.I NULL +for them. In this case, the form library assumes that \fImake_arg\fP does not allocate memory but simply loads the argument into a single scalar value. @@ -119,7 +132,7 @@ argument-block structure as arguments. .SS link_fieldtype The function \fBlink_fieldtype\fP creates a new field type from the two given types. -They are connected by an logical 'OR'. +They are connected by a logical \*(``or\*(''. .SH RETURN VALUE The pointer-valued routines return NULL on error. They set \fBerrno\fP according to their success: diff --git a/contrib/ncurses/man/form_hook.3x b/contrib/ncurses/man/form_hook.3x index d93d8d875cb0..f75b85ecdb34 100644 --- a/contrib/ncurses/man/form_hook.3x +++ b/contrib/ncurses/man/form_hook.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_hook.3x,v 1.37 2024/03/16 15:35:01 tom Exp $ -.TH form_hook 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_hook.3x,v 1.39 2024/12/28 21:26:21 tom Exp $ +.TH form_hook 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBform_hook\fP \- set hooks for automatic invocation by applications @@ -55,28 +55,35 @@ points in the automatic processing of input event codes by \fBform_driver\fP. sets a hook to be called at form-post time and each time the selected field changes (after the change). .SS field_init -returns the current field init hook, if any (\fBNULL\fP if there is no such -hook). +returns the current field init hook, if any +.RI ( NULL +if there is no such hook). .SS set_field_term sets a hook to be called at form-unpost time and each time the selected field changes (before the change). .SS field_term -returns the current field term hook, if any (\fBNULL\fP if there is no such -hook). +returns the current field term hook, if any +.RI ( NULL +if there is no such hook). .SS set_form_init sets a hook to be called at form-post time and just after a page change once it is posted. .SS form_init returns the current form init hook, -if any (\fBNULL\fP if there is no such hook). +if any +.RI ( NULL +if there is no such hook). .SS set_form_term sets a hook to be called at form-unpost time and just before a page change once it is posted. .SS form_term -returns the current form term hook, if any (\fBNULL\fP if there is no such -hook). +returns the current form term hook, if any +.RI ( NULL +if there is no such hook). .SH RETURN VALUE -Routines that return pointers return \fBNULL\fP on error. +Routines that return pointers return +.I NULL +on error. Other routines return one of the following: .TP 5 diff --git a/contrib/ncurses/man/form_new.3x b/contrib/ncurses/man/form_new.3x index dc45e183f8aa..0fd4a0210c23 100644 --- a/contrib/ncurses/man/form_new.3x +++ b/contrib/ncurses/man/form_new.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_new.3x,v 1.32 2024/03/16 15:35:01 tom Exp $ -.TH form_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_new.3x,v 1.34 2024/12/28 21:26:21 tom Exp $ +.TH form_new 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBnew_form\fP, \fBfree_form\fP \- @@ -42,12 +42,15 @@ create and destroy forms .fi .SH DESCRIPTION The function \fBnew_form\fP creates a new form connected to a specified field -pointer array (which must be \fBNULL\fP-terminated). +pointer array (which must be +.IR NULL -terminated). .PP The function \fBfree_form\fP disconnects \fIform\fP from its field array and frees the storage allocated for the form. .SH RETURN VALUE -The function \fBnew_form\fP returns \fBNULL\fP on error. +The function \fBnew_form\fP returns +.I NULL +on error. It sets \fBerrno\fP according to the function's success: .TP 5 .B E_OK diff --git a/contrib/ncurses/man/form_opts.3x b/contrib/ncurses/man/form_opts.3x index 74a36d2b3d8e..3c92ecc6f4e7 100644 --- a/contrib/ncurses/man/form_opts.3x +++ b/contrib/ncurses/man/form_opts.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2015 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,18 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_opts.3x,v 1.34 2024/03/16 15:35:01 tom Exp $ -.TH form_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_opts.3x,v 1.37 2025/01/19 00:51:10 tom Exp $ +.TH form_opts 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} .SH NAME \fBset_form_opts\fP, \fBform_opts_on\fP, @@ -46,8 +56,8 @@ set and get form options \fBint form_opts_off(FORM *\fIform\fP, Field_Options \fIopts\fP); .fi .SH DESCRIPTION -The function \fBset_form_opts\fP sets all the given form's option bits (form -option bits may be logically-OR'ed together). +The function \fBset_form_opts\fP sets all the given form's option bits +(form option bits may be logically \*(``or\*(''-ed together). .PP The function \fBform_opts_on\fP turns on the given option bits, and leaves others alone. diff --git a/contrib/ncurses/man/form_page.3x b/contrib/ncurses/man/form_page.3x index fa538c620143..47f60a7bd8e8 100644 --- a/contrib/ncurses/man/form_page.3x +++ b/contrib/ncurses/man/form_page.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_page.3x,v 1.37 2024/03/16 15:35:01 tom Exp $ -.TH form_page 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_page.3x,v 1.39 2024/12/28 21:26:21 tom Exp $ +.TH form_page 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBform_page\fP \- set and get form page number @@ -52,7 +52,9 @@ form; \fBcurrent_field\fP returns the current field of the given form. .PP The function \fBunfocus_current_field\fP removes the focus from the current field of the form. -In such state, inquiries via \fBcurrent_field\fP shall return a NULL pointer. +In such state, inquiries via \fBcurrent_field\fP shall return a +.I NULL +pointer. .PP The function \fBset_form_page\fP sets the form's page number (goes to page \fIn\fP of the form). diff --git a/contrib/ncurses/man/form_requestname.3x b/contrib/ncurses/man/form_requestname.3x index 4075ea73c756..27c897c961d2 100644 --- a/contrib/ncurses/man/form_requestname.3x +++ b/contrib/ncurses/man/form_requestname.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_requestname.3x,v 1.35 2024/03/16 15:35:01 tom Exp $ -.TH form_requestname 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_requestname.3x,v 1.37 2024/12/28 21:26:21 tom Exp $ +.TH form_requestname 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBform_request_by_name\fP, \fBform_request_name\fP \- @@ -47,7 +47,9 @@ The function \fBform_request_by_name\fP searches in the name-table for a request with the given name and returns its request code. Otherwise E_NO_MATCH is returned. .SH RETURN VALUE -\fBform_request_name\fP returns \fBNULL\fP on error and sets \fBerrno\fP +\fBform_request_name\fP returns +.I NULL +on error and sets \fBerrno\fP to \fBE_BAD_ARGUMENT\fP. .PP \fBform_request_by_name\fP returns \fBE_NO_MATCH\fP on error. diff --git a/contrib/ncurses/man/form_userptr.3x b/contrib/ncurses/man/form_userptr.3x index 11c990c0030b..b4f5d576a3af 100644 --- a/contrib/ncurses/man/form_userptr.3x +++ b/contrib/ncurses/man/form_userptr.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_userptr.3x,v 1.36 2024/03/16 15:35:01 tom Exp $ -.TH form_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_userptr.3x,v 1.38 2024/12/28 21:26:21 tom Exp $ +.TH form_userptr 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_form_userptr\fP, \fBform_userptr\fP \- @@ -45,7 +45,8 @@ Every form and every form item has a field that can be used to hold application-specific data (that is, the form-driver code leaves it alone). These functions get and set the form user pointer field. .SH RETURN VALUE -The function \fBform_userptr\fP returns a pointer (which may be \fBNULL\fP). +The function \fBform_userptr\fP returns a pointer (which may be +.IR NULL ")." It does not set \fBerrno\fP. .PP The function \fBset_form_userptr\fP returns \fBE_OK\fP (success). diff --git a/contrib/ncurses/man/form_win.3x b/contrib/ncurses/man/form_win.3x index 4a75b294ce01..ef6b27cfbea9 100644 --- a/contrib/ncurses/man/form_win.3x +++ b/contrib/ncurses/man/form_win.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_win.3x,v 1.35 2024/03/16 15:35:01 tom Exp $ -.TH form_win 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: form_win.3x,v 1.37 2024/12/28 21:26:21 tom Exp $ +.TH form_win 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBform_win\fP \- make and break form window and subwindow associations @@ -54,14 +54,20 @@ The first four functions get and set those windows. It is not necessary to set either window; by default, the driver code uses \fBstdscr\fP for both. .PP -In the \fBset_\fP functions, window argument of \fBNULL\fP is treated as though -it were \fBstsdcr\fP. A form argument of \fBNULL\fP is treated as a request +In the \fBset_\fP functions, window argument of +.I NULL +is treated as though +it were \fBstsdcr\fP. A form argument of +.I NULL +is treated as a request to change the system default form window or subwindow. .PP The function \fBscale_form\fP returns the minimum size required for the subwindow of \fIform\fP. .SH RETURN VALUE -Routines that return pointers return \fBNULL\fP on error. +Routines that return pointers return +.I NULL +on error. Routines that return an integer return one of the following error codes: .TP 5 diff --git a/contrib/ncurses/man/infocmp.1m b/contrib/ncurses/man/infocmp.1m index 5f92c96dd63b..2868da57d5e2 100644 --- a/contrib/ncurses/man/infocmp.1m +++ b/contrib/ncurses/man/infocmp.1m @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2017,2018 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: infocmp.1m,v 1.109 2024/03/16 15:35:01 tom Exp $ -.TH @INFOCMP@ 1M 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: infocmp.1m,v 1.128 2025/11/12 00:52:57 tom Exp $ +.TH @INFOCMP@ 1M 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -49,12 +49,13 @@ .el .IP \(bu 2 .. . -.ds d @TERMINFO@ .SH NAME \fB@INFOCMP@\fP \- compare or print out \fIterminfo\fP descriptions .SH SYNOPSIS -\fB@INFOCMP@\fP [\fB\-\ +.HP +.B @INFOCMP@ +.RB [ \-\ 1\ c\ C\ @@ -81,70 +82,59 @@ U\ V\ W\ x\ -\fP] - [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-Q\fR \fIn\fR] [\fB\-R \fBsubset\fR] - [\fB\-w\fP\ \fIwidth\fP] [\fB\-A\fP\ \fIdirectory\fP] [\fB\-B\fP\ \fIdirectory\fP] - [\fIterminal-type\fP ...] +] +.RB [ \-A\ \c +.IR directory ] +.RB [ \-B\ \c +.IR directory ] +.RB [ \-Q\ \c +.IR encoding ] +.RB [ \-R\ \c +.IR subset ] +.RB [ \-s\ \c +.IR key ] +.RB [ \-v\ \c +.IR level ] +.RB [ \-w\ \c +.IR width ] +.RI [ \%terminal\%-type +\&.\|.\|.\& ] .SH DESCRIPTION -\fB@INFOCMP@\fP can be used to compare a binary \fBterminfo\fP entry with other -terminfo entries, rewrite a \fBterminfo\fP description to take advantage of the -\fBuse=\fP terminfo field, or print out a \fBterminfo\fP description from the -binary file (\fBterm\fP) in a variety of formats. -In all cases, the Boolean -fields will be printed first, followed by the numeric fields, followed by the -string fields. +.B @INFOCMP@ +reports a human-readable terminal type description +from a compiled entry in the +.I \%term\%info +database in a variety of selectable formats, +compares such entries to each other, +and rewrites an entry to replace +.RB \*(`` use \*('' +expressions with the content of other entries by reference. +A +.I "\%term\%info entry" +comprises +a list of one or more terminal type identifiers, +a human-readable description of the terminal type, +and a list of terminal +.I capabilities +that characterize its programming interface. +In all cases, +the program reports +Boolean-valued capabilities first, +followed by numeric ones, +and then string-valued capabilities. .SS "Default Options" -If no options are specified and zero or one \fIterminal-types\fP are -specified, -the -\fB\-I\fP option will be assumed. -If more than one \fIterminal-type\fP is specified, -the \fB\-d\fP option will be assumed. -.SS "Comparison Options [\-d] [\-c] [\-n]" -\fB@INFOCMP@\fP compares the \fBterminfo\fP description of the first terminal -\fIterminal-type\fP with each of the descriptions given by the entries -for the other terminal's \fIterminal-types\fP. -If a capability is defined for only one of the -terminals, the value returned depends on the type of the capability: -.bP -\fBF\fP for missing Boolean variables -.bP -\fBNULL\fP for missing integer or string variables -.PP -Use the \fB\-q\fP option to show the distinction between -\fIabsent\fP and \fIcancelled\fP capabilities. -.PP -These options produce a list which you can use to compare two -or more terminal descriptions: -.TP 5 -\fB\-d\fP -produces a list of each capability that is \fIdifferent\fP -between two entries. -Each item in the list shows \*(``:\*('' after the capability name, -followed by the capability values, separated by a comma. -.TP -\fB\-c\fP -produces a list of each capability that is \fIcommon\fP between -two or more entries. -Missing capabilities are ignored. -Each item in the list shows \*(``=\*('' after the capability name, -followed by the capability value. -.IP -The \fB\-u\fP option provides a related output, -showing the first terminal description rewritten to use the second -as a building block via the \*(``use=\*('' clause. -.TP -\fB\-n\fP -produces a list of each capability that is in \fInone\fP of the given entries. -Each item in the list shows \*(``!\*('' before the capability name. -.IP -Normally only the conventional capabilities are shown. -Use the \fB\-x\fP option to add the BSD-compatibility -capabilities (names prefixed with \*(``OT\*(''). -.IP -If no \fIterminal-types\fP are given, -\fB@INFOCMP@\fP uses the environment variable \fITERM\fP -for each of the \fIterminal-types\fP. +If no options are specified and zero or one +.I terminal-types +is specified, +.B @INFOCMP@ +assumes the +.B \-I +option. +If more than one is specified, +the program +assumes the +.B \-d +option. .SS "Source Listing Options [\-I] [\-L] [\-C] [\-r]" The \fB\-I\fP, \fB\-L\fP, and \fB\-C\fP options will produce a source listing for each terminal named. @@ -231,6 +221,90 @@ _ .\" hpgeneric cup %p2\fR\|.\|.\|.\|\fP%p1 %r hpgeneric .TE +.SS "Entry Comparison Options [-d] [-c] [-n]" +Given +.BR \-c , +.BR \-d , +or +.BR \-n , +.B @INFOCMP@ +compares the +.I \%term\%info +description of the first specified +.I terminal-type +with those of each of the subsequent operands. +If fewer +.I terminal-types +than required are specified, +.B @INFOCMP@ +uses the environment variable +.I TERM +in their place. +.PP +If a capability is defined for only one terminal type, +the value reported depends on the capability's type: +.bP +.B F +for missing Boolean variables +.bP +.B NULL +for missing integer or string variables +.PP +The +.B \-c +and +.B \-d +options report string capability values +between \*(``\*'\*('' characters. +Use the +.B \-q +option to distinguish +.I absent +and +.I canceled +capabilities; +see \fB\%terminfo\fP(5). +.PP +The comparison option selects the form of report. +.TP 5 +.B \-d +lists each capability that +.I differs +between two entries. +Each capability name is followed by \*(``:\*('' +and comma-separated capability values, +then a period. +.TP +.B \-c +lists each capability that two entries have in +.IR common "." +.B @INFOCMP@ +ignores capabilities missing from either entry. +Each capability name is followed by \*(``=\*('', +a space, +and the capability value, +then a period. +.IP +If the +.B \-u +option is further specified, +.B @INFOCMP@ +rewrites the description of the first type +employing \*(``use=\*('' syntax +to use the second as a building block. +.TP +.B \-n +lists capabilities that are in +.I none +of the given entries. +Each capability name is preceded by \*(``!\*('' +and followed by a period. +.IP +Normally only conventional capabilities are shown. +Use the +.B \-x +option to add BSD-compatibility capabilities +(names prefixed with \*(``OT\*(''). .SS "Use= Option [\-u]" The \fB\-u\fP option produces a \fBterminfo\fP source description of the first terminal \fIterminal-type\fP which is relative to the sum of the @@ -278,7 +352,7 @@ the compilation time, is specifying extra \fBuse=\fP fields that are superfluous. \fB@INFOCMP@\fP will flag any other \fIterminal-type use=\fP fields that were not needed. -.SS "Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]" +.SS "Changing Databases [\-A \fIdirectory\fP] [\-B \fIdirectory\fP]" Like other \fI\%ncurses\fP utilities, \fB@INFOCMP@\fP looks for the terminal descriptions in several places. You can use the \fI\%TERMINFO\fP and \fI\%TERMINFO_DIRS\fP environment @@ -479,7 +553,8 @@ Make the comparison listing shorter by omitting subheadings, and using \*(``\-\*('' for absent capabilities, \*(``@\*('' for canceled rather than \*(``NULL\*(''. .bP -However, show differences between absent and cancelled capabilities. +However, +show differences between absent and canceled capabilities. .bP Omit the \*(``Reconstructed from\*('' comment for source listings. .RE @@ -508,7 +583,7 @@ if they are processed later in the command parameters: .RS .TP 5 \fB\-C\fP -sets the \*(``BSD\*('' subset as a side-effect. +sets the \*(``BSD\*('' subset as a side effect. .TP 5 \fB\-I\fP sets the subset to all capabilities. @@ -584,44 +659,62 @@ These are extensions to the terminfo repertoire which can be loaded using the \fB\-x\fP option of \fB@TIC@\fP. .SH FILES .TP -.I \*d +.I @TERMINFO@ compiled terminal description database .SH EXTENSIONS The -\fB\-0\fP, -\fB\-1\fP, -\fB\-E\fP, -\fB\-F\fP, -\fB\-G\fP, -\fB\-Q\fP, -\fB\-R\fP, -\fB\-T\fP, -\fB\-V\fP, -\fB\-a\fP, -\fB\-e\fP, -\fB\-f\fP, -\fB\-g\fP, -\fB\-i\fP, -\fB\-l\fP, -\fB\-p\fP, -\fB\-q\fP and -\fB\-t\fP -options are not supported in SVr4 curses. +.BR \-0 "," +.BR \-1 "," +.BR \-a "," +.BR \-e "," +.BR \-E "," +.BR \-f "," +.BR \-F "," +.BR \-g "," +.BR \-G "," +.BR \-i "," +.BR \-l "," +.BR \-p "," +.BR \-q "," +.BR \-Q "," +.BR \-R "," +.BR \-t "," +.BR \-T "," +and +.B \-V +options are +.I \%ncurses +extensions. +.SH PORTABILITY +X/Open Curses Issue\ 7 (2009) specifies +.IR \%infocmp "." +It does not mention options for producing descriptions in +.I \%term\%cap +format. .PP -SVr4 infocmp does not distinguish between absent and cancelled capabilities. -Also, it shows missing integer capabilities as \fB\-1\fP -(the internal value used to represent missing integers). -This implementation shows those as \*(``NULL\*('', -for consistency with missing strings. +SVr4 +.I \%infocmp +does not distinguish between absent and canceled capabilities. +It furthermore reports missing integer capabilities as +.B \-1 +(its internal representation). +.I \%ncurses +shows these as \*(``NULL\*('' +for consistency with missing string capabilities. .PP -The \fB\-r\fP option's notion of \*(``termcap\*('' capabilities -is System V Release 4's. -Actual BSD curses versions will have a more restricted set. -To see only the -4.4BSD set, use \fB\-r\fP \fB\-RBSD\fP. -.SH PORTABILITY -X/Open Curses, Issue 7 (2009) provides a description of \fBinfocmp\fP. -It does not mention the options used for converting to termcap format. +The +.B \-r +option +of +.I \%ncurses +.I \%infocmp +uses SVr4's notion of \*(``termcap\*('' capabilities. +BSD +.I curses +had a more restricted set. +To see only those present in 4.4BSD, +use +.RB \*(`` "\-r \-RBSD" \*(''. .SH HISTORY Although System V Release 2 provided a terminfo library, it had no documented tool for decompiling the terminal descriptions. diff --git a/contrib/ncurses/man/infotocap.1m b/contrib/ncurses/man/infotocap.1m index 0f0335d44603..6684f91ad32d 100644 --- a/contrib/ncurses/man/infotocap.1m +++ b/contrib/ncurses/man/infotocap.1m @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1999-2010,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: infotocap.1m,v 1.41 2024/03/16 15:35:01 tom Exp $ -.TH @INFOTOCAP@ 1M 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: infotocap.1m,v 1.52 2025/10/04 20:10:32 tom Exp $ +.TH @INFOTOCAP@ 1M 2025-10-04 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -40,7 +40,6 @@ .el .ds '' "" .\} . -.ds d @TERMINFO@ .SH NAME \fB\%@INFOTOCAP@\fP \- convert a \fI\%terminfo\fR description into a \fI\%termcap\fR description @@ -52,39 +51,60 @@ convert a \fI\%terminfo\fR description into a \fI\%termcap\fR description .P .B "@INFOTOCAP@ \-V" .SH DESCRIPTION -\fB\%@INFOTOCAP@\fP translates terminal descriptions. -It looks in each given text \fIfile\fP for \fI\%terminfo\fP entries and, -For each one found, -it writes an analogous \fI\%termcap\fP description to the standard -output stream. -\fI\%terminfo\fP \*(``\fBuse\fP\*('' capabilities translate to -\fI\%termcap\fP \fBtc\fP capabilities. -Because \fI\%termcap\fP is a less expressive format than -\fI\%terminfo\fP, +.B \%@INFOTOCAP@ +translates terminal descriptions. +It looks in each given text +.I file +for +.I \%terminfo +entries and, +for each one found, +writes an analogous +.I \%termcap +description to the standard output stream. +.I \%terminfo +.RB \*(`` use \*('' +capabilities translate to +.I \%termcap +.B tc +capabilities. +Because +.I \%termcap +is a less expressive format than +.IR \%terminfo , some capabilities cannot be translated. .PP This utility is implemented as a link to \fB\%@TIC@\fP(1M), with the latter's .B \-C option implied. -You can use other \fB\%@TIC@\fP options such as +You can use other +.B \%@TIC@ +options such as .BR \-1 , .BR \-f , .BR \-v , .BR \-w , and .BR \-x . -The \fB\-V\fP option reports the version of \fI\%ncurses\fP associated -with this program and exits with a successful status. +The +.B \-V +option reports the version of +.I \%ncurses +associated with this program and exits with a successful status. .SH FILES .TP -.I \*d +.I @TERMINFO@ compiled terminal description database +.SH EXTENSIONS +This command is an +.I \%ncurses +extension. .SH PORTABILITY -None of X/Open Curses, -Issue 7 (2009), -SVr4, -or NetBSD document this application. +X/Open Curses Issue\ 7 (2009) does not specify this command. +SVr4 and NetBSD +.I curses +do not implement it. .SH AUTHORS Eric S. Raymond <esr@snark.thyrsus.com> and diff --git a/contrib/ncurses/man/key_defined.3x b/contrib/ncurses/man/key_defined.3x index f0184aa77df1..3c15e67f451f 100644 --- a/contrib/ncurses/man/key_defined.3x +++ b/contrib/ncurses/man/key_defined.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2003-2006,2010 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,33 +29,57 @@ .\" .\" Author: Thomas E. Dickey 2003 .\" -.\" $Id: key_defined.3x,v 1.34 2024/03/16 15:35:01 tom Exp $ -.TH key_defined 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: key_defined.3x,v 1.44 2025/10/04 20:11:22 tom Exp $ +.TH key_defined 3X 2025-10-04 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fB\%key_defined\fP \- -test whether a \fIcurses\fR keycode is defined +obtain key code for an \fIncurses\fP function key definition .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint key_defined(const char *\fIdefinition\fP); +\fBint key_defined(const char * \fIdefinition\fP); .fi .SH DESCRIPTION -This is an extension to the \fIcurses\fP library. -It permits an application to determine if a string is currently bound -to any keycode. +The +.B \%key_defined +.I \%ncurses +extension permits a +.I curses +application to determine the function key code, +if any, +to which the string +.I definition +is bound. .SH RETURN VALUE -If the string is bound to a keycode, its value (greater than zero) is returned. -If no keycode is bound, zero is returned. -If the string conflicts with longer strings -which are bound to keys, \-1 is returned. +.B \%key_defined +returns the first key code to which +.I definition +is bound if any exists. +If none does, +it returns +.BR 0 "." +If +.I definition +is a prefix of another bound definition, +.B \%key_defined +returns +.BR \-1 "." +.SH EXTENSIONS +.B \%key_defined +is an +.I \%ncurses +extension. .SH PORTABILITY -This routine is specific to \fI\%ncurses\fP. -It was not supported on -Version 7, BSD or System V implementations. -It is recommended that -any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. .SH AUTHORS Thomas Dickey .SH SEE ALSO -\fB\%define_key\fP(3X) +\fB\%curses\fP(3X), +\fB\%define_key\fP(3X), +\fB\%keybound\fP(3X), +\fB\%keyok\fP(3X) diff --git a/contrib/ncurses/man/keybound.3x b/contrib/ncurses/man/keybound.3x index bd8bb80f3c44..19c14bf6d7e1 100644 --- a/contrib/ncurses/man/keybound.3x +++ b/contrib/ncurses/man/keybound.3x @@ -29,37 +29,76 @@ .\" .\" Author: Thomas E. Dickey 1999 .\" -.\" $Id: keybound.3x,v 1.36 2024/03/16 15:35:01 tom Exp $ -.TH keybound 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: keybound.3x,v 1.42 2024/12/28 21:26:21 tom Exp $ +.TH keybound 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fB\%keybound\fP \- -get definition of \fIcurses\fR keycode +get definition of a \fIcurses\fP function key code .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBchar * keybound(int \fIkeycode\fP, int \fIcount\fP); +\fBchar * keybound(int \fIkey-code\fP, int \fIcount\fP); .fi .SH DESCRIPTION -This is an extension to the \fIcurses\fP library. -It permits an application to determine the string which is defined -in the terminfo for specific keycodes. +The +.B \%keybound +.I \%ncurses +extension permits a +.I curses +application to obtain the value of the string +.I bound +to the function key +.IR key-code ";" +see \fB\%wgetch\fP(3X) +(wide-character API users: \fB\%wget_wch\fP(3X)). +By default, +such bindings are string capabilities from the +.I \%term\%info +database entry corresponding to the terminal type. +The application can non-destructively and repeatedly +override such definitions with +\fB\%define_key\fP(3X), +as if by pushing new definitions onto a stack. +The +.I count +parameter accesses the +.IR n th +most recently defined binding; +.B 0 +selects the binding that is used on input. .SH RETURN VALUE -The \fIkeycode\fP parameter must be greater than zero, -else \fBNULL\fP is returned. -If it does not correspond to a defined key, then \fBNULL\fP is returned. -The \fIcount\fP parameter is used to allow the application to iterate -through multiple definitions, counting from zero. -When successful, -the function returns a string which must be freed by the caller. +If +.I key-code +corresponds to a function key defined +by the application +or the terminal type in use, +.B \%keybound +allocates and returns a string +that must be freed by the application. +.B \%keybound +returns +.I NULL +if +.I key-code +is not positive +or if it does not correspond to a key code definition. +.SH EXTENSIONS +.B \%keybound +is an +.I \%ncurses +extension. .SH PORTABILITY -This routine is specific to \fI\%ncurses\fP. -It was not supported on -Version 7, BSD or System V implementations. -It is recommended that -any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. .SH AUTHORS Thomas Dickey .SH SEE ALSO +\fB\%curses\fP(3X), \fB\%define_key\fP(3X), -\fB\%keyok\fP(3X) +\fB\%keyok\fP(3X), +\fB\%key_defined\fP(3X), +\fB\%terminfo\fP(5) diff --git a/contrib/ncurses/man/keyok.3x b/contrib/ncurses/man/keyok.3x index b4c7de2b4948..d8072afb1264 100644 --- a/contrib/ncurses/man/keyok.3x +++ b/contrib/ncurses/man/keyok.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,35 +29,83 @@ .\" .\" Author: Thomas E. Dickey 1997 .\" -.\" $Id: keyok.3x,v 1.40 2024/03/16 15:35:01 tom Exp $ -.TH keyok 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: keyok.3x,v 1.51 2025/10/04 20:59:08 tom Exp $ +.TH keyok 3X 2025-10-04 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +. .SH NAME \fB\%keyok\fP \- -enable or disable a \fIcurses\fR keycode +enable or disable an \fIncurses\fP function key code .SH SYNOPSIS .nf \fB#include <curses.h> .PP -\fBint keyok(int \fIkeycode\fP, bool \fIenable\fP); +\fBint keyok(int \fIkey-code\fP, bool \fIbf\fP); .fi .SH DESCRIPTION -This is an extension to the \fIcurses\fP library. -It permits an application to disable specific keycodes, rather than -use the \fB\%keypad\fP function to disable all keycodes. -Keys that have been disabled can be re-enabled. +The +.B \%keyok +.I \%ncurses +extension permits a +.I curses +application to disable a function key +.I key-code +returned by \fB\%wgetch\fP(3X) +(wide-character API users: +\fB\%wget_wch\fP(3X)). +Key codes that have been disabled can be re-enabled. +.I bf +selects the desired enablement status. +This operation is more fine-grained than calling \fB\%keypad\fP(3X), +which affects +.I all +function keys. .SH RETURN VALUE -The keycode must be greater than zero, else \fBERR\fP is returned. -If it does not correspond to a defined key, then \fBERR\fP is returned. -If the \fIenable\fP parameter is true, then the key must have been disabled, -and vice versa. -Otherwise, the function returns \fBOK\fP. +.B \%keyok +returns +.B ERR +if +.bP +.I key-code +is nonpositive, +.bP +.I key-code +is not a recognized value, +or +.bP +enablement of +.I key-code +is already in the desired state. +.PP +Otherwise, +.B \%keyok +returns +.BR OK "." +.SH EXTENSIONS +.B \%keyok +is an +.I \%ncurses +extension. .SH PORTABILITY -This routine is specific to \fI\%ncurses\fP. -It was not supported on -Version 7, BSD or System V implementations. -It is recommended that -any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. +.PP +NetBSD +.I curses +since 2.0 (2004) supports +.IR \%keyok "." .SH AUTHORS Thomas Dickey .SH SEE ALSO -\fB\%define_key\fP(3X) +\fB\%curses\fP(3X), +\fB\%define_key\fP(3X), +\fB\%keybound\fP(3X), +\fB\%keyok\fP(3X), +\fB\%key_defined\fP(3X) diff --git a/contrib/ncurses/man/legacy_coding.3x b/contrib/ncurses/man/legacy_coding.3x index ccfdd5564bb9..12b39538b8bc 100644 --- a/contrib/ncurses/man/legacy_coding.3x +++ b/contrib/ncurses/man/legacy_coding.3x @@ -29,8 +29,8 @@ .\" .\" Author: Thomas E. Dickey .\" -.\" $Id: legacy_coding.3x,v 1.28 2024/04/20 19:13:50 tom Exp $ -.TH legacy_coding 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: legacy_coding.3x,v 1.32 2024/09/14 20:06:50 tom Exp $ +.TH legacy_coding 3X 2024-09-14 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fB\%use_legacy_coding\fP \- override \fIcurses\fR locale encoding checks @@ -41,15 +41,18 @@ override \fIcurses\fR locale encoding checks \fBint use_legacy_coding(int \fIlevel\fP); .fi .SH DESCRIPTION -.B \%use_legacy_coding -is an extension to the +.BR \%use_legacy_coding "," +an +.I \%ncurses +extension to the .I curses -library. -It allows the caller to change the result of \fB\%unctrl\fP(3X), +library, +permits customiztion of \fB\%unctrl\fP(3X) behavior, suppressing \fI\%isprint\fP(3)-based checks within the library that would normally cause nonprinting characters to be rendered in visible form. -The alteration affects only eight-bit characters. +The alteration affects only byte-wide characters with the most +significant bit set. .PP The .I level @@ -73,7 +76,9 @@ It also modifies the output of \fB\%unctrl\fP(3X), showing codes in the range 128-159 as is. .RE .SH RETURN VALUE -If the screen has not been initialized, +If the +.I curses +screen has not been initialized, or the .I level parameter is out of range, @@ -81,23 +86,24 @@ parameter is out of range, returns .BR ERR . Otherwise, -it returns the previous level: -.BR 0 , -.BR 1 , -or -.BR 2 . -.SH PORTABILITY +it returns the previous level. +.SH EXTENSIONS .B \%use_legacy_coding -is specific to -.IR \%ncurses . -It was not supported on Version 7, BSD or System V implementations. +is an +.I \%ncurses +extension. +.SH PORTABILITY Applications employing .I \%ncurses extensions should condition their use on the visibility of the .B \%NCURSES_VERSION preprocessor macro. +.SH HISTORY +.I \%ncurses +5.6 (2006) introduced +.I \%use_legacy_coding +to support \fI\%lynx\fP(1)'s font-switching feature. .SH AUTHORS Thomas Dickey -(to support \fI\%lynx\fP(1)'s font-switching feature). .SH SEE ALSO \fB\%unctrl\fP(3X) diff --git a/contrib/ncurses/man/make_sed.sh b/contrib/ncurses/man/make_sed.sh index ee7df41775e0..0151d8706f73 100755 --- a/contrib/ncurses/man/make_sed.sh +++ b/contrib/ncurses/man/make_sed.sh @@ -1,7 +1,7 @@ #!/bin/sh -# $Id: make_sed.sh,v 1.19 2023/12/07 01:16:43 tom Exp $ +# $Id: make_sed.sh,v 1.22 2025/11/12 00:52:57 Branden.Robinson Exp $ ############################################################################## -# Copyright 2020-2022,2023 Thomas E. Dickey # +# Copyright 2020-2023,2025 Thomas E. Dickey # # Copyright 1998-2005,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -31,9 +31,9 @@ # # Author: Thomas E. Dickey 1997 # -# Construct a sed-script to perform renaming within man-pages. Originally +# Construct a sed script to perform renaming within man pages. Originally # written in much simpler form, this one accounts for the common cases of -# section-names in man-pages. +# section names in man pages. if test $# != 1 ; then echo '? expected a single filename' @@ -79,7 +79,7 @@ echo "# Do the embedded references" sed -e 's/</<fB\\(\\\\%\\)\\?/' \ -e 's/\\%</\\%/' \ -e 's/ /\\\\fP(/' \ - -e 's/ /)\/fB\\\\%/' \ + -e 's/ /)\/fB\\1/' \ -e 's/ /\\\\fP(/' \ -e 's/\/$/)\//' \ $UPPER diff --git a/contrib/ncurses/man/man_db.renames.in b/contrib/ncurses/man/man_db.renames.in index 2b18a016eafc..3ae7da2928ad 100644 --- a/contrib/ncurses/man/man_db.renames.in +++ b/contrib/ncurses/man/man_db.renames.in @@ -1,5 +1,5 @@ ############################################################################## -# Copyright 2019-2023,2024 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 1998-2015,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -26,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: man_db.renames.in,v 1.73 2024/04/13 23:39:11 tom Exp $ +# $Id: man_db.renames.in,v 1.87 2025/08/16 19:36:29 Branden.Robinson Exp $ # Manual-page renamings for the man_db program # # Files: @@ -178,11 +178,13 @@ attr_get.3x attr_get.3ncurses attr_on.3x attr_on.3ncurses attron.3x attron.3ncurses baudrate.3x baudrate.3ncurses +beep.3x beep.3ncurses bkgd.3x bkgd.3ncurses bkgrnd.3x bkgrnd.3ncurses cbreak.3x cbreak.3ncurses clearok.3x clearok.3ncurses clrtoeol.3x clrtoeol.3ncurses +color_content.3x color_content.3ncurses curs_set.3x curs_set.3ncurses curscr.3x curscr.3ncurses curses_trace.3x curses_trace.3ncurses @@ -195,14 +197,19 @@ derwin.3x derwin.3ncurses doupdate.3x doupdate.3ncurses echo.3x echo.3ncurses endwin.3x endwin.3ncurses +erasechar.3x erasechar.3ncurses +erasewchar.3x erasewchar.3ncurses extended_slk_color.3x extended_slk_color.3ncurses filter.3x filter.3ncurses flushinp.3x flushinp.3ncurses get_wch.3x get_wch.3ncurses +get_wstr.3x get_wstr.3ncurses getattr.3x getattr.3ncurses getcchar.3x getcchar.3ncurses getch.3x getch.3ncurses +getstr.3x getstr.3ncurses getwin.3x getwin.3ncurses +getyx.3x getyx.3ncurses halfdelay.3x halfdelay.3ncurses has_key.3x has_key.3ncurses idcok.3x idcok.3ncurses @@ -210,13 +217,18 @@ idlok.3x idlok.3ncurses immedok.3x immedok.3ncurses in_wch.3x in_wch.3ncurses inch.3x inch.3ncurses +init_color.3x init_color.3ncurses initscr.3x initscr.3ncurses +is_cbreak.3x is_cbreak.3ncurses is_scrollok.3x is_scrollok.3ncurses keyname.3x keyname.3ncurses keypad.3x keypad.3ncurses +killchar.3x killchar.3ncurses +killwchar.3x killwchar.3ncurses leaveok.3x leaveok.3ncurses longname.3x longname.3ncurses meta.3x meta.3ncurses +mousemask.3x mousemask.3ncurses move.3x move.3ncurses mvcur.3x mvcur.3ncurses mvwin.3x mvwin.3ncurses @@ -227,14 +239,16 @@ nl.3x nl.3ncurses nocbreak.3x nocbreak.3ncurses nodelay.3x nodelay.3ncurses nonl.3x nonl.3ncurses +noraw.3x noraw.3ncurses notimeout.3x notimeout.3ncurses pnoutrefresh.3x pnoutrefresh.3ncurses prefresh.3x prefresh.3ncurses printw.3x printw.3ncurses -putp.3x putp.3ncurses +putp.3x putp.3ncurses putwin.3x putwin.3ncurses raw.3x raw.3ncurses refresh.3x refresh.3ncurses +reset_prog_mode.3x reset_prog_mode.3ncurses reset_shell_mode.3x reset_shell_mode.3ncurses restartterm.3x restartterm.3ncurses ripoffline.3x ripoffline.3ncurses @@ -251,6 +265,8 @@ start_color.3x start_color.3ncurses subwin.3x subwin.3ncurses syncok.3x syncok.3ncurses terminfo.3x terminfo.3ncurses +tigetflag.3x tigetflag.3ncurses +tigetnum.3x tigetnum.3ncurses tigetstr.3x tigetstr.3ncurses touchline.3x touchline.3ncurses touchwin.3x touchwin.3ncurses @@ -258,6 +274,7 @@ tparm.3x tparm.3ncurses tputs.3x tputs.3ncurses trace.3x trace.3ncurses unctrl.3x unctrl.3ncurses +ungetch.3x ungetch.3ncurses use_default_colors.3x use_default_colors.3ncurses use_env.3x use_env.3ncurses use_extended_names.3x use_extended_names.3ncurses @@ -266,6 +283,8 @@ use_tioctl.3x use_tioctl.3ncurses vidputs.3x vidputs.3ncurses wadd_wch.3x wadd_wch.3ncurses waddch.3x waddch.3ncurses +waddnstr.3x waddnstr.3ncurses +waddnwstr.3x waddnwstr.3ncurses waddstr.3x waddstr.3ncurses waddwstr.3x waddwstr.3ncurses wattr_set.3x wattr_set.3ncurses @@ -276,8 +295,10 @@ wdelch.3x wdelch.3ncurses wecho_wchar.3x wecho_wchar.3ncurses wechochar.3x wechochar.3ncurses wget_wch.3x wget_wch.3ncurses +wget_wstr.3x wget_wstr.3ncurses wgetch.3x wgetch.3ncurses wgetstr.3x wgetstr.3ncurses +win_wch.3x win_wch.3ncurses winch.3x winch.3ncurses wins_wch.3x wins_wch.3ncurses winsch.3x winsch.3ncurses @@ -286,6 +307,7 @@ wnoutrefresh.3x wnoutrefresh.3ncurses wrefresh.3x wrefresh.3ncurses wsetscrreg.3x wsetscrreg.3ncurses wtimeout.3x wtimeout.3ncurses +wunctrl.3x wunctrl.3ncurses # # Other: getty.8 getty.8 diff --git a/contrib/ncurses/man/manhtml.aliases b/contrib/ncurses/man/manhtml.aliases index 7599c74a8a27..31b1aee24ff8 100644 --- a/contrib/ncurses/man/manhtml.aliases +++ b/contrib/ncurses/man/manhtml.aliases @@ -1,6 +1,6 @@ -# $Id: manhtml.aliases,v 1.35 2024/04/14 00:36:21 tom Exp $ +# $Id: manhtml.aliases,v 1.50 2025/11/12 00:49:19 Branden.Robinson Exp $ #*************************************************************************** -# Copyright 2019-2023,2024 Thomas E. Dickey * +# Copyright 2019-2024,2025 Thomas E. Dickey * # Copyright 2013,2017 Free Software Foundation, Inc. * # * # Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,7 +27,7 @@ # sale, use or other dealings in this Software without prior written * # authorization. * #*************************************************************************** -# Items in this list will be linked to the corresponding manpages by man2html +# Items in this list will be linked to the corresponding man pages by man2html add_wch(3X) curs_add_wch(3X) addch(3X) curs_addch(3X) assume_default_colors(3X) default_colors(3X) @@ -35,11 +35,13 @@ attr_get(3X) curs_attr(3X) attr_on(3X) curs_attr(3X) attron(3X) curs_attr(3X) baudrate(3X) curs_termattrs(3X) +beep(3X) curs_beep(3X) bkgd(3X) curs_bkgd(3X) bkgrnd(3X) curs_bkgrnd(3X) cbreak(3X) curs_inopts(3X) clearok(3X) curs_outopts(3X) clrtoeol(3X) curs_clear(3X) +color_content(3X) curs_color(3X) curs_set(3X) curs_kernel(3X) curscr(3X) curs_variables(3X) curses_trace(3X) curs_trace(3X) @@ -51,13 +53,18 @@ delscreen(3X) curs_initscr(3X) doupdate(3X) curs_refresh(3X) echo(3X) curs_inopts(3X) endwin(3X) curs_initscr(3X) +erasechar(3X) curs_termattrs(3X) +erasewchar(3X) curs_termattrs(3X) extended_slk_color(3X) curs_slk(3X) filter(3X) curs_util(3X) flushinp(3X) curs_util(3X) get_wch(3X) curs_get_wch(3X) +get_wstr(3X) curs_get_wstr(3X) getcchar(3X) curs_getcchar(3X) getch(3X) curs_getch(3X) +getstr(3X) curs_getstr(3X) getwin(3X) curs_util(3X) +getyx(3X) curs_getyx(3X) halfdelay(3X) curs_inopts(3X) has_key(3X) curs_getch(3X) immedok(3X) curs_outopts(3X) @@ -65,12 +72,17 @@ in_wch(3X) curs_in_wch(3X) inch(3X) curs_inch(3X) infocmp(1) infocmp(1M) initscr(3X) curs_initscr(3X) +init_color(3X) curs_color(3X) +is_cbreak(3X) curs_inopts(3X) is_scrollok(3X) curs_opaque(3X) keyname(3X) curs_util(3X) keypad(3X) curs_inopts(3X) +killchar(3X) curs_termattrs(3X) +killwchar(3X) curs_termattrs(3X) longname(3X) curs_termattrs(3X) meta(3X) curs_inopts(3X) move(3X) curs_move(3X) +mousemask(3X) curs_mouse(3X) mvcur(3X) curs_terminfo(3X) mvwin(3X) curs_window(3X) newterm(3X) curs_initscr(3X) @@ -78,6 +90,7 @@ newwin(3X) curs_window(3X) nl(3X) curs_inopts(3X) nocbreak(3X) curs_inopts(3X) nonl(3X) curs_inopts(3X) +noraw(3X) curs_inopts(3X) pnoutrefresh(3X) curs_pad(3X) prefresh(3X) curs_pad(3X) printw(3X) curs_printw(3X) @@ -85,6 +98,7 @@ putp(3X) curs_terminfo(3X) putwin(3X) curs_util(3X) raw(3X) curs_inopts(3X) refresh(3X) curs_refresh(3X) +reset_prog_mode(3X) curs_kernel(3X) reset_shell_mode(3X) curs_kernel(3X) restartterm(3X) curs_terminfo(3X) ripoffline(3X) curs_kernel(3X) @@ -99,11 +113,15 @@ slk_touch(3X) curs_slk(3X) start_color(3X) curs_color(3X) terminfo(3X) curs_terminfo(3X) tic(1) tic(1M) +tigetflag(3X) curs_terminfo(3X) +tigetnum(3X) curs_terminfo(3X) tigetstr(3X) curs_terminfo(3X) touchline(3X) curs_touch(3X) touchwin(3X) curs_touch(3X) tparm(3X) curs_terminfo(3X) tputs(3X) curs_terminfo(3X) +trace(3X) curs_trace(3X) +ungetch(3X) curs_util(3X) use_default_colors(3X) default_colors(3X) use_env(3X) curs_util(3X) use_extended_names(3X) curs_extend(3X) @@ -112,6 +130,8 @@ use_tioctl(3X) curs_util(3X) vidputs(3X) curs_terminfo(3X) wadd_wch(3X) curs_add_wch(3X) waddch(3X) curs_addch(3X) +waddnstr(3X) curs_addstr(3X) +waddnwstr(3X) curs_addwstr(3X) waddstr(3X) curs_addstr(3X) waddwstr(3X) curs_addwstr(3X) wattr_set(3X) curs_attr(3X) @@ -122,8 +142,10 @@ wdelch(3X) curs_delch(3X) wecho_wchar(3X) curs_add_wch(3X) wechochar(3X) curs_addch(3X) wget_wch(3X) curs_get_wch(3X) +wget_wstr(3X) curs_get_wstr(3X) wgetch(3X) curs_getch(3X) wgetstr(3X) curs_getstr(3X) +win_wch(3X) curs_in_wch(3X) winch(3X) curs_inch(3X) wins_wch(3X) curs_ins_wch(3X) winsch(3X) curs_insch(3X) @@ -131,3 +153,4 @@ wmove(3X) curs_move(3X) wnoutrefresh(3X) curs_refresh(3X) wrefresh(3X) curs_refresh(3X) wsetscrreg(3X) curs_outopts(3X) +wunctrl(3X) curs_util(3X) diff --git a/contrib/ncurses/man/manhtml.externs b/contrib/ncurses/man/manhtml.externs index 41aa6359df10..7090ef011494 100644 --- a/contrib/ncurses/man/manhtml.externs +++ b/contrib/ncurses/man/manhtml.externs @@ -1,7 +1,7 @@ -# $Id: manhtml.externs,v 1.25 2024/04/20 19:26:05 tom Exp $ +# $Id: manhtml.externs,v 1.30 2025/03/01 22:00:03 tom Exp $ # Items in this list will not be linked by man2html #*************************************************************************** -# Copyright 2019-2023,2024 Thomas E. Dickey * +# Copyright 2019-2024,2025 Thomas E. Dickey * # Copyright 2013,2017 Free Software Foundation, Inc. * # * # Permission is hereby granted, free of charge, to any person obtaining a * @@ -41,25 +41,31 @@ emacs(1) environ(7) errno(3) file(1) +fread(3) +free(3) +fwrite(3) getty(8) +ioctl(2) +isprint(3) jove(1) lynx(1) mutt(1) nvi(1) od(1) -ioctl(2) -isprint(3) +poll(2) printf(3) profile(5) putc(3) putchar(3) putwc(3) +putwchar(3) read(2) readline(3) resize(1) scanf(3) scanf(3S) screen(1) +select(2) setbuf(3) setgid(2) setlocale(3) @@ -69,6 +75,7 @@ sscanf(3) stdio(3) stty(1) swprintf(3) +sysconf(3) system(3) termios(3) tmux(1) diff --git a/contrib/ncurses/man/manlinks.sed b/contrib/ncurses/man/manlinks.sed index 6e2d2b869970..d1eba54438ca 100644 --- a/contrib/ncurses/man/manlinks.sed +++ b/contrib/ncurses/man/manlinks.sed @@ -1,6 +1,6 @@ -# $Id: manlinks.sed,v 1.21 2024/04/20 22:25:36 tom Exp $ +# $Id: manlinks.sed,v 1.27 2025/11/12 00:49:19 Branden.Robinson Exp $ ############################################################################## -# Copyright 2020-2023,2024 Thomas E. Dickey # +# Copyright 2020-2024,2025 Thomas E. Dickey # # Copyright 2000-2003,2008 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -27,11 +27,11 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# Given a manpage (nroff) as input, writes a list of the names that are +# Given a man page (nroff) as input, writes a list of the names that are # listed in the "NAME" section, i.e., the names that we would like to use -# as aliases for the manpage -T.Dickey +# as aliases for the man page. -T.Dickey # -# workaround for manpages without a SYNOPSIS +# workaround for man pages without a SYNOPSIS s/^\.\\"SH/.SH/ # # eliminate formatting controls that get in the way @@ -53,6 +53,7 @@ s/^[ ][ ]*// s/[ ][ ]*$// s/[ ][ ]*/ /g /^$/d +/^[<>]/d # # convert ".SH" into a more manageable form s/\.SH[ ][ ]*/.SH_(/ @@ -79,7 +80,7 @@ s/ /\ # still want to make aliases for those. Do this by extracting names from the # list of function prototypes in the synopsis. # -# Remove any line that does not contain a '(', since we only want functions. +# Remove any line that does not contain a '(', since we only want functions. # then strip off return-type of each function. # # Finally, remove the parameter list, which begins with a '('. diff --git a/contrib/ncurses/man/menu.3x b/contrib/ncurses/man/menu.3x index a833c3b55123..f86f3b5e606a 100644 --- a/contrib/ncurses/man/menu.3x +++ b/contrib/ncurses/man/menu.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2014,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu.3x,v 1.45 2024/03/16 15:35:01 tom Exp $ -.TH menu 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu.3x,v 1.54 2025/11/12 01:27:41 tom Exp $ +.TH menu 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -47,7 +47,7 @@ .. .SH NAME \fBmenu\fP \- -curses extension for programming menus +present menus in \fIcurses\fP windows .SH SYNOPSIS .nf \fB#include <menu.h> @@ -70,7 +70,9 @@ To use the \fBmenu\fP library, link with the options The \fBmenu\fP library maintains a default value for item attributes. You can get or set this default by calling the appropriate \fBget_\fP or \fBset_\fP -routine with a \fBNULL\fP item pointer. +routine with a +.I NULL +item pointer. Changing this default with a \fBset_\fP function affects future item creations, but does not change the rendering of items already created. @@ -81,48 +83,48 @@ The following table lists each \fBmenu\fP routine and the name of the manual page on which it is described. .PP .TS -l l . +L L. \fBcurses\fP Routine Name Manual Page Name -= +_ current_item \fBmitem_current\fP(3X) -free_item \fBmitem_new\fP(3X) -free_menu \fBmenu_new\fP(3X) +free_item \fBmitem_new\fP(3X) +free_menu \fBmenu_new\fP(3X) item_count \fBmenu_items\fP(3X) item_description \fBmitem_name\fP(3X) item_index \fBmitem_current\fP(3X) -item_init \fBmenu_hook\fP(3X) -item_name \fBmitem_name\fP(3X) -item_opts \fBmitem_opts\fP(3X) +item_init \fBmenu_hook\fP(3X) +item_name \fBmitem_name\fP(3X) +item_opts \fBmitem_opts\fP(3X) item_opts_off \fBmitem_opts\fP(3X) item_opts_on \fBmitem_opts\fP(3X) -item_term \fBmenu_hook\fP(3X) +item_term \fBmenu_hook\fP(3X) item_userptr \fBmitem_userptr\fP(3X) item_value \fBmitem_value\fP(3X) item_visible \fBmitem_visible\fP(3X) -menu_back \fBmenu_attributes\fP(3X) +menu_back \fBmenu_attributes\fP(3X) menu_driver \fBmenu_driver\fP(3X) -menu_fore \fBmenu_attributes\fP(3X) +menu_fore \fBmenu_attributes\fP(3X) menu_format \fBmenu_format\fP(3X) -menu_grey \fBmenu_attributes\fP(3X) -menu_init \fBmenu_hook\fP(3X) +menu_grey \fBmenu_attributes\fP(3X) +menu_init \fBmenu_hook\fP(3X) menu_items \fBmenu_items\fP(3X) -menu_mark \fBmenu_mark\fP(3X) -menu_opts \fBmenu_opts\fP(3X) +menu_mark \fBmenu_mark\fP(3X) +menu_opts \fBmenu_opts\fP(3X) menu_opts_off \fBmenu_opts\fP(3X) menu_opts_on \fBmenu_opts\fP(3X) -menu_pad \fBmenu_attributes\fP(3X) +menu_pad \fBmenu_attributes\fP(3X) menu_pattern \fBmenu_pattern\fP(3X) menu_request_by_name \fBmenu_requestname\fP(3X) menu_request_name \fBmenu_requestname\fP(3X) menu_spacing \fBmenu_spacing\fP(3X) -menu_sub \fBmenu_win\fP(3X) -menu_term \fBmenu_hook\fP(3X) +menu_sub \fBmenu_win\fP(3X) +menu_term \fBmenu_hook\fP(3X) menu_userptr \fBmenu_userptr\fP(3X) -menu_win \fBmenu_win\fP(3X) -new_item \fBmitem_new\fP(3X) -new_menu \fBmenu_new\fP(3X) +menu_win \fBmenu_win\fP(3X) +new_item \fBmitem_new\fP(3X) +new_menu \fBmenu_new\fP(3X) pos_menu_cursor \fBmenu_cursor\fP(3X) -post_menu \fBmenu_post\fP(3X) +post_menu \fBmenu_post\fP(3X) scale_menu \fBmenu_win\fP(3X) set_current_item \fBmitem_current\fP(3X) set_item_init \fBmenu_hook\fP(3X) @@ -146,11 +148,13 @@ set_menu_term \fBmenu_hook\fP(3X) set_menu_userptr \fBmenu_userptr\fP(3X) set_menu_win \fBmenu_win\fP(3X) set_top_row \fBmitem_current\fP(3X) -top_row \fBmitem_current\fP(3X) +top_row \fBmitem_current\fP(3X) unpost_menu \fBmenu_post\fP(3X) .TE .SH RETURN VALUE -Routines that return pointers return \fBNULL\fP on error. +Routines that return pointers return +.I NULL +on error. Routines that return an integer return one of the following error codes: .TP 5 diff --git a/contrib/ncurses/man/menu_driver.3x b/contrib/ncurses/man/menu_driver.3x index 6a117283705f..e3baee4bb932 100644 --- a/contrib/ncurses/man/menu_driver.3x +++ b/contrib/ncurses/man/menu_driver.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_driver.3x,v 1.47 2024/03/16 15:35:01 tom Exp $ -.TH menu_driver 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_driver.3x,v 1.51 2025/10/04 20:59:08 tom Exp $ +.TH menu_driver 3X 2025-10-04 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -46,8 +46,9 @@ command-processing loop of the menu system Once a menu has been posted (displayed), you should funnel input events to it through \fBmenu_driver\fP. This routine has three major input cases: .bP -The input is a form navigation request. -Navigation request codes are constants defined in \fB<form.h>\fP, +The input is a menu navigation request. +Navigation request codes are constants defined in +.IR menu.h "," which are distinct from the key- and character codes returned by \fBwgetch\fP(3X). .bP diff --git a/contrib/ncurses/man/menu_hook.3x b/contrib/ncurses/man/menu_hook.3x index 839e199b8c4f..66bc383c8ce9 100644 --- a/contrib/ncurses/man/menu_hook.3x +++ b/contrib/ncurses/man/menu_hook.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_hook.3x,v 1.32 2024/03/16 15:35:01 tom Exp $ -.TH menu_hook 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_hook.3x,v 1.34 2024/12/28 21:26:21 tom Exp $ +.TH menu_hook 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBmenu_hook\fP \- set hooks for automatic invocation by applications @@ -55,27 +55,33 @@ points in the automatic processing of input event codes by \fBmenu_driver\fP. The function \fBset_item_init\fP sets a hook to be called at menu-post time and each time the selected item changes (after the change). \fBitem_init\fP -returns the current item init hook, if any (\fBNULL\fP if there is no such -hook). +returns the current item init hook, if any +.RI ( NULL +if there is no such hook). .PP The function \fBset_item_term\fP sets a hook to be called at menu-unpost time and each time the selected item changes (before the change). \fBitem_term\fP -returns the current item term hook, if any (\fBNULL\fP if there is no such -hook). +returns the current item term hook, if any +.RI ( NULL +if there is no such hook). .PP The function \fBset_menu_init\fP sets a hook to be called at menu-post time and just after the top row on the menu changes once it is posted. \fBmenu_init\fP -returns the current menu init hook, if any (\fBNULL\fP if there is no such -hook). +returns the current menu init hook, if any +.RI ( NULL +if there is no such hook). .PP The function \fBset_menu_term\fP sets a hook to be called at menu-unpost time and just before the top row on the menu changes once it is posted. -\fBmenu_term\fP returns the current menu term hook, if any (\fBNULL\fP if there -is no such hook). +\fBmenu_term\fP returns the current menu term hook, if any +.RI ( NULL +if there is no such hook). .SH RETURN VALUE -Routines that return pointers return \fBNULL\fP on error. +Routines that return pointers return +.I NULL +on error. Other routines return one of the following: .TP 5 diff --git a/contrib/ncurses/man/menu_items.3x b/contrib/ncurses/man/menu_items.3x index 43409fef812b..8def448ea12f 100644 --- a/contrib/ncurses/man/menu_items.3x +++ b/contrib/ncurses/man/menu_items.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_items.3x,v 1.34 2024/03/16 15:35:01 tom Exp $ -.TH menu_items 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_items.3x,v 1.36 2024/12/28 21:26:21 tom Exp $ +.TH menu_items 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_menu_items\fP, \fBmenu_items\fP, @@ -44,17 +44,20 @@ make and break connections between items and menus .fi .SH DESCRIPTION The function \fBset_menu_items\fP changes the item pointer array of the given -\fImenu\fP. The array must be terminated by a \fBNULL\fP. +\fImenu\fP. The array must be terminated by a +.IR NULL "." .PP The function \fBmenu_items\fP returns the item array of the given menu. .PP The function \fBitem_count\fP returns the count of items in \fImenu\fP. .SH RETURN VALUE -The function \fBmenu_items\fP returns a pointer (which may be \fBNULL\fP). +The function \fBmenu_items\fP returns a pointer (which may be +.IR NULL ")." It does not set \fBerrno\fP. .PP The function \fBitem_count\fP returns \fBERR\fP (the general \fBcurses\fP error -return value) if its \fImenu\fP parameter is \fBNULL\fP. +return value) if its \fImenu\fP parameter is +.I NULL "." .PP The function \fBset_menu_items\fP returns one of the following codes on error: .TP 5 diff --git a/contrib/ncurses/man/menu_mark.3x b/contrib/ncurses/man/menu_mark.3x index e3f3a92869d3..7630e2e532f3 100644 --- a/contrib/ncurses/man/menu_mark.3x +++ b/contrib/ncurses/man/menu_mark.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_mark.3x,v 1.35 2024/03/16 15:35:01 tom Exp $ -.TH menu_mark 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_mark.3x,v 1.37 2024/12/28 21:26:21 tom Exp $ +.TH menu_mark 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_menu_mark\fP, \fBmenu_mark\fP \- @@ -51,13 +51,16 @@ Note that changing the length of the mark string for a menu while the menu is posted is likely to produce unhelpful behavior. .PP The default string is "\-" (a dash). -Calling \fBset_menu_mark\fP with -a non-\fBNULL\fP menu argument will change this default. +Calling \fBset_menu_mark\fP with a +.IR non- NULL +menu argument will change this default. .PP -The function \fBmenu_mark\fP returns the menu's mark string (or \fBNULL\fP if -there is none). +The function \fBmenu_mark\fP returns the menu's mark string (or +.I NULL +if there is none). .SH RETURN VALUE -The function \fBmenu_mark\fP returns a pointer (which may be \fBNULL\fP). +The function \fBmenu_mark\fP returns a pointer (which may be +.IR NULL ")." It does not set \fBerrno\fP. .PP The function \fBset_menu_mark\fP may return the following error codes: diff --git a/contrib/ncurses/man/menu_new.3x b/contrib/ncurses/man/menu_new.3x index 1a133745a9b7..af781e3d4722 100644 --- a/contrib/ncurses/man/menu_new.3x +++ b/contrib/ncurses/man/menu_new.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_new.3x,v 1.35 2024/03/16 15:35:01 tom Exp $ -.TH menu_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_new.3x,v 1.37 2024/12/28 21:26:21 tom Exp $ +.TH menu_new 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBnew_menu\fP, \fBfree_menu\fP \- @@ -42,12 +42,15 @@ create and destroy menus .fi .SH DESCRIPTION The function \fBnew_menu\fP creates a new menu connected to a specified item -pointer array (which must be \fBNULL\fP-terminated). +pointer array (which must be +.IR NULL -terminated). .PP The function \fBfree_menu\fP disconnects \fImenu\fP from its item array and frees the storage allocated for the menu. .SH RETURN VALUE -The function \fBnew_menu\fP returns \fBNULL\fP on error. +The function \fBnew_menu\fP returns +.I NULL +on error. It sets \fBerrno\fP according to the function's failure: .TP 5 .B E_NOT_CONNECTED diff --git a/contrib/ncurses/man/menu_opts.3x b/contrib/ncurses/man/menu_opts.3x index ad7fe97f348f..fcb9df410d45 100644 --- a/contrib/ncurses/man/menu_opts.3x +++ b/contrib/ncurses/man/menu_opts.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2016 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,18 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_opts.3x,v 1.35 2024/03/16 15:35:01 tom Exp $ -.TH menu_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_opts.3x,v 1.38 2025/01/19 00:51:10 tom Exp $ +.TH menu_opts 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} .SH NAME \fBset_menu_opts\fP, \fBmenu_opts_on\fP, @@ -46,8 +56,8 @@ set and get menu options \fBint menu_opts_off(MENU *\fImenu\fP, Menu_Options \fIopts\fP); .fi .SH DESCRIPTION -The function \fBset_menu_opts\fP sets all the given menu's option bits (menu -option bits may be logically-OR'ed together). +The function \fBset_menu_opts\fP sets all the given menu's option bits +(menu option bits may be logically \*(``or\*(''-ed together). .PP The function \fBmenu_opts_on\fP turns on the given option bits, and leaves others alone. diff --git a/contrib/ncurses/man/menu_pattern.3x b/contrib/ncurses/man/menu_pattern.3x index a66a368dd0c9..eae1001931a4 100644 --- a/contrib/ncurses/man/menu_pattern.3x +++ b/contrib/ncurses/man/menu_pattern.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_pattern.3x,v 1.38 2024/03/16 15:35:01 tom Exp $ -.TH menu_pattern 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_pattern.3x,v 1.40 2024/12/28 21:26:21 tom Exp $ +.TH menu_pattern 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_menu_pattern\fP, \fBmenu_pattern\fP \- @@ -55,7 +55,10 @@ The function \fBmenu_pattern\fP returns the pattern buffer of the given \fImenu\fP. .SH RETURN VALUE The function \fBmenu_pattern\fP returns a pointer, -which is \fBNULL\fP if the \fImenu\fP parameter is \fBNULL\fP. +which is +.I NULL +if the \fImenu\fP parameter is +.IR NULL "." Otherwise, it is a pointer to a string which is empty if no pattern has been set. It does not set \fBerrno\fP. diff --git a/contrib/ncurses/man/menu_requestname.3x b/contrib/ncurses/man/menu_requestname.3x index a0363fb28585..71e47fdba014 100644 --- a/contrib/ncurses/man/menu_requestname.3x +++ b/contrib/ncurses/man/menu_requestname.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_requestname.3x,v 1.33 2024/03/16 15:35:01 tom Exp $ -.TH menu_requestname 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_requestname.3x,v 1.35 2024/12/28 21:26:21 tom Exp $ +.TH menu_requestname 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBmenu_request_by_name\fP, \fBmenu_request_name\fP \- @@ -48,7 +48,9 @@ The function \fBmenu_request_by_name\fP searches in the name-table for a request with the given name and returns its request code. Otherwise E_NO_MATCH is returned. .SH RETURN VALUE -\fBmenu_request_name\fP returns \fBNULL\fP on error +\fBmenu_request_name\fP returns +.I NULL +on error and sets \fBerrno\fP to \fBE_BAD_ARGUMENT\fP. .br \fBmenu_request_by_name\fP returns \fBE_NO_MATCH\fP on error. diff --git a/contrib/ncurses/man/menu_spacing.3x b/contrib/ncurses/man/menu_spacing.3x index d15e77d542a5..abfe15a90080 100644 --- a/contrib/ncurses/man/menu_spacing.3x +++ b/contrib/ncurses/man/menu_spacing.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_spacing.3x,v 1.37 2024/03/16 15:35:01 tom Exp $ -.TH menu_spacing 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_spacing.3x,v 1.39 2024/12/28 21:26:21 tom Exp $ +.TH menu_spacing 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_menu_spacing\fP, \fBmenu_spacing\fP \- @@ -73,7 +73,9 @@ A value of 0 for all the spacing values resets them to the default, which is 1 for all of them. .PP The function \fBmenu_spacing\fP returns the spacing information for the menu. -If a pointer is NULL, the corresponding information is simply not returned. +If a pointer is +.IR NULL "," +the corresponding information is simply not returned. .SH RETURN VALUE Both routines return \fBE_OK\fP on success. \fBset_menu_spacing\fP may return diff --git a/contrib/ncurses/man/menu_userptr.3x b/contrib/ncurses/man/menu_userptr.3x index 292bbd6b85e8..4465bc791454 100644 --- a/contrib/ncurses/man/menu_userptr.3x +++ b/contrib/ncurses/man/menu_userptr.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_userptr.3x,v 1.33 2024/03/16 15:35:01 tom Exp $ -.TH menu_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_userptr.3x,v 1.35 2024/12/28 21:26:21 tom Exp $ +.TH menu_userptr 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_menu_userptr\fP, \fBmenu_userptr\fP \- @@ -45,7 +45,8 @@ Every menu and every menu item has a field that can be used to hold application-specific data (that is, the menu-driver code leaves it alone). These functions get and set the menu user pointer field. .SH RETURN VALUE -\fBmenu_userptr\fP returns a pointer (which may be \fBNULL\fP). +\fBmenu_userptr\fP returns a pointer (which may be +.IR NULL ")." It does not set \fBerrno\fP. .PP \fBset_menu_userptr\fP returns \fBE_OK\fP (success). diff --git a/contrib/ncurses/man/menu_win.3x b/contrib/ncurses/man/menu_win.3x index 36f6129dc2a8..b9d8b4974e7a 100644 --- a/contrib/ncurses/man/menu_win.3x +++ b/contrib/ncurses/man/menu_win.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_win.3x,v 1.32 2024/03/16 15:35:01 tom Exp $ -.TH menu_win 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: menu_win.3x,v 1.34 2024/12/28 21:26:21 tom Exp $ +.TH menu_win 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBmenu_win\fP \- make and break menu window and subwindow associations @@ -54,14 +54,20 @@ The first four functions get and set those windows. It is not necessary to set either window; by default, the driver code uses \fBstdscr\fP for both. .PP -In the \fBset_\fP functions, window argument of \fBNULL\fP is treated as though -it were \fBstsdcr\fP. A menu argument of \fBNULL\fP is treated as a request +In the \fBset_\fP functions, window argument of +.I NULL +is treated as though +it were \fBstsdcr\fP. A menu argument of +.I NULL +is treated as a request to change the system default menu window or subwindow. .PP The function \fBscale_menu\fP returns the minimum size required for the subwindow of \fImenu\fP. .SH RETURN VALUE -Routines that return pointers return \fBNULL\fP on error. +Routines that return pointers return +.I NULL +on error. Routines that return an integer return one of the following error codes: .TP 5 diff --git a/contrib/ncurses/man/mitem_current.3x b/contrib/ncurses/man/mitem_current.3x index 42d36c39754b..39e8053834a9 100644 --- a/contrib/ncurses/man/mitem_current.3x +++ b/contrib/ncurses/man/mitem_current.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_current.3x,v 1.37 2024/03/16 15:35:01 tom Exp $ -.TH mitem_current 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: mitem_current.3x,v 1.39 2024/12/28 21:26:21 tom Exp $ +.TH mitem_current 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBmitem_current\fP \- set and get current_menu_item @@ -61,11 +61,13 @@ row being displayed. The function \fBitem_index\fP returns the (zero-origin) index of \fIitem\fP in the menu's item pointer list. .SH RETURN VALUE -\fBcurrent_item\fP returns a pointer (which may be \fBNULL\fP). +\fBcurrent_item\fP returns a pointer (which may be +.IR NULL ")." It does not set \fBerrno\fP. .PP \fBtop_row\fP and \fBitem_index\fP return \fBERR\fP (the general \fBcurses\fP -error value) if their \fImenu\fP parameter is \fBNULL\fP. +error value) if their \fImenu\fP parameter is +.IR NULL "." .PP \fBset_current_item\fP and \fBset_top_row\fP return one of the following: .TP 5 diff --git a/contrib/ncurses/man/mitem_name.3x b/contrib/ncurses/man/mitem_name.3x index 3606bb5d2455..d92477c8a9ad 100644 --- a/contrib/ncurses/man/mitem_name.3x +++ b/contrib/ncurses/man/mitem_name.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_name.3x,v 1.31 2024/03/16 15:35:01 tom Exp $ -.TH mitem_name 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: mitem_name.3x,v 1.33 2024/12/28 21:26:21 tom Exp $ +.TH mitem_name 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBitem_name\fP, \fBitem_description\fP \- @@ -46,7 +46,8 @@ The function \fBitem_name\fP returns the name part of the given item. The function \fBitem_description\fP returns the description part of the given item. .SH RETURN VALUE -These routines return a pointer (which may be \fBNULL\fP). +These routines return a pointer (which may be +.IR NULL ")." They do not set \fBerrno\fP. .SH PORTABILITY These routines emulate the System V menu library. diff --git a/contrib/ncurses/man/mitem_new.3x b/contrib/ncurses/man/mitem_new.3x index 66bd29bce3a8..1ca7edba0fcf 100644 --- a/contrib/ncurses/man/mitem_new.3x +++ b/contrib/ncurses/man/mitem_new.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_new.3x,v 1.36 2024/03/16 15:35:01 tom Exp $ -.TH mitem_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: mitem_new.3x,v 1.38 2024/12/28 21:26:21 tom Exp $ +.TH mitem_new 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBnew_item\fP, \fBfree_item\fP \- @@ -55,7 +55,9 @@ Please notice that it is the responsibility of the application to release the memory for the name or the description of the item. .SH RETURN VALUE -The function \fBnew_item\fP returns \fBNULL\fP on error. +The function \fBnew_item\fP returns +.I NULL +on error. It sets \fBerrno\fP according to the function's failure: .TP 5 .B E_BAD_ARGUMENT diff --git a/contrib/ncurses/man/mitem_opts.3x b/contrib/ncurses/man/mitem_opts.3x index 5a86516f5a24..430ab6bffec5 100644 --- a/contrib/ncurses/man/mitem_opts.3x +++ b/contrib/ncurses/man/mitem_opts.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2015 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,18 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_opts.3x,v 1.33 2024/03/16 15:35:01 tom Exp $ -.TH mitem_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: mitem_opts.3x,v 1.36 2025/01/19 00:51:10 tom Exp $ +.TH mitem_opts 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} .SH NAME \fBset_item_opts\fP, \fBitem_opts_on\fP, @@ -46,8 +56,8 @@ set and get menu item options \fBint item_opts_off(ITEM *\fIitem\fP, Item_Options \fIopts\fP); .fi .SH DESCRIPTION -The function \fBset_item_opts\fP sets all the given item's option bits (menu -option bits may be logically-OR'ed together). +The function \fBset_item_opts\fP sets all the given item's option bits +(menu option bits may be logically \*(``or\*(''-ed together). .PP The function \fBitem_opts_on\fP turns on the given option bits, and leaves others alone. diff --git a/contrib/ncurses/man/mitem_userptr.3x b/contrib/ncurses/man/mitem_userptr.3x index f0eab8bd8058..219618dfb742 100644 --- a/contrib/ncurses/man/mitem_userptr.3x +++ b/contrib/ncurses/man/mitem_userptr.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_userptr.3x,v 1.34 2024/03/16 15:35:01 tom Exp $ -.TH mitem_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: mitem_userptr.3x,v 1.36 2024/12/28 21:26:21 tom Exp $ +.TH mitem_userptr 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fBset_item_userptr\fP, \fBitem_userptr\fP \- @@ -46,7 +46,8 @@ Every menu item has a field that can be used to hold application-specific data These functions get and set that field. .SH RETURN VALUE -The function \fBitem_userptr\fP returns a pointer (possibly \fBNULL\fP). +The function \fBitem_userptr\fP returns a pointer (possibly +.IR NULL ")." It does not set \fBerrno\fP. .PP The \fBset_item_userptr\fP always returns \fBE_OK\fP (success). diff --git a/contrib/ncurses/man/ncurses.3x b/contrib/ncurses/man/ncurses.3x index 9aaa7adf54bf..21799fdd2296 100644 --- a/contrib/ncurses/man/ncurses.3x +++ b/contrib/ncurses/man/ncurses.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: ncurses.3x,v 1.214 2024/04/27 17:55:43 tom Exp $ -.TH ncurses 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: ncurses.3x,v 1.289 2025/11/12 01:01:34 tom Exp $ +.TH ncurses 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -54,7 +54,6 @@ . TP .. . -.ds d @TERMINFO@ .SH NAME \fB\%ncurses\fP \- character-cell terminal interface with optimized output @@ -65,7 +64,7 @@ character-cell terminal interface with optimized output .SH DESCRIPTION The \*(``new curses\*('' library offers the programmer a terminal-independent means of reading keyboard and mouse input and -updating character-cell terminals with output optimized to minimize +writing to character-cell displays with output optimized to minimize screen updates. .I \%ncurses replaces the @@ -86,15 +85,15 @@ abstraction and subdivision thereof with .I windows and .IR pads ; -the reading of terminal input; -control of terminal input and output options; -environment query routines; -color manipulation; +acquisition of keyboard and mouse events; +selection of color and rendering attributes +(such as bold or underline); the definition and use of .I "soft label" keys; +access to the .I \%term\%info -capability access; +terminal capability database; a .I termcap compatibility interface; @@ -102,8 +101,7 @@ and an abstraction of the system's API for manipulating the terminal (such as \fI\%termios\fP(3)). .PP .I \%ncurses -implements the standard interface described by -X/Open Curses Issue\ 7. +implements the interface described by X/Open Curses Issue\ 7. In many behavioral details not standardized by X/Open, .I \%ncurses emulates the @@ -122,8 +120,8 @@ API should be aware, such as limitations on the size of an underlying integral type or the availability of a preprocessor macro exclusive of a function definition (which prevents its address from being taken). -This section also describes implementation details that will be -significant to the programmer but which are not standardized. +This section also describes implementation details +of significance to the programmer but which are not standardized. .bP \*(``EXTENSIONS\*('' presents .I \%ncurses @@ -162,22 +160,21 @@ option to your compiler or linker. A debugging version of the library may be available; if so, link with it using -.BR \-lncurses_g . +.BR \-lncurses_g "." (Your system integrator may have installed these libraries such that you can use the options .B \-lcurses and -.BR \-lcurses_g , +.BR \-lcurses_g "," respectively.) The .I \%ncurses_g -library generates trace logs -(in a file called -.I \%trace -in the current directory) -that describe +library logs events describing .I \%ncurses -actions. +actions +to a file called +.I \%trace +in the application's working directory at startup. See section \*(``ALTERNATE CONFIGURATIONS\*('' below. .SS "Application Structure" A @@ -203,10 +200,13 @@ not been set up. \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X) must be called to initialize .I curses -before use of any functions that deal with windows and screens. +before use of any functions +that access or manipulate windows or screens. .PP -To get character-at-a-time input without echoing\(emmost interactive, -screen-oriented programs want this\(emuse the following sequence. +To get character-at-a-time input without echoing \(em +most interactive, +screen-oriented programs want this \(em +use the following sequence. .PP .RS 4 .EX @@ -214,36 +214,55 @@ initscr(); cbreak(); noecho(); .EE .RE .PP -Most applications perform further setup as follows. +Most applications would perform further setup as follows. .PP .RS 4 .EX -intrflush(stdscr, FALSE); +.nf +noqiflush(); keypad(stdscr, TRUE); +.fi .EE .RE .PP A .I curses -program then often enters an event loop of some sort. +program then often enters an event-handling loop. Call \fB\%endwin\fP(3X) before exiting. .SS Overview A .I curses -library abstracts the terminal screen by representing all or part of it -as a +library abstracts the terminal with a +.I \%SCREEN +data structure, +and represents all or part of its display +with .I \%WINDOW -data structure. +structures. +Distinct properties apply to each; +for example, +the +.I "line discipline" +of a typical Unix terminal driver +is in one of three modes: +raw, +\%cbreak, +or canonical (\*(``cooked\*(''). +In +.IR curses "," +the line discipline is a property of the screen, +applying identically to all windows associated with it. +.PP A .I window is a rectangular grid of character cells, -addressed by row and column coordinates -.RI ( y , +addressed by line and column coordinates +.RI ( y "," .IR x ), with the upper left corner as (0, 0). A window called -.BR \%stdscr , -the same size as the terminal screen, +.BR \%stdscr "," +by default the same size as the terminal screen, is always available. Create others with \fB\%newwin\fP(3X). .PP @@ -262,17 +281,16 @@ effects. .PP Functions permit manipulation of a window and the .I cursor -identifying the cell within it at which the next output operation will -occur. +identifying the cell within it at which the next operation will occur. Among those, the most basic are \fB\%move\fP(3X) and \fB\%addch\fP(3X): -these place the cursor and write a character to -.BR \%stdscr , +these place the cursor within and write a character to +.BR \%stdscr "," respectively. .PP Frequent changes to the terminal screen can cause unpleasant flicker or inefficient use of the communication channel to the device, -so the library does not generally update it automatically. +so as a rule the library does not update it automatically. Therefore, after using .I curses @@ -284,7 +302,7 @@ The library .\" X/Open Curses Issue 7 assumes some optimization will be done, but .\" does not mandate it in any way. .I optimizes -its output by computing a minimal number of operations to mutate the +its output by computing a minimal volume of operations to mutate the screen from its state at the previous refresh to the new one. Effective optimization demands accurate information about the terminal device: @@ -297,48 +315,54 @@ implementation. Special windows called .I pads may also be manipulated. -These are windows that are not constrained to the size of the terminal -screen and whose contents need not be completely displayed. +These are not constrained to the size of the terminal screen and their +contents need not be completely displayed. See \fB\%curs_pad\fP(3X). .PP -In addition to drawing characters on the screen, -rendering attributes and colors may be supported, -causing the characters to show up in such modes as underlined, -in reverse video, -or in color on terminals that support such display enhancements. -See \fB\%curs_attr\fP(3X). +Many terminals support configuration of character cell foreground and +background colors as well as +.IR attributes "," +which cause characters to render in such modes as +boldfaced, +underlined, +or in reverse video. +See \fB\%curs_color\fP(3X) and \fB\%curs_attr\fP(3X). .PP .I curses -predefines constants for a small set of forms-drawing graphics +defines constants to simplify access +to a small set of forms-drawing graphics corresponding to the DEC Alternate Character Set (ACS), a feature of VT100 and other terminals. -See \fB\%waddch\fP(3X). +See \fB\%addch\fP(3X). .PP .I curses is implemented using the operating system's terminal driver; -keystroke events are received not as scan codes but as byte sequences. -Graphical keycaps +key events are received not as scan codes but as byte sequences. +The driver reports graphical keycaps (alphanumeric and punctuation keys, and the space) -appear as-is. +as-is. Everything else, including the tab, enter/return, keypad, arrow, and function keys, -appears as a control character or a multibyte +appears to +.I curses +as a control character or a multibyte .I "escape sequence." .I curses -translates these into unique +can translate the latter into unique .I "key codes." -See \fB\%getch\fP(3X). +See \fB\%keypad\fP(3X) and \fB\%getch\fP(3X). .PP .I \%ncurses provides reimplementations of the SVr4 \fBpanel\fP(3X), \fBform\fP(3X), -and \fBmenu\fP(3X) libraries to ease construction of user interfaces +and \fBmenu\fP(3X) libraries; +they permit overlapping windows and ease construction of user interfaces with -.IR curses . +.IR curses "." .SS "Initialization" The selection of an appropriate value of .I TERM @@ -352,10 +376,9 @@ A well-configured system selects a correct value automatically; \fB\%tset\fP(1) may assist with troubleshooting exotic situations. .PP -If you change the terminal type, -export the -.I TERM -environment variable in the shell, +If you change the terminal type from a shell, +export +.IR TERM "," then run \fB\%tset\fP(1) or the .RB \*(`` "@TPUT@ init" \*('' command. @@ -370,10 +393,10 @@ or if the .I curses program is executing in a graphical windowing environment, the information obtained thence overrides that obtained by -.IR \%term\%info . +.IR \%term\%info "." An .I \%ncurses -extension supports resizable terminals; +extension supports resizable terminal displays; see \fB\%wresize\fP(3X). .PP If the environment variable @@ -384,9 +407,8 @@ a program checks first for a terminal type description in the location it identifies. .I \%TERMINFO -is useful for developing experimental type descriptions or when write -permission to -.I \%\*d +is useful for developing type descriptions or when write permission to +.I \%@TERMINFO@ is not available. .PP See section \*(``ENVIRONMENT\*('' below. @@ -402,41 +424,61 @@ those with a \*(``mv\*('' prefix first perform cursor movement using a \*(``mvw\*('' prefix indicates both. The \*(``w\*('' function is typically the elemental one; the removal of this prefix usually indicates operation on -.BR \%stdscr . +.BR \%stdscr "." .PP -Four functions prefixed with \*(``p\*('' require a pad argument. +Four functions prefixed with \*(``p\*('' require a +.I pad +argument; +see below. .PP In function synopses, .I \%ncurses man pages apply the following names to parameters. +We introduce the character types in the next subsection. .PP .TS center; Li L. -bf \fIbool\fP (\fBTRUE\fP or \fBFALSE\fP) +bf a \fIbool\fP (\fBTRUE\fP or \fBFALSE\fP) c a \fIchar\fP or \fIint\fP ch a \fIchtype\fP wc a \fIwchar_t\fP or \fIwint_t\fP wch a \fIcchar_t\fP win pointer to a \fIWINDOW\fP pad pointer to a \fIWINDOW\fP that is a pad +pair a foreground/background color pair identifier .TE .SS "Wide and Non-wide Character Configurations" -This manual page describes functions that appear in any configuration -of the library. +This man page primarily surveys functions that appear in any +configuration of the library. There are two common configurations; +for others, see section \*(``ALTERNATE CONFIGURATIONS\*('' below. .TP 10 \" "ncursesw" + 2n .I \%ncurses is the library in its \*(``non-wide\*('' configuration, handling only eight-bit characters. -It stores a character combined with attributes in a +It stores a character combined with attributes +and a color pair identifier +in a .I \%chtype datum, which is often an alias of -.IR int . +.IR int "." +A string of +.I curses +characters is similar to a C +.I char +string; +a +.I chtype +string ends with an integral +.BR 0 "," +the null +.I curses +character. .IP -Attributes alone +Attributes and a color pair identifier (with no corresponding character) can be stored in variables of .I \%chtype @@ -444,12 +486,24 @@ or .I \%attr_t type. In either case, -they are represented as an integral bit mask. +they are accessed via an integral bit mask. .IP -Each cell of a +.I \%ncurses +stores each cell of a .I \%WINDOW -is stored as a -.IR \%chtype . +as a +.IR \%chtype "." +X/Open Curses does not specify the sizes of the character code or +color pair identifier, +nor the quantity of attribute bits, +in +.IR chtype ";" +these are implementation-dependent. +.I \%ncurses +uses eight bits for the character code. +An application requiring a wider character type, +for instance to represent Unicode, +should use the wide-character API. .TP 10 .I \%ncursesw is the library in its \*(``wide\*('' configuration, @@ -457,19 +511,49 @@ which handles character encodings requiring a larger data type than .I \%char (a byte-sized type) can represent. -It adds about one third more calls using additional data types that -can store such -.I multibyte -characters. +It provides additional functions that complement those in +the non-wide library where the size of the underlying character type is +significant. +A somewhat regular naming convention relates many of the wide variants +to their non-wide counterparts; +where a non-wide function name contains \*(``ch\*('' or \*(``str\*('', +prefix it with \*(``_w\*('' to obtain the wide counterpart. +For example, +\fB\%waddch\fP becomes \fB\%wadd_wch\fP. +An exception is +.B \%ins_nwstr +(and its variants), +spelled thus instead of \*(``insn_wstr\*(''. +(Exceptions that add only \*(``w\*('' comprise +.BR \%addwstr "," +.BR \%inwstr "," +and their variants.) +.\" This is because they operate on "plain" wide-character strings +.\" (`wchar_t*`) and not curses complex character strings (`cchar_t*`). +.\" SVID 4 did specify functions like `addwch()` and `inswch()` that +.\" operated on `chtype`s assuming that they were wide enough for a +.\" `wchar_t` plus attribute and color pair bits; X/Open Curses did not +.\" standardize these. +.IP +This convention is inapplicable to some non-wide function names, +so other transformations are used for the wide configuration: +the window background management function \*(``bkgd\*('' becomes +\*(``bkgrnd\*(''; +the window border-drawing and -clearing functions are suffixed with +\*(``_set\*(''; +and character attribute manipulation functions like +\*(``attron\*('' become \*(``attr_on\*(''. .RS 10 \" same as foregoing tag width .TP 9 \" "cchar_t" + 2n .I \%cchar_t -corresponds to the non-wide configuration's -.IR \%chtype . -It always a structure type, -because it stores more data than fit into a standard scalar type. +is a +.I "curses complex character" +and corresponds to the non-wide-character configuration's +.IR \%chtype "." +It is a structure type +because it requires more storage than a standard scalar type offers. A character code may not be representable as a -.IR \%char , +.IR \%char "," and moreover more than one character may occupy a cell (as with accent marks and other diacritics). Each character is of type @@ -477,20 +561,26 @@ Each character is of type a complex character contains one spacing character and zero or more non-spacing characters (see below). -Attributes and color data are stored in separate fields of the -structure, -not combined as in -.IR \%chtype . +A string of complex characters ends with a +.I \%cchar_t +whose +.I \%wchar_t +member is the null wide character. +Attributes and a color pair identifier are stored in separate fields of +the structure, +not combined into an integer as in +.IR \%chtype "." .PP -Each cell of a +.I \%ncurses +stores each cell of a .I \%WINDOW -is stored as a -.IR \%cchar_t . -.PP +as a +.IR \%cchar_t "." \fB\%setcchar\fP(3X) and \fB\%getcchar\fP(3X) store and retrieve .I \%cchar_t data. +.PP The wide library API of .I \%ncurses depends on two data types standardized by ISO C95. @@ -498,16 +588,16 @@ depends on two data types standardized by ISO C95. .I \%wchar_t stores a wide character. Like -.IR \%chtype , +.IR \%chtype "," it may be an alias of -.IR int . +.IR int "." Depending on the character encoding, a wide character may be -.IR spacing , +.IR spacing "," meaning that it occupies a character cell by itself and typically accompanies cursor advancement, or -.IR non-spacing , +.IR non-spacing "," meaning that it occupies the same cell as a spacing character, is often regarded as a \*(``modifier\*('' of the base glyph with which it combines, @@ -517,35 +607,12 @@ and typically does not advance the cursor. can store a .I \%wchar_t or the constant -.BR \%WEOF , +.IR \%WEOF "," analogously to the .IR int -sized character manipulation functions of ISO C and its constant -.BR \%EOF . +.IR \%EOF "." .RE -.IP -The wide library provides additional functions that complement those in -the non-wide library where the size of the underlying character type is -significant. -A somewhat regular naming convention relates many of the wide variants -to their non-wide counterparts; -where a non-wide function name contains \*(``ch\*('' or \*(``str\*('', -prefix it with \*(``_w\*('' to obtain the wide counterpart. -For example, -\fB\%waddch\fP becomes \fB\%wadd_wch\fP. -(Exceptions that add only \*(``w\*('' comprise -.BR \%addwstr , -.BR \%inwstr , -and their variants.) -.IP -This convention is inapplicable to some non-wide function names, -so other transformations are used for the wide configuration: -the window background management function \*(``bkgd\*('' becomes -\*(``bkgrnd\*(''; -the window border-drawing and -clearing functions are suffixed with -\*(``_set\*(''; -and character attribute manipulation functions like -\*(``attron\*('' become \*(``attr_on\*(''. .\" .SS "Function Name Index" The following table lists the @@ -559,8 +626,8 @@ neither described by X/Open Curses nor present in SVr4. .PP .TS center tab(/); -l l . -\f(BIcurses\fP Function Name/Man Page +L L. +\fIcurses\fP Function Name/Man Page _ COLOR_PAIR/\fBcurs_color\fP(3X) PAIR_NUMBER/\fBcurs_color\fP(3X) @@ -743,7 +810,7 @@ mvaddnwstr/\fBcurs_addwstr\fP(3X) mvaddstr/\fBcurs_addstr\fP(3X) mvaddwstr/\fBcurs_addwstr\fP(3X) mvchgat/\fBcurs_attr\fP(3X) -mvcur/\fBcurs_terminfo\fP(3X) +mvcur/\fBcurs_kernel\fP(3X) mvdelch/\fBcurs_delch\fP(3X) mvderwin/\fBcurs_window\fP(3X) mvget_wch/\fBcurs_get_wch\fP(3X) @@ -1033,20 +1100,19 @@ see sections \*(``ALTERNATE CONFIGURATIONS\*('' and \*(``EXTENSIONS\*('' below. .SH RETURN VALUE Unless otherwise noted, -functions that return an integer return +functions that return integers return the constants .B OK on success and .B ERR -on failure. -Functions that return pointers return -.B NULL -on failure. +on failure; +see \fB\%curs_variables\fP(3X). +Functions that return pointers return a null pointer on failure. Typically, .I \%ncurses treats a null pointer passed as a function parameter as a failure. Functions prefixed with \*(``mv\*('' first perform cursor movement and fail if the position -.RI ( y , +.RI ( y "," .IR x ) is outside the window boundaries. .SH ENVIRONMENT @@ -1055,27 +1121,30 @@ runtime behavior of .I \%ncurses applications. The library may be configured to disregard the variables -.IR \%TERMINFO , -.IR \%TERMINFO_DIRS , -.IR \%TERMPATH , +.IR \%TERMINFO "," +.IR \%TERMINFO_DIRS "," +.IR \%TERMPATH "," and -.IR HOME , +.IR HOME "," if the user is the superuser (root), or the application uses \fI\%setuid\fP(2) or \fI\%setgid\fP(2). .SS "\fIBAUDRATE\fP" The debugging library checks this variable when the application has redirected output to a file. -Its integral value is used for the baud rate. +.I \%ncurses +interprets its integral value as the terminal's line speed +in bits per second. If that value is absent or invalid, .I \%ncurses uses 9600. -This feature allows testers to construct repeatable test cases -that take into account optimization decisions that depend on baud rate. +This feature allows developers to construct repeatable test cases +that take into account optimization decisions that depend +on the terminal's line speed. .SS "\fICC\fP (command character)" When set, the .B \%command_character -.RB ( \%cmdch ) +.RB \%( cmdch ) capability value of loaded .I \%term\%info entries changes to the value of this variable. @@ -1083,14 +1152,16 @@ Very few .I \%term\%info entries provide this feature. .PP -Because this name is also used in development environments to represent -the C compiler's name, +Because this name is also used in development environments to store the +C compiler's name, .I \%ncurses ignores its value if it is not one character in length. .SS "\fICOLUMNS\fP" -This variable specifies the width of the screen in characters. +This variable specifies the width of the screen in character cells. Applications running in a windowing environment usually are able to obtain the width of the window in which they are executing. +.I \%ncurses +enforces an upper limit of 512 when reading the value. If .I \%COLUMNS is not defined and the terminal's screen size is not available from the @@ -1098,7 +1169,7 @@ terminal driver, .I \%ncurses uses the size specified by the .B \%columns -.RB ( \%cols ) +.RB \%( cols ) capability of the terminal type's entry in the .I \%term\%info database, @@ -1156,7 +1227,11 @@ stores this interval in milliseconds. The default value of 1000 (one second) is adequate for most uses. -This environment variable overrides it. +This environment variable overrides it; +.I \%ncurses +enforces an upper limit of 30,000 +(30 seconds) +when reading the value. .PP The most common instance where you may wish to change this value is to work with a remote host over a slow communication channel. @@ -1165,6 +1240,10 @@ If the host running a application does not receive the characters of an escape sequence in a timely manner, the library can interpret them as multiple key stroke events. +Conversely, +a fast typist on a low-latency connection who happens to input an ESC +followed by characters that match an escape sequence may experience +confusing application behavior. .PP \fI\%xterm\fP(1) mouse events are a form of escape sequence; therefore, @@ -1181,7 +1260,9 @@ does not create problems when compiling an application. If \fB\%keypad\fP(3X) is disabled for the .I curses window receiving input, -a program must disambiguate escape sequences itself. +.B \%ESCDELAY +is irrelevant +and a program must disambiguate escape sequences itself. .SS "\fIHOME\fP" .I \%ncurses may read and write auxiliary terminal descriptions in @@ -1196,7 +1277,7 @@ specifies the height of the screen in characters. The corresponding .I \%term\%info capability and code is -.BR \%lines . +.BR \%lines "." See the description of the .I \%COLUMNS variable above. @@ -1228,21 +1309,22 @@ to tell .I \%ncurses not to assume anything about the colors, use a value of \*(``\-1,\-1\*(''. -To make the default color scheme green on black, +To make the default color scheme green on black on a terminal +that uses ANSI\ X3.64/ECMA-48/ISO\ 6429 color assignments, use \*(``2,0\*(''. .I \%ncurses accepts integral values from \-1 up to the value of the .I \%term\%info .B \%max_colors .RB ( colors ) -capability. +capability for the selected terminal type. .SS "\fINCURSES_CONSOLE2\fP" (MinGW port only) The .I \%Console2 .\" https://www.hanselman.com/blog/console2-a-better-windows-command-prompt program defectively handles the Microsoft Console API call -.IR \%Create\%Console\%Screen\%Buffer . +.IR \%Create\%Console\%Screen\%Buffer "." Applications that use it will hang. However, it is possible to simulate the action of this call by mapping @@ -1256,7 +1338,11 @@ has the same effect. When .I \%ncurses is configured to use the GPM interface, -this variable may list one or more terminal names +this variable may list one or more terminal type names, +delimited by vertical bars +.RB ( | ) +or colons +.RB ( : ), against which the .I TERM variable @@ -1265,7 +1351,7 @@ is matched. An empty value disables the GPM interface, using .IR \%ncurses 's -built-in support for \fIxterm\fP(1) mouse protocols instead. +built-in support for \fI\%xterm\fP(1) mouse protocols instead. If the variable is absent, .I \%ncurses attempts to open GPM if @@ -1279,18 +1365,20 @@ your terminal driver may not handle them properly. Set this environment variable to any value to disable the feature. You can also adjust your \fI\%stty\fP(1) settings to avoid the problem. .SS "\fINCURSES_NO_MAGIC_COOKIE\fP" -Many terminals store video attributes as a property of a character cell, +Many terminals store video attributes as properties of a character cell, as .I curses does. Historically, -some recorded changes in video attributes as data that logically -.I occupies +some recorded changes in video attributes as data +that logically +(but invisibly) +.I occupied character cells on the display, switching attributes on or off, -similarly to tags in a markup language; -these are termed \*(``magic cookies\*('', -and must be subsequently overprinted. +similarly to tags in a markup language, +which then had to be overprinted to depict the cells' desired contents; +these are termed \*(``magic cookies\*(''. If the .I \%term\%info entry for your terminal type does not adequately describe its handling @@ -1315,12 +1403,13 @@ that is, limiting the speed of communication to what the hardware could handle. Unless a hardware terminal is interfaced into a terminal concentrator (which does flow control), -an application must manage flow control itself to prevent overruns and -data loss. +an application must manage flow itself to prevent overruns and data +loss. .PP -A solution that comes at no hardware cost is for an application to pause -after directing a terminal to execute an operation that it performs -slowly, +A solution that comes at no hardware cost +is for an application to pause transmission +after directing a terminal to execute an operation +that it performs slowly, such as clearing the display. Many terminal type descriptions, including that for the VT100, @@ -1343,7 +1432,7 @@ the library used \fI\%setbuf\fP(3) to enable fully buffered output when initializing the terminal. This was done, as in SVr4 -.IR curses , +.IR curses "," to increase performance. For testing purposes, both of @@ -1359,8 +1448,7 @@ Nowadays, .I \%ncurses performs its own buffering and does not require this workaround; it does not modify the buffering of the standard output stream. -This approach makes signal handling, -as for interrupts, +This approach makes the library's handling of keyboard-initiated signals more robust. A drawback is that certain unconventional programs mixed \fI\%stdio\fP(3) calls with @@ -1421,6 +1509,7 @@ Examples follow. .PP .RS 3 .EX +.nf # linux console, if patched to provide working # VT100 shift\-in/shift\-out, with corresponding font. linux\-vt100|linux console with VT100 line\-graphics, @@ -1429,6 +1518,7 @@ linux\-vt100|linux console with VT100 line\-graphics, # uxterm with vt100Graphics resource set to false xterm\-utf8|xterm relying on UTF\-8 line\-graphics, U8#1, use=xterm, +.fi .EE .RE .PP @@ -1507,8 +1597,8 @@ This variable overrides the default location. Descriptions in .I \%term\%info format are normally stored in a directory tree using subdirectories -named by the common first letters of the terminal types named therein. -This is the scheme used in System\ V. +named for the common first letters of the terminal types named therein. +System\ V used this scheme. .bP If .I \%ncurses @@ -1517,16 +1607,16 @@ then .I \%TERM\%INFO may name its location, such as -.IR \%/usr/share/terminfo.db , +.IR \%/usr/share/terminfo.db "," rather than -.IR \%/usr/share/terminfo/ . +.IR \%/usr/share/terminfo/ "." .PP The hashed database uses less disk space and is a little faster than the directory tree. However, -some applications assume the existence of the directory tree, -and read it directly -rather than using the +some applications assume the existence of the directory tree +and read it directly, +ignoring the .I \%term\%info API. .bP @@ -1550,14 +1640,17 @@ You might produce the base64 format using \fB\%infocmp\fP(1M). .RS 4 .IP .EX +.nf TERMINFO=$(infocmp \-0 \-Q2 \-q) export TERMINFO +.fi .EE .RE .IP -The compiled description is used only if it corresponds to the terminal -type identified by -.IR TERM . +.I \%ncurses +uses the compiled description only if it corresponds +to the terminal type identified by +.IR TERM "." .PP Setting .I \%TERM\%INFO @@ -1588,7 +1681,7 @@ environment variable .bP location(s) configured and compiled into .I \%ncurses -.RS 3 +.RS .if !'\*(td'' \{\ .bP .I \%@TERMINFO_DIRS@ @@ -1602,7 +1695,7 @@ location(s) configured and compiled into .SS "\fITERMINFO_DIRS\fP" This variable specifies a list of locations, akin to -.IR PATH , +.IR PATH "," in which .I \%ncurses searches for the terminal type descriptions described by @@ -1624,10 +1717,10 @@ does not hold a terminal type description or file name, then .I \%ncurses checks the contents of -.IR \%TERMPATH , +.IR \%TERMPATH "," a list of locations, akin to -.IR PATH , +.IR PATH "," in which it searches for .I termcap terminal type descriptions. @@ -1641,10 +1734,10 @@ and are unset or invalid, .I \%ncurses searches for the files -.IR \%/etc/termcap , -.IR \%/usr/share/misc/termcap , +.IR \%/etc/termcap "," +.IR \%/usr/share/misc/termcap "," and -.IR \%$HOME/.termcap , +.IR \%$HOME/.termcap "," in that order. .SH "ALTERNATE CONFIGURATIONS" Many different @@ -1654,102 +1747,204 @@ determined by the options given to the .I \%configure script when building the library. Run the script with the -.B \-\-help +.B \%\-\-help option to peruse them all. A few are of particular significance to the application developer employing -.IR \%ncurses . +.IR \%ncurses "." .TP 5 .B \-\-disable\-overwrite -The standard include for \fI\%ncurses\fP is as noted in \fBSYNOPSIS\fP: +Avoid file name conflicts between +.I \%ncurses +and an existing +.I curses +installation on the system. +The standard C preprocessor inclusion for the +.I curses +library is as follows. .RS 5 .PP .RS 4 .EX -\fB#include <curses.h>\fP +.nf +.\" The dummy character prevents undesired rewriting of the next line on +.\" installation of the man page. +\fB#\&include <curses.h>\fP +.fi .EE .RE .PP -This option is used to avoid filename conflicts when \fI\%ncurses\fP -is not the main implementation of curses of the computer. -If \fI\%ncurses\fP is installed disabling overwrite, -it puts its headers in a subdirectory, -e.g., +If +.I \%ncurses +is installed disabling overwrite, +it puts its header files in a subdirectory. +Here is an example. .PP .RS 4 .EX -\fB#include <ncurses/curses.h>\fP +.\" The dummy character prevents undesired rewriting of the next line on +.\" installation of the man page. +\fB#\&include <ncurses/curses.h>\fP .EE .RE .PP -It also omits a symbolic link which would allow you to use \fB\-lcurses\fP -to build executables. +With +.BR \%\-\-disable\-overwrite "," +installation also omits a symbolic link that would cause the compiler's +.B \%\-lcurses +option to link object files with +.I \%ncurses +instead of the system +.I curses +library. +.PP +The directory used by this configuration of +.I \%ncurses +is shown in section \*(``SYNOPSIS\*('' above. .RE .TP 5 .B \-\-enable\-widec -The configure script renames the library and -(if the \fB\-\-disable\-overwrite\fP option is used) -puts the header files in a different subdirectory. -All of the library names have a \*(``w\*('' appended to them, -i.e., instead of -.RS 5 -.PP -.RS 4 -.EX -\fB\-lncurses\fP -.EE -.RE -.PP -you link with -.PP -.RS 4 -.EX -\fB\-lncursesw\fP -.EE -.RE -.PP -You must also enable the wide-character features in the header file -when compiling for the wide-character library +(default for ABI\ 6+ since 2023-10-21) +Enable support for wide characters. +The +.I \%configure +script renames the +.I \%ncurses +library +(and the +.I tinfo +library, +if +.B \%\-\-with\-termlib +is also specified), +appending \*(``w\*(''. +An application desirous of wide-character support then uses +.B \%\-lncursesw +(or +.BR \%\-ltinfow ) +instead of +.B \%\-lncurses +(or +.BR \%\-ltinfo ) +as its linker option. +The +.IR ncurses++ "," +.IR panel "," +.IR form "," +and +.I menu +libraries are renamed similarly. +.IP +An application must also +define certain C preprocessor symbols +to enable wide-character features +in +.I curses +header files to use the extended (wide-character) functions. -The symbol which enables these features has changed -since X/Open Curses, Issue 4: +The symbol that enables these features has changed +since X/Open Curses Issue\ 4. +.RS 5 .bP -Originally, the wide-character feature required the symbol -\fB_XOPEN_SOURCE_EXTENDED\fP -but that was only valid for XPG4 (1996). +Originally, +the wide-character feature required the symbol +.IR \%_XOPEN_SOURCE_EXTENDED "," +but that was valid only for XPG4 (1996). .bP -Later, that was deemed conflicting with \fB_XOPEN_SOURCE\fP defined to 500. +Later, +that was deemed conflicting with an +.I \%_XOPEN_SOURCE +value of 500. .bP As of mid-2018, -none of the features in this implementation require a \fB_XOPEN_SOURCE\fP -feature greater than 600. -However, X/Open Curses, Issue 7 (2009) recommends defining it to 700. +no +.I \%ncurses +feature requires a +.I \%_XOPEN_SOURCE +value greater than 600. +However, +X/Open Curses Issue\ 7 (2009) recommends defining it to 700. .bP -Alternatively, you can enable the feature by defining \fBNCURSES_WIDECHAR\fP -with the caveat that some other header file than \fBcurses.h\fP -may require a specific value for \fB_XOPEN_SOURCE\fP +Alternatively, +you can enable the feature by defining +.B \%NCURSES_WIDECHAR +with the caveat that some header file other than +.I \%curses.h +may require a specific value for +.I \%_XOPEN_SOURCE (or a system-specific symbol). -.PP -The \fI\%curses.h\fP header file installed for the wide-character -library is designed to be compatible with the non-wide library's header. -Only the size of the \fI\%WINDOW\fP structure differs; -few applications require more than pointers to \fI\%WINDOW\fPs. -.PP -If the headers are installed allowing overwrite, -the wide-character library's headers should be installed last, +.RE +.IP +The +.I \%curses.h +header file installed +for the wide-character library +is designed to be compatible with the non-wide library's header. +Only the size of the +.I \%WINDOW +structure differs; +few applications require more than pointers to +.IR \%WINDOW "." +.\" XXX: What's different in term.h? +.IP +If +.IR \%ncurses 's +header files are installed allowing overwrite +(the default, +but see +.B \%\-\-disable\-overwrite +above), +the wide-character library's headers should be installed last +by packaging systems and similar, to allow applications to be built using either library from the same set of headers. -.RE .TP 5 .B \-\-with\-pthread -The configure script renames the library. -All of the library names have a \*(``t\*('' appended to them -(before any \*(``w\*('' added by \fB\-\-enable\-widec\fP). +Enable support for multi-threaded applications. +The +.I \%configure +script renames the +.I \%ncurses +library +(and the +.I tinfo +library, +if +.B \%\-\-with\-termlib +is also specified), +appending \*(``t\*('' +(before any \*(``w\*('' added by +.BR \%\-\-enable\-widec ). +An application desirous of support for multiple threads of execution +then uses, +for example, +.B \%\-lncursest +(or +.BR \%\-ltinfot ) +instead of +.B \%\-lncurses +(or +.BR \%\-ltinfo ) +as its linker option. +The +.IR ncurses++ "," +.IR panel "," +.IR form "," +and +.I menu +libraries are renamed similarly. .IP -The global variables such as \fBLINES\fP are replaced by macros to -allow read-only access. -At the same time, setter-functions are provided to set these values. -Some applications (very few) may require changes to work with this convention. +.I \%ncursest +and +.I \%ncursestw +replace global variables such as +.B \%LINES +with macros allowing read-only access. +At the same time, +they provide functions to set these values. +Very few applications require changes +to work with this convention. +.\" see definition of NCURSES_WRAPPED_VAR .TP 5 .B \-\-with\-shared .tQ @@ -1758,24 +1953,60 @@ Some applications (very few) may require changes to work with this convention. .B \-\-with\-debug .tQ .B \-\-with\-profile +Mandate compilation of the +.I \%ncurses +library +(and the +.I tinfo +library, +if +.B \%\-\-with\-termlib +is also specified) +in the specified forms. The shared and normal (static) library names differ by their suffixes, -e.g., \fBlibncurses.so\fP and \fBlibncurses.a\fP. -The debug and profiling libraries add a \*(``_g\*('' -and a \*(``_p\*('' to the root names respectively, -e.g., \fBlibncurses_g.a\fP and \fBlibncurses_p.a\fP. +as with +.I \%libncurses.so +and +.IR \%libncurses.a "." +The debugging and profiling libraries add a \*(``_g\*('' +and a \*(``_p\*('' to the roots of these respective names, +forming +.I \%libncurses_g.so +and +.IR \%libncurses_p.a "," +for example. +The +.IR ncurses++ "," +.IR panel "," +.IR form "," +and +.I menu +libraries are made available similarly. .TP 5 .B \-\-with\-termlib -Low-level functions which do not depend upon whether the library -supports wide-characters, are provided in the tinfo library. -.IP -By doing this, it is possible to share the tinfo library between -wide/normal configurations as well as reduce the size of the library -when only low-level functions are needed. +Provide +.IR \%ncurses 's +lower-level terminal interface functions +(those that do not depend +on the +.I \%SCREEN +and +.I \%WINDOW +abstractions) +in a library named +.IR \%tinfo "." +This arrangement reduces an application's linking and/or loading times +when it does not require +.IR curses 's +higher-level features. .IP -Those functions are described in these pages: +The following pages document +.I curses +functions provided by +.IR \%tinfo "." .RS .bP -\fB\%curs_extend\fP(3X) \- miscellaneous \fIcurses\fP extensions +\fB\%curs_extend\fP(3X) \- miscellaneous \fIncurses\fP extensions .bP \fB\%curs_inopts\fP(3X) \- \fIcurses\fP input options .bP @@ -1792,16 +2023,28 @@ database .RE .TP 5 .B \-\-with\-trace -The \fBtrace\fP function normally resides in the debug library, -but it is sometimes useful to configure this in the shared library. -Configure scripts should check for the function's existence rather -than assuming it is always in the debug library. +Expose the \fBcurses_trace\fP(3X) function +in the +.I ncurses(w) +shared and static libraries. +Normally, +it is available only in the debugging library. +(If +.B \-\-with\-termlib +is also specified, +.I tinfo(w) +rather than +.I ncurses(w) +supplies the deprecated \fBtrace\fP(3X) function.) +An application's configuration script should check +for the function's existence +rather than assuming its confinement to the debugging library. .SH FILES .TP .I @DATADIR@/tabset tab stop initialization database .TP -.I \*d +.I @TERMINFO@ compiled terminal capability database .SH NOTES X/Open Curses permits most functions it specifies to be made available @@ -1819,20 +2062,20 @@ to reuse functions those that move the cursor before another operation), and .bP -a few special cases. +in a few special cases. .PP If the standard output file descriptor of an .I \%ncurses program is redirected to something that is not a terminal device, the library writes screen updates to the standard error file descriptor. This was an undocumented feature of SVr3 -.IR curses . +.IR curses "." .PP See subsection \*(``Header Files\*('' below regarding symbols exposed by inclusion of \fI\%curses.h\fP. .SH EXTENSIONS .I \%ncurses -enables an application to capture mouse events on certain terminals, +enables an application to capture mouse events from certain terminals, including \fI\%xterm\fP(1); see \fB\%curs_mouse\fP(3X). .PP @@ -1872,14 +2115,17 @@ See \fB\%default_colors\fP(3X). An .I \%ncurses application can eschew knowledge of +.I \%SCREEN +and .I \%WINDOW structure internals, instead using accessor functions such as +\fB\%is_cbreak\fP(3X) and \fB\%is_scrollok\fP(3X). .PP .I \%ncurses -enables an application to direct application output to a printer -attached to the terminal device; +enables an application to direct its output to a printer attached to the +terminal device; see \fB\%curs_print\fP(3X). .PP .I \%ncurses @@ -1889,37 +2135,35 @@ and \fB\%extended_slk_color\fP(3X) as a form of \fB\%slk_color\fP(3X) that can gather color information from them when many colors are supported. .PP -Some extensions are available only if .I \%ncurses permits modification of \fB\%unctrl\fP(3X)'s behavior; see \fB\%use_legacy_coding\fP(3X). -.I \%ncurses -is compiled to support them; -section \*(``ALTERNATE CONFIGURATIONS\*('' describes how. -.bP +.PP Rudimentary support for multi-threaded applications may be available; see \fBcurs_threads\fP(3X). -.bP +.PP Functions that ease the management of multiple screens can be exposed; see \fBcurs_sp_funcs\fP(3X). -.bP +.PP To aid applications to debug their memory usage, -.I ncurses +.I \%ncurses optionally offers functions to more aggressively free memory it dynamically allocates itself; see \fBcurs_memleaks\fP(3X). -.bP +.PP The library facilitates auditing and troubleshooting of its behavior; see \fBcurs_trace\fP(3X). -.bP -The compiler option +.PP +Compiling +.I \%ncurses +with the option .B \%\-DUSE_GETCAP -causes the library to fall back to reading +causes it to fall back to reading .I \%/etc/termcap if the terminal setup code cannot find a .I \%term\%info entry corresponding to -.IR TERM . +.IR TERM "." Use of this feature is not recommended, as it essentially includes an entire .I termcap @@ -1943,7 +2187,9 @@ such as wide-character and color support. .I \%ncurses intends base-level conformance with X/Open Curses, and supports all features of its enhanced level -except the \fB\%untic\fP utility. +except the +.I \%untic +utility. .PP Differences between X/Open Curses and .I \%ncurses @@ -1963,11 +2209,10 @@ to ensure that they are not null. This is done primarily to guard against programmer error. The standard interface does not provide a way for the library to tell an application which of several possible errors occurred. -Relying on this -(or some other) -extension adversely affects the portability of -.I curses -applications. +An application that relies on +.I \%ncurses +to check its function parameters for validity limits its portability and +robustness. .SS "Padding Differences" In historical .I curses @@ -1998,7 +2243,7 @@ The header file itself includes the header files .I \%stdio.h and -.IR \%unctrl.h . +.IR \%unctrl.h "." .PP X/Open Curses has more to say, .RS 4 @@ -2006,20 +2251,20 @@ X/Open Curses has more to say, The inclusion of .I \%curses.h may make visible all symbols from the headers -.IR \%stdio.h , -.IR \%term.h , -.IR \%termios.h , +.IR \%stdio.h "," +.IR \%term.h "," +.IR \%termios.h "," and -.IR \%wchar.h . +.IR \%wchar.h "." .RE .PP but does not finish the story. A more complete account follows. .bP -Starting with 4BSD -.I curses -(1980) -all implementations have provided a +The first +.IR curses "," +in 4BSD, +provided a .I \%curses.h file. .IP @@ -2030,7 +2275,7 @@ code included and .I \%unctrl.h from an internal header file -.IR \%curses.ext , +.IR \%curses.ext "," where \*(``ext\*('' abbreviated \*(``externs\*(''. .IP @@ -2045,12 +2290,12 @@ and but nothing in .I \%curses.h itself relied upon -.IR \%stdio.h . +.IR \%stdio.h "." .bP SVr2 .I curses added -.IR \%newterm , +.IR \%newterm "," which relies upon .I \%stdio.h because its function prototype employs the @@ -2062,9 +2307,9 @@ SVr4 added .I \%putwin and -.IR \%getwin , +.IR \%getwin "," which also use -.IR \%stdio.h . +.IR \%stdio.h "." .IP X/Open Curses specifies all three of these functions. .IP @@ -2073,22 +2318,22 @@ SVr4 and X/Open Curses do not require the developer to include .I \%stdio.h before -.IR \%curses.h . +.IR \%curses.h "." Both document use of .I curses as requiring only -.IR \%curses.h . +.IR \%curses.h "." .IP As a result, standard .I \%curses.h always includes -.IR \%stdio.h . +.IR \%stdio.h "." .bP X/Open Curses and SVr4 .I curses are inconsistent with respect to -.IR \%unctrl.h . +.IR \%unctrl.h "." .IP As noted in \fBcurs_util\fP(3X), .I \%ncurses @@ -2113,7 +2358,7 @@ from to declare .I \%setupterm in -.IR \%curses.h , +.IR \%curses.h "," but .I \%ncurses and Solaris @@ -2125,7 +2370,7 @@ AIX includes .I \%term.h and -.IR \% termios.h . +.IR \%termios.h "." Again, .I \%ncurses and Solaris @@ -2136,20 +2381,15 @@ X/Open Curses says that .I \%curses.h .B may include -.IR \%term.h , +.IR \%term.h "," but does not require it to do so. .IP Some programs use functions declared in both .I \%curses.h and -.IR \%term.h , -and must include both header files in the same module. -Very old versions of AIX -.I curses -required inclusion of -.I \%curses.h -before -.IR \%term.h . +.IR \%term.h "," +and must include both header files in the same translation unit. +.\" Is that true in ncurses? Can we supply an example? --GBR .IP The header files supplied by .I \%ncurses @@ -2157,11 +2397,11 @@ include the standard library headers required for its declarations, so .IR \%ncurses 's own header files can be included in any order. -But for portability, -you should include +For portability even to old AIX systems, +include .I \%curses.h before -.IR \%term.h . +.IR \%term.h "." .bP X/Open Curses says \*(``may make visible\*('' because including a header file does not necessarily make visible all of the symbols in it @@ -2185,7 +2425,7 @@ is included, its symbols .B may \" bold for consistency in this paragraph be made visible depending on the value of the -.B _XOPEN_SOURCE +.I \%_XOPEN_SOURCE feature test macro. .bP X/Open Curses mandates an application's inclusion of one standard C @@ -2218,11 +2458,11 @@ SVr4 provided for the possibility that an application might include either .I \%varargs.h or -.IR \%stdarg.h . +.IR \%stdarg.h "." These represented contrasting approaches to handling variadic argument lists. The older interface, -.IR \%varargs.h , +.IR \%varargs.h "," used a pointer to .I char \" V7, 32V, System III, 3BSD for variadic functions' @@ -2230,9 +2470,9 @@ for variadic functions' parameter. Later, the list acquired its own standard data type, -.IR \%va_list , +.IR \%va_list "," defined in -.IR \%stdarg.h , +.IR \%stdarg.h "," empowering the compiler to check the types of a function call's actual parameters against the formal ones declared in its prototype. .IP @@ -2244,7 +2484,7 @@ before because they either have allowed for a special type, or, like -.IR \%ncurses , +.IR \%ncurses "," they include .I \%stdarg.h themselves to provide a portable interface. diff --git a/contrib/ncurses/man/new_pair.3x b/contrib/ncurses/man/new_pair.3x index 5e844bf8fc25..58dd75733589 100644 --- a/contrib/ncurses/man/new_pair.3x +++ b/contrib/ncurses/man/new_pair.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,8 +29,8 @@ .\" .\" Author: Thomas E. Dickey .\" -.\" $Id: new_pair.3x,v 1.46 2024/03/16 15:35:01 tom Exp $ -.TH new_pair 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: new_pair.3x,v 1.51 2025/08/16 19:11:47 tom Exp $ +.TH new_pair 3X 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -101,7 +101,7 @@ add to the possible combinations, producing this total: .RE .bP An application might use up to a few dozen color pairs to -implement a predefined color scheme. +implement a color scheme. .IP Beyond that lies in the realm of programs using the foreground and background colors for \*(``ASCII art\*('' @@ -115,7 +115,8 @@ manage color pairs. .SS alloc_pair The \fBalloc_pair\fP function accepts parameters for foreground and background color, and -checks if that color combination is already associated with a color pair. +checks whether that color combination +is already associated with a color pair. .bP If the combination already exists, \fBalloc_pair\fP returns the existing pair. @@ -135,7 +136,8 @@ to the colors versus color pairs. .SS find_pair The \fBfind_pair\fP function accepts parameters for foreground and background color, and -checks if that color combination is already associated with a color pair, +checks whether that color combination +is already associated with a color pair, returning the pair number if it has been allocated. Otherwise it returns \-1. .SS free_pair diff --git a/contrib/ncurses/man/panel.3x b/contrib/ncurses/man/panel.3x index c63b4315699b..15bc81fdfa4f 100644 --- a/contrib/ncurses/man/panel.3x +++ b/contrib/ncurses/man/panel.3x @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: panel.3x,v 1.63 2024/03/16 15:35:01 tom Exp $ -.TH panel 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: panel.3x,v 1.68 2024/12/28 21:26:21 tom Exp $ +.TH panel 3X 2024-12-28 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -46,7 +46,7 @@ .. .SH NAME panel \- -panel stack extension for \fIcurses\fP +manage overlapping \fIcurses\fP windows .SH SYNOPSIS .nf \fB#include <panel.h> @@ -215,8 +215,9 @@ Use this function and not \fB\%wrefresh\fP(3X) or but \fB\%doupdate\fP is the function responsible for updating the physical screen. .SH "RETURN VALUE" -Each routine that returns a pointer returns \fBNULL\fP if an error -occurs. +Each routine that returns a pointer returns +.I NULL +if an error occurs. Each routine that returns an int value returns \fBOK\fP if it executes successfully and \fBERR\fP if not. .PP @@ -226,7 +227,10 @@ If either is null, an error is returned. .PP The \fB\%move_panel\fP function uses \fBmvwin\fP(3X), -and returns an error if \fB\%mvwin\fP returns an error. +and returns +.B ERR +if \fB\%mvwin\fP returns +.BR ERR "." .SH NOTES The header file \fI\%panel.h\fP itself includes the header file \fI\%curses.h\fP. @@ -260,9 +264,14 @@ Systems based on SVr4 source code, such as Solaris, provide this library. .bP -\fI\%ncurses\fP (since version 0.6 in 1993) -and \fIPDCurses\fP (since version 2.2 in 1995) -provide a panel library whose common ancestor +.I \%ncurses +(since version 0.6 in 1993) +and +.I \%PDCurses +(since version 2.2 in 1995) +provide a +.I panel +library whose common ancestor is a public domain implementation by Warren Tucker published in \fIu386mon\fP 2.20 (1990). .IP diff --git a/contrib/ncurses/man/resizeterm.3x b/contrib/ncurses/man/resizeterm.3x index 5e23d9fb37bb..bf098d23e60d 100644 --- a/contrib/ncurses/man/resizeterm.3x +++ b/contrib/ncurses/man/resizeterm.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,8 +29,8 @@ .\" .\" Author: Thomas E. Dickey 1996-on .\" -.\" $Id: resizeterm.3x,v 1.56 2024/03/16 15:35:01 tom Exp $ -.TH resizeterm 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: resizeterm.3x,v 1.65 2025/07/05 13:06:45 tom Exp $ +.TH resizeterm 3X 2025-07-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 @@ -62,11 +62,17 @@ If the terminal is stretched, rows and/or columns can be added to existing windows. The added cells should match the current attributes of the windows. .PP -If the calling program has not set up a handler for \fB\%SIGWINCH\fP -when it initializes \fI\%ncurses\fP -(e.g., using \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X)), -then \fI\%ncurses\fP sets a handler for \fB\%SIGWINCH\fP which notifies -the library when a window-size event has occurred. +If the application has not set up a handler for +.I \%SIGWINCH +when it initializes +.I \%ncurses +(by calling \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X)), +then +.I \%ncurses +establishes a +.I \%SIGWINCH +handler that notifies the library +when a window-resizing event has occurred. The library checks for this notification .bP when reading input data, @@ -80,10 +86,13 @@ when explicitly resuming program mode in \fB\%restartterm\fP(3X). When the library has found that the terminal's window-size has changed, it calls \fB\%resizeterm\fP to update its data structures. .PP -An application which establishes its own \fB\%SIGWINCH\fP handler +An application which establishes its own +.I \%SIGWINCH +handler can call \fB\%resizeterm\fP, but in that case, the library will not -see \fB\%SIGWINCH\fP, and proper layout will rely upon the application. -.SH FUNCTIONS +see +.IR \%SIGWINCH "," +and proper layout will rely upon the application. .SS resizeterm The function \fB\%resizeterm\fP resizes the standard and current windows (i.e., \fB\%stdscr\fP and \fB\%curscr\fP) @@ -94,7 +103,9 @@ such as the \fB\%LINES\fP and \fB\%COLS\fP variables. Most of the work for \fB\%resizeterm\fP is done by the inner function \fB\%resize_term\fP. The outer function \fB\%resizeterm\fP adds bookkeeping -for the \fB\%SIGWINCH\fP handler, +for the +.I \%SIGWINCH +handler, as well as repainting the soft-key area (see \fB\%slk_touch\fP(3X)). .PP The \fB\%resize_term\fP function attempts to resize all windows. @@ -127,14 +138,19 @@ They will fail if either of the dimensions are less than or equal to zero, or if an error occurs while (re)allocating memory for the windows. .SH NOTES While these functions are intended to be used to support a signal handler -(i.e., for \fB\%SIGWINCH\fP), care should be taken to avoid invoking them in a +(i.e., for +.IR \%SIGWINCH ")," +care should be taken to avoid invoking them in a context where \fB\%malloc\fP or \fB\%realloc\fP may have been interrupted, since it uses those functions. .PP -If \fI\%ncurses\fP is configured to supply its own \fB\%SIGWINCH\fP +If \fI\%ncurses\fP is configured to supply its own +.I \%SIGWINCH handler, .bP -on receipt of a \fB\%SIGWINCH\fP, the handler sets a flag +on receipt of a +.IR \%SIGWINCH "," +the handler sets a flag .bP which is tested in \fB\%wgetch\fP(3X), @@ -158,7 +174,9 @@ This indirect method is used to provide a safe way to resize the If the environment variables \fILINES\fP or \fI\%COLUMNS\fP are set, this overrides the library's use of the window size obtained from the operating system. -Thus, even if a \fB\%SIGWINCH\fP is received, +Thus, even if a +.I \%SIGWINCH +is received, no screen size change may be recorded. .SH PORTABILITY It is possible to resize the screen with SVr4 \fIcurses\fP, @@ -170,8 +188,13 @@ resuming using \fB\%refresh\fP(3X). .PP Doing that clears the screen and is visually distracting. .PP -This extension of \fI\%ncurses\fP was introduced in mid-1995. -It was adopted in NetBSD \fIcurses\fP (2001) and PDCurses (2003). +.I \%ncurses +introduced this extension in mid-1995. +NetBSD +.I curses +adopted it in 2001 and +.I \%PDCurses +in 2003. .SH AUTHORS Thomas Dickey (from an equivalent function written in 1988 for BSD \fIcurses\fP) .SH SEE ALSO diff --git a/contrib/ncurses/man/scr_dump.5 b/contrib/ncurses/man/scr_dump.5 index 95b2142ee6af..27dcaf4fcc33 100644 --- a/contrib/ncurses/man/scr_dump.5 +++ b/contrib/ncurses/man/scr_dump.5 @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: scr_dump.5,v 1.46 2024/03/23 20:42:29 tom Exp $ -.TH scr_dump 5 2024-03-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" +.\" $Id: scr_dump.5,v 1.52 2025/04/05 21:56:26 tom Exp $ +.TH scr_dump 5 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -87,6 +87,7 @@ This is the pattern submitted to the maintainers of the \fBfile\fP program: .PP .RS 4 .EX +.nf # # ncurses5 (and before) did not use a magic number, # making screen dumps "data". @@ -94,6 +95,7 @@ This is the pattern submitted to the maintainers of the \fBfile\fP program: # ncurses6 (2015) uses this format, ignoring byte-order 0 string \e210\e210\e210\e210ncurses ncurses6 screen image # +.fi .EE .RE .RE @@ -135,7 +137,7 @@ There is no standard format for screen dumps. A brief survey of the existing implementations follows. .SS "X/Open Curses" -X/Open Curses, Issue 7 specifies little. +X/Open Curses Issue\ 7 specifies little. It says (boldface emphasis added) .RS 3 @@ -173,12 +175,14 @@ has the following definitions. .PP .RS 4 .EX +.nf /* terminfo magic number */ #define MAGNUM 0432 /* curses screen dump magic number */ #define SVR2_DUMP_MAGIC_NUMBER 0433 #define SVR3_DUMP_MAGIC_NUMBER 0434 +.fi .EE .RE .PP @@ -193,8 +197,10 @@ use a magic number that would correspond to the following. .PP .RS 4 .EX +.nf /* curses screen dump magic number */ #define SVR4_DUMP_MAGIC_NUMBER 0435 +.fi .EE .RE .PP @@ -315,6 +321,7 @@ Given a simple program which writes text to the screen .PP .RS 4 .EX +.nf #include <curses.h> int @@ -339,6 +346,7 @@ main(void) endwin(); return 0; } +.fi .EE .RE .PP @@ -346,6 +354,7 @@ When run using ncurses6, the output looks like this: .PP .RS 4 .EX +.nf \e210\e210\e210\e210ncurses 6.0.20170415 _cury=5 _curx=11 @@ -368,6 +377,7 @@ rows: 8:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es 9:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es 10:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es +.fi .EE .RE .PP @@ -391,6 +401,7 @@ Running the same program with Solaris \fIxpg4\fP curses gives this dump: .PP .RS 4 .EX +.nf MAX=10,20 BEG=0,0 SCROLL=0,10 @@ -424,6 +435,7 @@ BG=0,0, 9,0,0,1, 9,19,0,0, CUR=11,5 +.fi .EE .RE .PP @@ -439,6 +451,7 @@ Here is the corresponding dump (using \*(``od \-t x1\*(''): .PP .RS 4 .EX +.nf 0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00 0000020 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 0000040 00 00 b8 1a 06 08 cc 1a 06 08 00 00 09 00 10 00 @@ -461,6 +474,7 @@ Here is the corresponding dump (using \*(``od \-t x1\*(''): 0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * 0002371 +.fi .EE .RE .SH AUTHORS diff --git a/contrib/ncurses/man/tabs.1 b/contrib/ncurses/man/tabs.1 index 059bc1ec66fc..8ad8c6125763 100644 --- a/contrib/ncurses/man/tabs.1 +++ b/contrib/ncurses/man/tabs.1 @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2008-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: tabs.1,v 1.59 2024/04/20 19:08:15 tom Exp $ -.TH @TABS@ 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: tabs.1,v 1.74 2025/08/16 19:11:47 tom Exp $ +.TH @TABS@ 1 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -78,7 +78,7 @@ you should either reset tab-stops to the standard interval .PP .RS 4 .EX -tabs \-8 +@TABS@ \-8 .EE .RE .PP @@ -128,8 +128,10 @@ They are separated by a comma or a blank, for example, .PP .RS 4 .EX -tabs 1,6,11,16,21 -tabs 1 6 11 16 21 +.nf +@TABS@ 1,6,11,16,21 +@TABS@ 1 6 11 16 21 +.fi .EE .RE .PP @@ -139,13 +141,13 @@ e.g., .PP .RS 4 .EX -tabs 1,+5,+5,+5,+5 +@TABS@ 1,+5,+5,+5,+5 .EE .RE .PP which is equivalent to the 1,6,11,16,21 example. -.SS "Predefined Tab Stops" -POSIX defines several predefined lists of tab stops. +.SS "Standard Tab Stops" +POSIX defines several lists of tab stops. .TP 5 .B \-a Assembler, IBM S/370, first format @@ -229,10 +231,10 @@ When setting or resetting the left margin, .I @DATADIR@/tabset tab stop initialization database .SH PORTABILITY -IEEE Std 1003.1/The Open Group Base Specifications Issue 7 +IEEE Std 1003.1/The Open Group Base Specifications Issue\ 7 (POSIX.1-2008) describes a -.B tabs +.I tabs utility. However, .bP @@ -247,8 +249,10 @@ or .RB \%( smglp ) capabilities needed to support the feature. .bP -There is no counterpart in X/Open Curses Issue 7 for this utility, -unlike \fB@TPUT@\fP(1). +Unlike +.IR tput , +.I tabs +has no specification in X/Open Curses Issue\ 7. .PP The .B \-d @@ -259,7 +263,7 @@ The extensions not provided by other implementations. .SH HISTORY A -.B tabs +.I tabs utility appeared in PWB/Unix 1.0 (1977). .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=PWB1/sys/source/s2/\ .\" tabs.c @@ -270,12 +274,12 @@ and in 3BSD .\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/\ .\" tabs.c (later the same year); -it supported a \*(``\-n\*('' option to set the first tab stop at the +it supported an option \*(``\-n\*('' to set the first tab stop at the left margin. That option is not specified by POSIX. .PP The PWB/Unix -.B tabs +.I tabs utility returned in System III (1980), and used built-in tables to support a half-dozen hardcopy terminal (printer) types. @@ -289,9 +293,9 @@ added support for the terminal database, but retained the tables to support the printers. By this time, System\ V -.B tput +.I tput had incorporated the tab stop initialization feature of BSD's -.B tset +.I tset from 1982, but employed the .I \%term\%info @@ -299,57 +303,58 @@ database to do so. .PP The .B +m -option was documented in the POSIX Base Specifications Issue 5 +option was documented in the POSIX Base Specifications Issue\ 5 (Unix98, 1997), -then omitted in Issue 6 +then omitted in Issue\ 6 (Unix03, 2004) without express motivation, though an introductory comment \*(``and optionally adjusts the margin\*('' remains, overlooked in the removal. The -.B tabs +.I tabs utility documented in Issues 6 and later has no mechanism for setting margins. The .B +m option in -.I \%ncurses -\fB\%@TABS@\fP differs from the SVr4 feature by using terminal -capabilities rather than built-in tables. +.IR \%ncurses 's +implementation +differs from the SVr4 feature by using terminal capabilities +rather than built-in tables. .PP POSIX documents no limit on the number of tab stops. Other implementations impose one; the limit is 20 in PWB/Unix's -.B tabs +.I tabs utility. While some terminals may not accept an arbitrary number of tab stops, .I \%ncurses -\fB\%@TABS@\fP attempts to set tab stops up to the right margin if the -list thereof is sufficiently long. +attempts to set tab stops up to the right margin +if the list thereof is sufficiently long. .PP -The \*(``Rationale\*('' section of the Issue 6 -.B tabs +The \*(``Rationale\*('' section of the Issue\ 6 +.I tabs reference page .\" https://pubs.opengroup.org/onlinepubs/009604499/utilities/tabs.html details how the committee considered redesigning the -.B tabs +.I tabs and -.B tput +.I tput utilities, without settling on an improved solution. It claims that .PP .RS 4 -\*(``no known historical version of +no known historical version of .I tabs -supports the capability of setting arbitrary tab stops.\*('' +supports the capability of setting arbitrary tab stops. .RE .PP The feature described in subsection \*(``Explicit Lists\*('' above was implemented in PWB/Unix, .\" see URL above -and permitted the setting of abitrary tab stops nevertheless. +and permitted the setting of arbitrary tab stops nevertheless. .SH SEE ALSO \fB\%@INFOCMP@\fP(1M), \fB\%@TSET@\fP(1), diff --git a/contrib/ncurses/man/term.5 b/contrib/ncurses/man/term.5 index cec231f551a3..fa15453c04a8 100644 --- a/contrib/ncurses/man/term.5 +++ b/contrib/ncurses/man/term.5 @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: term.5,v 1.77 2024/04/20 21:24:19 tom Exp $ -.TH term 5 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" +.\" $Id: term.5,v 1.85 2025/08/16 19:11:47 tom Exp $ +.TH term 5 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -55,69 +55,102 @@ .el .IP \(bu 2 .. . -.ds d @TERMINFO@ .SH NAME term \- -compiled \fIterminfo\fR terminal description -.SH SYNOPSIS -.B term +compiled \fI\%term\%info\fP terminal description +.\"SH SYNOPSIS .SH DESCRIPTION +\fB\%@TIC@\fP(1) compiles a +.I \%term\%info +terminal type description, +and \fB\%setupterm\fP(3X) reads it. +A compiled description may be stored in a file or in a database of, +potentially, +many such descriptions. +Further, +a compiled description may be in one of two formats: +one similar to that used by System\ V, +and a newer, +extensible format employed exclusively by +.IR \%ncurses . .SS "Storage Location" -Compiled terminfo descriptions are placed under the directory \fB\*d\fP. -Two configurations are supported -(when building the \fI\%ncurses\fP libraries): +Compiled +.I \%term\%info descriptions are placed +under the directory +.IR \%@TERMINFO@ . +One of two configurations is selected +when building the +.I \%ncurses +libraries. .TP 5 .B directory tree A two-level scheme is used to avoid a linear search -of a huge Unix system directory: \fB\*d/c/name\fP where +of a huge Unix system directory: +.IR \%@TERMINFO@/ c / name +where .I name -is the name of the terminal, and +is the name of the terminal, +and .I c is the first character of .IR name . Thus, -.I act4 -can be found in the file \fB\*d/a/act4\fP. +the compiled description of terminal type \*(``act4\*('' +is found in the file +.IR \%@TERMINFO@/a/act4 . Synonyms for the same terminal are implemented by multiple links to the same compiled file. .TP 5 .B hashed database -Using Berkeley database, two types of records are stored: -the terminfo data in the same format as stored in a directory tree with -the terminfo's primary name as a key, +Using the Berkeley database API, +two types of records are stored: +the +.I \%term\%info +data in the same format as that stored in a directory tree with +the terminal's primary type name as a key, and records containing only aliases pointing to the primary name. .IP If built to write hashed databases, -\fI\%ncurses\fP can still read terminfo databases organized as a +.I \%ncurses +can still read +.I \%term\%info +databases organized as a directory tree, but cannot write entries into the directory tree. -It can write (or rewrite) entries in the hashed database. +It can write +(or rewrite) +entries in the hashed database. .IP -\fI\%ncurses\fP distinguishes the two cases in the \fI\%TERMINFO\fP and -\fI\%TERMINFO_DIRS\fP environment variable by assuming a directory tree -for entries that correspond to an existing directory, -and hashed database otherwise. +.I \%ncurses +distinguishes the two cases in the +.I \%TERMINFO +and +.I \%TERMINFO_DIRS +environment variable by assuming a directory tree for entries that +correspond to an existing directory, +and a hashed database otherwise. .SS "Legacy Storage Format" The format has been chosen so that it will be the same on all hardware. -An 8 or more bit byte is assumed, but no assumptions about byte ordering +A byte of at least eight bits' width is assumed, +but no assumptions about bit ordering or sign extension are made. .PP -The compiled file is created with the \fB@TIC@\fP program, -and read by the routine \fBsetupterm\fP(3X). The file is divided into six parts: .RS 5 -.TP 3 -a) \fIheader\fP, -.TP 3 -b) \fIterminal names\fP, -.TP 3 -c) \fIBoolean flags\fP, -.TP 3 -d) \fInumbers\fP, -.TP 3 -e) \fIstrings\fP, and -.TP 3 -f) \fIstring table\fP. +.IP (a) 4 +.IR header , +.IP (b) +.IR "terminal names" , +.IP (c) +.IR "Boolean flags" , +.IP (d) +.IR numbers , +.IP (e) +.IR strings , +and +.IP (f) +a +.IR "string table" . .RE .PP The \fIheader\fP section begins the file. @@ -126,54 +159,64 @@ described below. These integers are .RS 5 .TP 5 -(1) the \fImagic number\fP (octal 0432); +(1) the \fImagic number\fP +(octal 0432); .TP 5 -(2) the size, in bytes, of the \fIterminal names\fP section; +(2) the size, +in bytes, +of the \fIterminal names\fP section; .TP 5 (3) the number of bytes in the \fIBoolean flags\fP section; .TP 5 (4) the number of short integers in the \fInumbers\fP section; .TP 5 -(5) the number of offsets (short integers) in the \fIstrings\fP section; +(5) the number of offsets +(short integers) +in the \fIstrings\fP section; .TP 5 -(6) the size, in bytes, of the \fIstring table\fP. +(6) the size, +in bytes, +of the \fIstring table\fP. .RE .PP The capabilities in the \fIBoolean flags\fP, -\fInumbers\fP, and +\fInumbers\fP, +and \fIstrings\fP -sections are in the same order as the file <term.h>. +sections are in the same order as in the header file +.IR term.h . .PP -Short integers are signed, in the range \-32768 to 32767. -They are stored as two 8-bit bytes. -The first byte contains the least significant 8 bits of the value, -and the second byte contains the most significant 8 bits. -(Thus, the value represented is 256*second+first.) -This format corresponds to the hardware of the \s-1VAX\s+1 -and \s-1PDP\s+1-11 (that is, little-endian machines). -Machines where this does not correspond to the hardware must read the -integers as two bytes and compute the little-endian value. +Short integers are signed, +in the range \-32768 to 32767, +and stored in little-endian format. .PP Numbers in a terminal description, whether they are entries in the \fInumbers\fP or \fIstrings\fP table, are positive integers. Boolean flags are treated as positive one-byte integers. -In each case, those positive integers represent a terminal capability. -The terminal compiler @TIC@ uses negative integers to handle the cases where -a capability is not available: +In each case, +those positive integers represent a terminal capability. +The terminal compiler +.I \%@TIC@ +uses negative integers to handle the cases where a capability is not +available: .bP If a capability is absent from this terminal, -@TIC@ stores a \-1 in the corresponding table. +.I \%@TIC@ +stores a \-1 in the corresponding table. .IP -The integer value \-1 is represented by two bytes 0377, 0377. +The integer value \-1 is represented by two bytes 0377, +0377. .br Absent Boolean values are represented by the byte 0 (false). .bP If a capability has been canceled from this terminal, -@TIC@ stores a \-2 in the corresponding table. +.I \%@TIC@ +stores a \-2 in the corresponding table. .IP -The integer value \-2 is represented by two bytes 0377, 0376. +The integer value \-2 is represented by two bytes 0377, +0376. .br The Boolean value \-2 is represented by the byte 0376. .br @@ -181,18 +224,22 @@ The Boolean value \-2 is represented by the byte 0376. Other negative values are illegal. .PP The \fIterminal names\fP section comes after the \fIheader\fP. -It contains the first line of the terminfo description, +It contains the first line of the +.I \%term\%info +description, listing the various names for the terminal, separated by the \*(``|\*('' character. The \fIterminal names\fP section is terminated with an \s-1ASCII NUL\s+1 character. .PP The \fIBoolean flags\fP section has one byte for each flag. -Boolean capabilities are either 1 or 0 (true or false) +Boolean capabilities are either 1 or 0 +(true or false) according to whether the terminal supports the given capability or not. .PP Between the \fIBoolean flags\fP section and the \fInumber\fP section, -a null byte will be inserted, if necessary, +a null byte will be inserted, +if necessary, to ensure that the \fInumber\fP section begins on an even byte This is a relic of the PDP\-11's word-addressed architecture, originally designed to avoid traps induced @@ -212,27 +259,42 @@ It contains all of the values of string capabilities referenced in the \fIstrings\fP section. Each string is null-terminated. Special characters in \*^X or \ec notation are stored in their -interpreted form, not the printing representation. -Padding information $<nn> and parameter information %x are -stored intact in uninterpreted form. +interpreted form, +not the printing representation. +Padding information +.BI $< nn > +and parameter information +.B %x +are stored intact in uninterpreted form. .SS "Extended Storage Format" -The previous section describes the conventional terminfo binary format. -With some minor variations of the offsets (see PORTABILITY), +The previous section describes the conventional +.I \%term\%info +binary format. +With some minor variations of the offsets +(see PORTABILITY), the same binary format is used in all modern Unix systems. -Each system uses a predefined set of Boolean, number or string capabilities. +Each system uses a standard set of Boolean, +numeric, +or string capabilities. .PP -The \fI\%ncurses\fP libraries and applications support -extended terminfo binary format, -allowing users to define capabilities which are loaded at runtime. -This -extension is made possible by using the fact that the other implementations -stop reading the terminfo data when they have reached the end of the size given -in the header. -\fI\%ncurses\fP checks the size, -and if it exceeds that due to the predefined data, +The +.I \%ncurses +libraries and applications support extended +.I \%term\%info +binary format, +allowing users to define capabilities that are loaded at runtime. +This extension is made possible by using the fact that the other +implementations stop reading the +.I \%term\%info +data when they reach the end of the size given in the header. +.I \%ncurses +checks the size, +and if it exceeds that specified in the header, continues to parse according to its own scheme. .PP -First, it reads the extended header (5 short integers): +First, +it reads the extended header +(5 short integers): .RS 5 .TP 5 (1) @@ -256,45 +318,62 @@ include the extended capability \fInames\fP as well as extended capability \fIvalues\fP. .PP Using the counts and sizes, -\fI\%ncurses\fP allocates arrays and reads data for the extended -capabilities in the same order as the header information. +.I \%ncurses +allocates arrays and reads data for the extended capabilities in the +same order as the header information. .PP The extended string table contains values for string capabilities. -After the end of these values, it contains the names for each of -the extended capabilities in order, e.g., Booleans, then numbers and -finally strings. +After the end of these values, +it contains the names for each of +the extended capabilities in order: +Boolean, +numeric, +and string. .PP By storing terminal descriptions in this way, -\fI\%ncurses\fP is able to provide a database useful with legacy -applications, -as well as providing data for applications which need more than the -predefined capabilities. -See \fBuser_caps\fP(5) for an overview -of the way \fI\%ncurses\fP uses this extended information. +.I \%ncurses +is able to provide a database useful with legacy applications, +as well as providing data for applications that require more information +about a terminal type than was anticipated +by X/Open Curses. +See \fB\%user_caps\fP(5) for an overview of the way +.I \%ncurses +uses this extended information. .PP -Applications which manipulate terminal data can use the definitions -described in \fBterm_variables\fP(3X) which associate the long capability -names with members of a \fBTERMTYPE\fP structure. +Applications that manipulate terminal data can use the definitions +described in \fB\%term_variables\fP(3X) associating the long capability +names with members of a +.I \%TERMTYPE +structure. . .SS "Extended Number Format" -On occasion, 16-bit signed integers are not large enough. -With \fI\%ncurses\fP 6.1, -a new format was introduced by making a few changes -to the legacy format: +On occasion, +16-bit signed integers are not large enough. +.I \%ncurses +6.1 introduced a new format +by making a few changes to the legacy format: .bP -a different magic number (octal 01036) +a different magic number +(octal 01036) .bP changing the type for the \fInumber\fP array from signed 16-bit integers to signed 32-bit integers. .PP -To maintain compatibility, the library presents the same data structures -to direct users of the \fBTERMTYPE\fP structure as in previous formats. -However, that cannot provide callers with the extended numbers. -The library uses a similar but hidden data structure \fBTERMTYPE2\fP -to provide data for the terminfo functions. +To maintain compatibility, +the library presents the same data structures +to direct users of the +.I \%TERMTYPE +structure as in previous formats. +However, +that cannot provide callers with the extended numbers. +The library uses a similar but hidden data structure +.I \%TERMTYPE2 +to provide data for the +.I \%term\%info +functions. .SH FILES .TP -.I \*d +.I @TERMINFO@ compiled terminal description database .SH PORTABILITY .SS setupterm @@ -313,69 +392,101 @@ The routine .B setupterm must be prepared for both possibilities \- this is why the numbers and sizes are included. -Also, new capabilities must always be added at the end of the lists -of Boolean, number, and string capabilities. +Also, +new capabilities must always be added at the end of the lists +of Boolean, +number, +and string capabilities. .SS "Binary Format" -X/Open Curses does not specify a format for the terminfo database. -System V curses used a directory-tree of binary files, +X/Open Curses does not specify a format for the +.I \%term\%info +database. +System\ V +.I curses +used a directory-tree of binary files, one per terminal description. .PP -Despite the consistent use of little-endian for numbers and the otherwise -self-describing format, it is not wise to count on portability of binary -terminfo entries between commercial Unix versions. -The problem is that there -are at least three versions of terminfo (under HP\-UX, AIX, and OSF/1) which -diverged from System V terminfo after SVr1, and have added extension -capabilities to the string table that (in the binary format) collide with -System V and X/Open Curses extensions. -See \fBterminfo\fP(5) for detailed -discussion of terminfo source compatibility issues. +Despite the consistent use of little-endian numbers and the otherwise +self-describing format, +it is not wise to count on portability of binary +.I \%term\%info +entries between commercial Unix versions. +The problem is that there are at least three versions of +.I \%term\%info +(under HP\-UX, +AIX, +and OSF/1) +each of which diverged from System\ V +.I \%term\%info +after SVr1, +and added extension capabilities to the string table that +(in the binary format) +collide with System\ V and X/Open Curses extensions. +See \fB\%terminfo\fP(5) for detailed +discussion of +.I \%term\%info +source compatibility issues. .PP This implementation is by default compatible with the binary -terminfo format used by Solaris curses, +.I \%term\%info +format used by Solaris +.IR curses , except in a few less-used details where it was found that the latter did not match X/Open Curses. The format used by the other Unix versions -can be matched by building \fI\%ncurses\fP +can be matched by building +.I \%ncurses with different configuration options. .SS "Magic Codes" -The magic number in a binary terminfo file is the first 16-bits (two bytes). -Besides making it more reliable for the library to check that a file -is terminfo, -utilities such as \fBfile\fP(1) also use that to tell what the file-format is. -System V defined more than one magic number, -with 0433, 0435 as screen-dumps (see \fBscr_dump\fP(5)). +The magic number in a binary +.I \%term\%info +file is the first 16 bits +(two bytes). +Besides making it more reliable for the library to check that a file is +.IR \%term\%info , +utilities such as \fIfile\fP(1) also use that to tell what the +file-format is. +System\ V defined more than one magic number, +with 0433, +0435 as screen-dumps +(see \fB\%scr_dump\fP(5)). This implementation uses 01036 as a continuation of that sequence, but with a different high-order byte to avoid confusion. .SS "The \fITERMTYPE\fP Structure" -Direct access to the \fBTERMTYPE\fP structure is provided for legacy -applications. -Portable applications should use the \fBtigetflag\fP and related functions -described in \fBcurs_terminfo\fP(3X) for reading terminal capabilities. +Direct access to the +.I \%TERMTYPE +structure is provided for legacy applications. +Portable applications should use \fB\%tigetflag\fP(3X) and related +functions to read terminal capabilities. .SS "Mixed-case Terminal Names" A small number of terminal descriptions use uppercase characters in their names. -If the underlying filesystem ignores the difference between +If the underlying file system ignores the difference between uppercase and lowercase, -\fI\%ncurses\fP represents the \*(``first character\*('' -of the terminal name used as -the intermediate level of a directory tree in (two-character) hexadecimal form. +.I \%ncurses +represents the \*(``first character\*('' of the terminal name used as +the intermediate level of a directory tree in (two-character) +hexadecimal form. .SS Limits -\fI\%ncurses\fP stores compiled terminal descriptions -in three related formats, -described in the sections +.I \%ncurses +stores compiled terminal descriptions in three related formats, +described in the subsections .bP -\fBLEGACY STORAGE FORMAT\fP, and +.BR "Legacy Storage Format" , +and .bP -\fBEXTENDED STORAGE FORMAT\fP, and +.BR "Extended Storage Format" , +and .bP -\fBEXTENDED NUMBER FORMAT\fP. +.BR "Extended Number Format" . .PP The legacy storage format and the extended number format differ by -the types of numeric capability which they can store -(i.e., 16-bit versus 32-bit integers). -The extended storage format introduced by \fI\%ncurses\fP 5.0 adds data -to either of these formats. +the types of numeric capability that they can store +(for example, +16- versus 32-bit integers). +The extended storage format introduced by +.I \%ncurses +5.0 adds data to either of these formats. .PP Some limitations apply: .bP @@ -390,19 +501,25 @@ Compiled entries are limited to 32768 bytes because offsets into the The legacy format could have supported 32768-byte entries, but was limited to a virtual memory page's 4096 bytes. .SH EXAMPLES -As an example, here is a description for the Lear-Siegler -ADM\-3, a popular though rather stupid early terminal: +Here is a +.I \%term\%info +description of the Lear-Siegler ADM-3, +a popular though rather stupid early terminal. .PP .EX +.nf adm3a|lsi adm3a, am, cols#80, lines#24, bel=\*^G, clear=\e032$<1>, cr=\*^M, cub1=\*^H, cud1=\*^J, cuf1=\*^L, cup=\eE=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\*^K, home=\*^\*^, ind=\*^J, +.fi .EE .PP -and a hexadecimal dump of the compiled terminal description: +A hexadecimal dump of its compiled terminal description +(in legacy format) +follows. .PP .if t .in +4n .ft \*(CW @@ -436,15 +553,27 @@ Lp-1. .SH AUTHORS Thomas E. Dickey .br -extended terminfo format for \fI\%ncurses\fP 5.0 +extended +.I \%term\%info +format for +.I \%ncurses +5.0 .br -hashed database support for \fI\%ncurses\fP 5.6 +hashed database support for +.I \%ncurses +5.6 .br -extended number support for \fI\%ncurses\fP 6.1 +extended number support for +.I \%ncurses +6.1 .sp Eric S. Raymond .br -documented legacy terminfo format, e.g., from \fIpcurses\fP. +documented legacy +.I \%term\%info +format +(that used by +.IR \%pcurses ). .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_terminfo\fP(3X), diff --git a/contrib/ncurses/man/term.7 b/contrib/ncurses/man/term.7 index 84d100d840ca..80cc74c73485 100644 --- a/contrib/ncurses/man/term.7 +++ b/contrib/ncurses/man/term.7 @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2011,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: term.7,v 1.48 2024/03/16 15:35:01 tom Exp $ -.TH term 7 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" Miscellaneous +.\" $Id: term.7,v 1.52 2025/08/16 20:08:21 tom Exp $ +.TH term 7 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" Miscellaneous .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -40,7 +40,6 @@ .el .ds '' "" .\} . -.ds d @TERMINFO@ .SH NAME term \- conventions for naming terminal types @@ -83,7 +82,7 @@ a custom entry incorporating options which you wish to override the system default type for your line. .PP Terminal type descriptions are stored as files of capability data underneath -\*d. +.IR \%@TERMINFO@ "." To browse a list of all terminal names recognized by the system, do .sp @TOE@ | more @@ -97,8 +96,9 @@ Invoke it as follows: @INFOCMP@ \fIentry_name\fP .sp where \fIentry_name\fP is the name of the type you wish to examine (and the -name of its capability file the subdirectory of \*d named for its first -letter). +name of its capability file the subdirectory of +.I \%@TERMINFO@ +named for its first letter). This command dumps a capability file in the text format described by \fBterminfo\fP(5). .PP @@ -221,7 +221,7 @@ Such programs should fall back on the \fITERM\fP environment variable when no \-T option is specified. .SH FILES .TP -.I \*d +.I @TERMINFO@ compiled terminal description database .TP .I /etc/inittab diff --git a/contrib/ncurses/man/term_variables.3x b/contrib/ncurses/man/term_variables.3x index 6aee63f487ed..eb244f7a4887 100644 --- a/contrib/ncurses/man/term_variables.3x +++ b/contrib/ncurses/man/term_variables.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 2010-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: term_variables.3x,v 1.36 2024/03/16 15:35:01 tom Exp $ -.TH term_variables 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: term_variables.3x,v 1.44 2025/11/12 01:27:41 tom Exp $ +.TH term_variables 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -81,99 +81,193 @@ \fBNCURSES_CONST char * const strnames[]; .fi .SH DESCRIPTION -This page summarizes variables provided by the \fBcurses\fP library's -low-level terminfo interface. -A more complete description is given in the \fBcurs_terminfo\fP(3X) manual page. +This page summarizes variables provided by the +.I curses +library's lower-level +.I \%term\%info +interface. +Locate a more complete description in the \fBcurs_terminfo\fP(3X) manual +page. .PP -Depending on the configuration, these may be actual variables, -or macros (see \fBcurs_threads\fP(3X)) -which provide read-only access to \fIcurses\fP's state. -In either case, applications should treat them as read-only to avoid -confusing the library. +Depending on +.IR \%ncurses 's +build-time configuration, +these may be actual variables, +or macros +(see \fBcurs_threads\fP(3X)) +that provide read-only access to +.IR curses 's +state. +In either case, +applications should treat them as read-only to avoid confusing the +library. .SS "Alternate Character Set Mapping" -After initializing the curses or terminfo interfaces, -the \fBacs_map\fP array holds information used to translate cells -with the \fBA_ALTCHARSET\fP video attribute into line-drawing characters. +After initializing the +.I curses +or +.I \%term\%info +interfaces, +the +.B acs_map +array holds information used to translate cells with the +.B \%A_ALTCHARSET +video attribute into line-drawing characters. .PP The encoding of the information in this array has changed periodically. -Application developers need only know that it is used for the \*(``ACS_\*('' -constants in <curses.h>. +Application developers need only know that it is used for the +\*(``ACS_\*('' constants in +.IR \%curses.h "." .PP -The comparable data for the wide-character library is a private variable. +The comparable data for the wide-character library are not exposed as +symbols in the API. .SS "Current Terminal Data" -After initializing the curses or terminfo interfaces, -the \fBcur_term\fP contains data describing the current terminal. -This variable is also set as a side-effect of \fBset_term\fP(3X) -and \fBdelscreen\fP(3X). +After initializing the +.I curses +or +.I \%term\%info +interfaces, +.B cur_term +contains data describing the current terminal. +It is also updated as a side effect of \fBset_term\fP(3X) and +\fBdelscreen\fP(3X). .PP -It is possible to save a value of \fBcur_term\fP for subsequent -use as a parameter to \fBset_term\fP, for switching between screens. -Alternatively, one can save the return value from \fBnewterm\fP -or \fBsetupterm\fP(3X) to reuse in \fBset_term\fP. +It is possible to save a value of +.B cur_term +for subsequent use as a parameter to \fBset_term\fP(3X) +for switching between screens. +Alternatively, +one can save the return value from \fBnewterm\fP(3X) or +\fBsetupterm\fP(3X) to reuse in \fBset_term\fP(3X). .SS "\fIterminfo\fP Lookup Tables" The \fB@TIC@\fP(1) and \fB@INFOCMP@\fP(1) programs use lookup tables for -the long and short names of terminfo capabilities, -as well as the corresponding names for termcap capabilities. +the long and short names of +.I \%term\%info +capabilities, +as well as the corresponding names for +.I termcap +capabilities. These are available to other applications, -although the hash-tables used by -the terminfo and termcap functions are not available. +though the hash tables used by the +.I \%term\%info +and +.I termcap +functions are not. .PP -The long terminfo capability names use a \*(``f\*('' (eff) in their names: -\fBboolfnames\fP, -\fBnumfnames\fP, and -\fBstrfnames\fP. -.PP -These are the short names for terminfo capabilities: -\fBboolnames\fP, -\fBnumnames\fP, and -\fBstrnames\fP. -.PP -These are the corresponding names used for termcap descriptions: -\fBboolcodes\fP, -\fBnumcodes\fP, and -\fBstrcodes\fP. +.I \%term\%info +stores capability names in arrays with an \*(``f\*('' (eff) in their +names: +.BR \%boolfnames "," +.BR \%numfnames "," +and +.BR \%strfnames "." +It stores the briefer capability codes in arrays without the +\*(``f\*('': +.BR \%boolnames "," +.BR \%numnames "," +and +.BR \%strnames "." +The corresponding +.I termcap +capability codes are stored in +.BR \%boolcodes "," +.BR \%numcodes "," +and +.BR \%strcodes "." +\fB\%terminfo\fP(5) catalogs these. .\" .SS "Terminal Type" A terminal description begins with one or more terminal names separated by \*(``|\*('' (vertical bars). -On initialization of the curses or terminfo interfaces, -\fBsetupterm\fP(3X) copies the terminal names to the array \fBttytype\fP. +On initialization of the +.I curses +or +.I \%term\%info +interfaces, +\fBsetupterm\fP(3X) copies the terminal name to the array +.BR ttytype "." .\" .SS "\fIterminfo\fP Names" -In addition to the variables, \fB<term.h>\fP also defines a symbol for each -terminfo capability \fIlong name\fP. -These are in terms of the symbol \fBCUR\fP, +In addition to the variables, +.I term.h +also defines a symbol for each +.I \%term\%info +capability name. +These are in terms of the symbol +.BR CUR "," which is defined .PP +.RS .EX #define CUR ((TERMTYPE *)(cur_term))\-> .EE +.RE .PP -These symbols provide a faster method of accessing terminfo capabilities -than using \fBtigetstr\fP(3X), etc. +These symbols provide a faster method of accessing +.I \%term\%info +capabilities than using, +for example, +\fBtigetstr\fP(3X). .PP -The actual definition of \fBCUR\fP depends upon the implementation, -but each terminfo library provides these long names defined to point -into the current terminal description loaded into memory. +The definition of +.B CUR +is implementation-dependent, +but each +.I \%term\%info +library defines these names to point +into the in-memory description of the current terminal. +For example, +in +.IR \%ncurses "," +the expressions +.B tigetstr("key_dc") +and +\*(``\c\" `` string not reliable in a macro call on DWB/Heirloom nroffs +.B "CUR Strings[59]\c" +\*('' \" '' string not reliable in a macro call on DWB/Heirloom nroffs +are equivalent. .\" -.SH NOTES -The low-level terminfo interface is initialized using -\fB\%setupterm\fP(3X). -The upper-level curses interface uses the low-level terminfo interface, -internally. +.SS "\fIterminfo\fP and \fIcurses" +\fB\%setupterm\fP(3X) initializes the lower-level +.I \%term\%info +interface. +The higher-level +.I curses +interface uses the +.I \%term\%info +interface internally; +the symbol +.B SP +bridges the +.I curses +.I SCREEN +type with the +.I \%term\%info +.I TERMINAL +type. .\" .SH PORTABILITY -X/Open Curses does not describe any of these except for \fBcur_term\fP. -(The inclusion of \fBcur_term\fP appears to be an oversight, -since other comparable low-level information is omitted by X/Open). +X/Open Curses does not describe any of these symbols except for +.IR \%cur_term "." +(The inclusion of +.I \%cur_term +appears to be an oversight, +since other comparable low-level information is omitted by X/Open.) .PP Other implementations may have comparable variables. Some implementations provide the variables in their libraries, but omit them from the header files. .PP -All implementations which provide terminfo interfaces add definitions -as described in the \fBTerminfo Names\fP section. -Most, but not all, base the definition upon the \fBcur_term\fP variable. +All implementations that provide +.I \%term\%info +interfaces add definitions +as described in the +.RI \*(`` terminfo +Names\*('' section above. +Most, +but not all, +base the definition upon the +.I \%cur_term +variable. .SH SEE ALSO \fB\%curses\fP(3X), \fB\%curs_terminfo\fP(3X), diff --git a/contrib/ncurses/man/terminfo.head b/contrib/ncurses/man/terminfo.head index 717f849e25fb..90b1af604135 100644 --- a/contrib/ncurses/man/terminfo.head +++ b/contrib/ncurses/man/terminfo.head @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: terminfo.head,v 1.65 2024/04/20 21:14:00 tom Exp $ -.TH terminfo 5 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" +.\" $Id: terminfo.head,v 1.69 2025/08/16 21:50:23 tom Exp $ +.TH terminfo 5 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -51,12 +51,11 @@ .el .IP \(bu 2 .. . -.ds d @TERMINFO@ .SH NAME \fB\%terminfo\fP \- terminal capability database .SH SYNOPSIS -\*d/*/* +@TERMINFO@/*/* .SH DESCRIPTION .I Terminfo is a database describing terminals, @@ -222,6 +221,6 @@ user preferences. An entry included via \fBuse\fP can contain canceled capabilities, which have the same effect as if those cancels were inline in the using terminal entry. -.SS "Predefined Capabilities" +.SS "Standard Capabilities" .\" Head of terminfo man page ends here .ps -1 diff --git a/contrib/ncurses/man/terminfo.tail b/contrib/ncurses/man/terminfo.tail index 4d6daa38b692..f98acc73816f 100644 --- a/contrib/ncurses/man/terminfo.tail +++ b/contrib/ncurses/man/terminfo.tail @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,66 +27,118 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: terminfo.tail,v 1.148 2024/04/20 21:24:19 tom Exp $ +.\" $Id: terminfo.tail,v 1.163 2025/11/12 01:01:34 Branden.Robinson Exp $ .ps +1 .SS "User-Defined Capabilities" . -The preceding section listed the \fIpredefined\fP capabilities. -They deal with some special features for terminals no longer -(or possibly never) produced. -Occasionally there are special features of newer terminals which -are awkward or impossible to represent by reusing the predefined +The preceding section listed the +.I standard capabilities. +Some are esoteric, +supporting functionality that terminal emulators do not implement, +or may never have been realized in manufactured hardware. +Occasionally, +emulators have special features +that are awkward or impossible to represent +via standard capabilities. .PP -\fI\%ncurses\fP addresses this limitation by allowing user-defined -capabilities. -The \fB@TIC@\fP and \fB@INFOCMP@\fP programs provide -the \fB\-x\fP option for this purpose. -When \fB\-x\fP is set, -\fB@TIC@\fP treats unknown capabilities as user-defined. -That is, if \fB@TIC@\fP encounters a capability name -which it does not recognize, -it infers its type (Boolean, number or string) from the syntax +.I \%ncurses +addresses this limitation by allowing user-defined capabilities. +The +.B \%@TIC@ +and +.B \%@INFOCMP@ +programs provide an +.B \-x +option for this purpose. +When +.B \-x +is used, +.B \%@TIC@ +treats unknown capabilities as user-defined. +That is, +if +.B \%@TIC@ +encounters a capability name +that it does not recognize, +the program infers the capability's type +(Boolean, +numeric, +or +string) +from the syntax of the capability value and makes an extended table entry for that capability. -The \fBuse_extended_names\fP(3X) function makes this information +\fBuse_extended_names\fP(3X) makes this information conditionally available to applications. -The \fI\%ncurses\fP library provides the data leaving most of the -behavior to applications: +.I \%ncurses +library functions supply callers with capability data, +the interpretation of which is mostly up to the application. .bP -User-defined capability strings whose name begins -with \*(``k\*('' are treated as function keys. +.I \%ncurses +treats user-defined string capabilities +whose names begin with \*(``k\*('' +as function keys. .bP -The types (Boolean, number, string) determined by \fB@TIC@\fP -can be inferred by successful calls on \fBtigetflag\fP, etc. +Capability types +(Boolean, +numeric, +or +string) +determined by +.B \%@TIC@ +can be inferred by successful +\fB\%tigetflag\fP(3X), +\fB\%tigetnum\fP(3X), +and +\fB\%tigetstr\fP(3X) +calls. .bP If the capability name happens to be two characters, the capability is also available through the termcap interface. .PP -While termcap is said to be extensible because it does not use a predefined set -of capabilities, -in practice it has been limited to the capabilities defined by -terminfo implementations. +While +.I termcap +is said to be extensible because it mandates no capabilities, +in practice it has been limited to those defined by +.I \%term\%info +implementations. As a rule, -user-defined capabilities intended for use by termcap applications should -be limited to Booleans and numbers to avoid running past the 1023 byte -limit assumed by termcap implementations and their applications. -In particular, providing extended sets of function keys (past the 60 -numbered keys and the handful of special named keys) is best done using -the longer names available using terminfo. +employ only user-defined capabilities of Boolean and numeric type +with +.I termcap +applications to avoid overrunning the 1023 byte limit +assumed by +.I termcap +implementations and their applications. +Specifically, +support for extended sets of function keys +(past the 60 numbered keys and the handful of special named keys) +is better achieved with longer names available via +.IR \%term\%info "." .PP -The \fI\%ncurses\fP library uses a few of these user-defined -capabilities, +The +.I \%ncurses +library uses a few of these user-defined capabilities, as described in \fBuser_caps\fR(5). -Other user-defined capabilities (including function keys) are -described in the terminal database, in the section on -.I "NCURSES USER-DEFINABLE CAPABILITIES" +For other user-defined capabilities, +including function keys, +consult the source form of the terminal database, +.IR \%terminfo.src "," +under the heading \*(``NCURSES USER-DEFINABLE CAPABILITIES\*(''. . .SS "A Sample Entry" . -The following entry, describing an ANSI-standard terminal, is representative -of what a \fBterminfo\fP entry for a modern terminal typically looks like. +The following entry, describing an ANSI\ X3.64- +(or ECMA-48-) +-standard terminal +(henceforth \*(``ANSI-standard\*('' for brevity), +is representative +of what a +.I \%term\%info +entry for a modern terminal typically looks like. .PP .EX +.nf \s-2ansi|ansi/pc\-term compatible with color, am, mc5i, mir, msgr, colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64, @@ -117,6 +169,7 @@ of what a \fBterminfo\fP entry for a modern terminal typically looks like. sgr0=\eE[0;10m, smacs=\eE[11m, smpch=\eE[11m, smso=\eE[7m, smul=\eE[4m, tbc=\eE[3g, u6=\eE[%i%d;%dR, u7=\eE[6n, u8=\eE[?%[;0123456789]c, u9=\eE[c, vpa=\eE[%i%p1%dd, +.fi .EE .PP Entries may continue onto multiple lines by placing white space at @@ -186,7 +239,8 @@ respectively. X/Open Curses does not say what \*(``appropriate \fIx\fP\*('' might be. In practice, that is a printable ASCII graphic character. The special case \*(``\*^?\*('' is interpreted as DEL (127). -In all other cases, the character value is AND'd with 0x1f, +In all other cases, +the character value is logically \*(``and\*(''-ed with 0x1f, mapping to ASCII control codes in the range 0 through 31. .PP Other escapes include @@ -277,14 +331,14 @@ as a list of colon-separated pathnames of terminal databases to be searched. .IP An empty pathname (i.e., if the variable begins or ends with a colon, or contains adjacent colons) -is interpreted as the system location \fI\*d\fP. +is interpreted as the system location \fI@TERMINFO@\fP. .bP Finally, \fI\%ncurses\fP searches these compiled-in locations: .RS .bP a list of directories (@TERMINFO_DIRS@), and .bP -the system terminfo directory, \fI\*d\fP +the system terminfo directory, \fI@TERMINFO@\fP .RE .PP The \fBTERMINFO\fP variable can contain a terminal description instead @@ -348,7 +402,7 @@ and applies to storage scope terminals, such as \s-1TEKTRONIX\s+1 4010 series, as well as hard copy and APL terminals.) If there is a code to move the cursor to the left edge of the current -row, give this as +line, give this as .BR cr . (Normally this will be carriage return, control/M.) If there is a code to produce an audible signal (bell, beep, etc) @@ -412,7 +466,7 @@ The only local motion which is defined from the left edge is if .B bw is given, then a .B cub1 -from the left edge will move to the right edge of the previous row. +from the left edge will move to the right edge of the previous line. If .B bw is not given, the effect is undefined. @@ -448,11 +502,13 @@ Thus the model 33 teletype is described as while the Lear Siegler \s-1ADM-3\s0 is described as .PP .EX +.nf .\".in -2 \s-1adm3\||\|3\||\|lsi adm3, am, bel=\*^G, clear=\*^Z, cols#80, cr=\*^M, cub1=\*^H, cud1=\*^J, ind=\*^J, lines#24,\s+1 .\".in +2 +.fi .EE .SS "Parameterized Strings" Cursor addressing and other strings requiring parameters @@ -462,8 +518,8 @@ with \fIprintf\fP-like escapes such as \fI%x\fP in it. For example, to address the cursor, the .B cup capability is given, using two parameters: -the row and column to address to. -(Rows and columns are numbered from zero and refer to the +the line and column to address to. +(Lines and columns are numbered from zero and refer to the physical screen visible to the user, not to any unseen memory.) If the terminal has memory relative cursor addressing, that can be indicated by @@ -569,13 +625,15 @@ push strlen(pop) arithmetic (%m is \fImod\fP): \fIpush(pop() op pop())\fP .TP \fB%&\fP, \fB%|\fP, \fB%\*^\fP -bit operations (AND, OR and exclusive-OR): \fIpush(pop() op pop())\fP +bit operations +(\*(``and\*('', \*(``or\*('' and exclusive \*(``or\*(''): +\fIpush(pop() op pop())\fP .TP \fB%=\fP, \fB%>\fP, \fB%<\fP logical operations: \fIpush(pop() op pop())\fP .TP \fB%A\fP, \fB%O\fP -logical AND and OR operations (for conditionals) +logical \*(``and\*('' and \*(``or\*('' operations (for conditionals) .TP \fB%!\fP, \fB%\*~\fP unary operations (logical and bit complement): \fIpush(op pop())\fP @@ -608,17 +666,17 @@ That is, to get x\-5 one would use \*(``%gx%{5}%\-\*(''. \fB%P\fP and \fB%g\fP variables are persistent across escape-string evaluations. .PP -Consider the HP2645, which, to get to row 3 and column 12, needs +Consider the HP2645, which, to get to line 3 and column 12, needs to be sent \eE&a12c03Y padded for 6 milliseconds. -The order of the rows and columns is inverted here, -and the row and column are printed as two digits. +The order of the lines and columns is inverted here, +and the lines and column are printed as two digits. The corresponding terminal description is expressed thus: .RS cup=\eE&a%p2%dc%p1%dY$<6>, .RE .PP -The Microterm \s-1ACT-IV\s0 needs the current row and column sent -preceded by a \fB\*^T\fP, with the row and column simply encoded in binary, +The Microterm \s-1ACT-IV\s0 needs the current line and column sent +preceded by a \fB\*^T\fP, with the line and column simply encoded in binary, .RS cup=\*^T%p1%c%p2%c .RE @@ -632,10 +690,13 @@ This is necessary because it is not always safe to transmit \fB\en\fP tabs are never expanded, so \et is safe to send. This turns out to be essential for the Ann Arbor 4080.) .PP -A final example is the \s-1LSI ADM\s0-3a, which uses row and column -offset by a blank character, thus +A final example is the LSI ADM-3A, +which uses line and column offset by a space, +thus .RS +.EX cup=\eE=%p1%\*' \*'%+%c%p2%\*' \*'%+%c +.EE .RE .PP After sending \*(``\eE=\*('', this pushes the first parameter, pushes the @@ -656,7 +717,7 @@ to the top left corner of the screen, not of memory. (Thus, the \eEH sequence on HP terminals cannot be used for .BR home .) .PP -If the terminal has row or column absolute cursor addressing, +If the terminal has line or column absolute cursor addressing, these can be given as single parameter capabilities .B hpa (horizontal position absolute) @@ -713,7 +774,7 @@ the ability to set a top and/or bottom margin using the current line position, and .bP parameterized capabilities for setting the top, bottom, left, right margins -given the number of rows or columns. +given the number of lines or columns. .RE .PP In practice, the categorization into \*(``terminal\*('' and \*(``printer\*('' @@ -744,8 +805,8 @@ These are the margin-related capabilities: .PP .TS center; -lb lb -lb l . +Lb Lb +Lb L . Name Description _ smgl Set left margin at current column @@ -1008,7 +1069,7 @@ to delete a single character, with one parameter, .IR n , to delete -.IR n "characters," +.IR n " characters," and delete mode by giving \fBsmdc\fP and \fBrmdc\fP to enter and exit delete mode (any mode the terminal needs to be placed in for @@ -1088,8 +1149,8 @@ For example, the DEC vt220 supports most of the modes: .PP .TS center; -lb lb lb -l l l . +Lb Lb Lb +L L L . tparm Parameter Attribute Escape Sequence _ none none \eE[0m @@ -1123,8 +1184,8 @@ Writing out the above sequences, along with their dependencies yields .ne 11 .TS center; -lb lb lb -l l l . +Lb Lb Lb +L L L . Sequence When to Output terminfo Translation _ \eE[0 always \eE[0 @@ -1140,8 +1201,10 @@ m always m Putting this all together into the sgr sequence gives: .PP .EX +.nf sgr=\eE[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%; %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\e016%e\e017%;, +.fi .EE .PP Remember that if you specify sgr, you must also specify sgr0. @@ -1296,38 +1359,61 @@ give them in \fBsmln\fP and \fBrmln\fP. \fBsmln\fP is normally output after one or more pln sequences to make sure that the change becomes visible. .SS "Tabs and Initialization" -A few capabilities are used only for tabs: +A few capabilities are used only to manage tab stops. .bP -If the terminal has hardware tabs, the command to advance to the next -tab stop can be given as -.B ht -(usually control/I). +If the terminal has hardware tabs, +specify the character sequence that advances to the next tab stop +as the value of the +.B tab +.RB ( ht ) +string capability +(usually Control+I). .bP -A \*(``back-tab\*('' command which moves leftward to the preceding tab stop can -be given as -.BR cbt . +Specify a character sequence that retreats +(moves leftward) +to the preceding tab stop +as the value of the +.B \%back_tab +.RB ( cbt ) +string capability. .IP -By convention, if the teletype modes indicate that tabs are being -expanded by the computer rather than being sent to the terminal, -programs should not use -.B ht +By convention, +if the terminal modes are configured such that tabs are expanded +by the host rather than terminal, +applications should not employ the +.B tab +.RB ( ht ) or -.B cbt -even if they are present, since the user may not have the tab stops -properly set. +.B \%back_tab +.RB ( cbt ) +capabilities even if they are present, +since the user may not have the tab stops properly set. .bP -If the terminal has hardware tabs which are initially set every +If the terminal has hardware tab stops that are set at every .I n -spaces when the terminal is powered up, -the numeric parameter -.B it -is given, showing the number of spaces the tabs are set to. +character cells when the terminal is powered up, +specify +.I n +as the value of the the numeric capability +.B \%init_tabs +.RB ( it )\c +\&. .IP -The \fBit\fP capability is normally used by the \fB@TSET@\fP -command to determine whether to set the mode for hardware tab expansion, -and whether to set the tab stops. +The +.B \%@TSET@ +and +.RB \*(`` \%@TPUT@ +.BR init \*('' +commands interpret the presence of the +.B \%init_tabs +.RB ( it ) +capability as implying that the terminal +is responsible for tab stop expansion +as well as an instruction to set the tab stops to its value. If the terminal has tab stops that can be saved in non-volatile memory, -the terminfo description can assume that they are properly set. +its +.I \%term\%info +type description can assume that they are properly set. .PP Other capabilities include @@ -1446,7 +1532,7 @@ If there are commands to set and clear tab stops, they can be given as (clear all tab stops) and .B hts -(set a tab stop in the current column of every row). +(set a tab stop in the current column of every line). If a more complex sequence is needed to set the tabs than can be described by this, the sequence can be placed in .B is2 @@ -1618,40 +1704,85 @@ as the corresponding graphic. Then read off the VT100/your terminal character pairs right to left in sequence; these become the ACSC string. .SS "Color Handling" -The curses library functions \fBinit_pair\fP and \fBinit_color\fP -manipulate the \fIcolor pairs\fP and \fIcolor values\fP discussed in this -section -(see \fBcurs_color\fP(3X) for details on these and related functions). +The +.I curses +library functions +.B \%init_pair +and +.B \%init_color +manipulate the +.I "color pairs" +and +.I colors +(color values or indices, +such as \*(``1=red\*('') +discussed in this section +(see \fB\%curs_color\fP(3X) for details on these and related functions). .PP -Most color terminals are either \*(``Tektronix-like\*('' or \*(``HP-like\*('': +Most color terminals are either \*(``Tektronix-like\*('' +or \*(``HP-like\*('' +in their approach to color management. .bP -Tektronix-like -terminals have a predefined set of \fIN\fP colors -(where \fIN\fP is usually 8), -and can set -character-cell foreground and background characters independently, mixing them -into \fIN\fP\ *\ \fIN\fP color pairs. +.I Tektronix-like +terminals define a set of +.I n +colors +(where +.I n +is usually 8), +and can alter +character-cell foreground and background colors independently, +mixing them into +.IR n \(mu n +color pairs. +ANSI-standard terminals are Tektronix-like. .bP -On HP-like terminals, the user must set each color -pair up separately (foreground and background are not independently settable). -Up to \fIM\fP color pairs may be set up from 2*\fIM\fP different colors. -ANSI-compatible terminals are Tektronix-like. +On +.I HP-like +terminals, +the user must set up each color pair separately; +foreground and background are not independently alterable. +Up to +.I m +color pairs may be configured from +.RI 2\(mu m +different colors. .PP -Some basic color capabilities are independent of the color method. -The numeric -capabilities \fBcolors\fP and \fBpairs\fP specify the maximum numbers of colors -and color pairs that can be displayed simultaneously. -The \fBop\fP (original -pair) string resets foreground and background colors to their default values -for the terminal. -The \fBoc\fP string resets all colors or color pairs to -their default values for the terminal. -Some terminals (including many PC -terminal emulators) erase screen areas with the current background color rather -than the power-up default background; these should have the Boolean capability -\fBbce\fP. +Some basic color management capabilities +are independent of the color encoding method. +The numeric capabilities +.B \%max_colors +.RB ( \%colors ) +and +.B \%max_pairs +.RB ( \%pairs ) +specify the maximum numbers of colors +and color pairs that the device can display simultaneously. +The +.B \%orig_pair +.RB ( \%op ) +(\*(``original pair\*('') +string capability +resets foreground and background colors +to their default values for the terminal. +The +.B \%orig_colors +.RB ( \%oc ) +(\*(``original colors\*('') +string capability +resets all colors or color pairs +to their default values for the terminal. +Some terminal types +(including many PC terminal emulators) +erase screen areas with the current background color rather +than the power-up default background; +these should declare the Boolean capability +.B \%back_color_erase +.RB ( bce ). .PP -While the curses library works with \fIcolor pairs\fP +While the +.I curses +library works with \fIcolor pairs\fP (reflecting the inability of some devices to set foreground and background colors independently), there are separate capabilities for setting these features: @@ -1682,8 +1813,8 @@ space. .PP .TS center; -cb cb cb cb s s -l lb c l1 l1 l . +Cb Cb Cb Cb S S +L Lb C L1 L1 L . Color #define Value RGB _ black COLOR_BLACK 0 0, 0, 0 @@ -1703,8 +1834,8 @@ a different mapping, i.e., .PP .TS center; -cb cb cb cb s s -l lb c l1 l1 l . +Cb Cb Cb Cb S S +L Lb C L1 L1 L . Color #define Value RGB _ black COLOR_BLACK 0 0, 0, 0 @@ -1755,8 +1886,8 @@ attributes understood by \fBcurses\fP is as follows: .PP .TS center; -cb cb cb cb -lb n n lb. +Cb Cb Cb Cb +Lb N N Lb. Attribute Bit Decimal Set by _ A_STANDOUT 0 1 sgr @@ -2019,7 +2150,7 @@ The \-c (check) option also checks resolved (after tc expansion) lengths. .SH FILES .TP -.I \*d +.I @TERMINFO@ compiled terminal description database directory .SH EXTENSIONS Searching for terminal descriptions in @@ -2059,7 +2190,7 @@ Portable applications must assume that numeric capabilities are signed 16-bit values. This includes the \fIno_color_video\fP (\fBncv\fP) capability. The 32768 mask value used for italics with \fBncv\fP can be confused with -an absent or cancelled \fBncv\fP. +an absent or canceled \fBncv\fP. If italics should work with colors, then the \fBncv\fP value must be specified, even if it is zero. .PP @@ -2076,7 +2207,7 @@ Solaris, and \fI\%ncurses\fP support all SVr4 capabilities. .bP IRIX supports the SVr4 set and adds one undocumented extended string -capability (\fB\%set_pglen\fP). +capability \%(\fBset_pglen\fP). .bP SVr1 and Ultrix support a restricted subset of \fI\%terminfo\fP capabilities. diff --git a/contrib/ncurses/man/tic.1m b/contrib/ncurses/man/tic.1m index 9c3181ed5c7d..c0a39f7fa390 100644 --- a/contrib/ncurses/man/tic.1m +++ b/contrib/ncurses/man/tic.1m @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: tic.1m,v 1.110 2024/04/27 17:57:06 tom Exp $ -.TH @TIC@ 1M 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: tic.1m,v 1.128 2025/11/12 00:49:19 tom Exp $ +.TH @TIC@ 1M 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -45,10 +45,9 @@ .el .IP \(bu 2 .. . -.ds d @TERMINFO@ .SH NAME \fB\%@TIC@\fP \- -compile terminal descriptions for \fIterminfo\fR or \fItermcap\fR +compile terminal descriptions for \%\fIterm\%info\fR or \fItermcap\fR .SH SYNOPSIS \fB@TIC@\fP [\fB\-\ @@ -83,134 +82,260 @@ x\ [\fB\-w\fP[\fIn\fP]] \fIfile\fP .SH DESCRIPTION -The \fB@TIC@\fP command translates a \fBterminfo\fP file from source -format into compiled format. -The compiled format is necessary for use with -the library routines in \fB\%ncurses\fP(3X). +.B \%@TIC@ +translates a +.I \%term\%info +file from source format +into the compiled format +used by the +\fB\%ncurses\fP(3X) +library. .PP -As described in \fBterm\fP(5), the database may be either a directory -tree (one file per terminal entry) or a hashed database (one record per entry). -The \fB@TIC@\fP command writes only one type of entry, -depending on how it was built: +As described in \fBterm\fP(5), +the database may be either a directory tree +(one file per terminal entry) +or a hashed database +(one record per entry). +The +.B \%@TIC@ +command writes only one type of entry, +depending on how it was built. .bP -For directory trees, the top-level directory, e.g., /usr/share/terminfo, +For directory trees, +the top-level directory, +such as +.IR \%/usr/share/terminfo "," specifies the location of the database. .bP For hashed databases, a filename is needed. If the given file is not found by that name, -but can be found by adding the suffix ".db", +but can be found by adding the suffix \*(``.db\*('', then that is used. .IP The default name for the hashed database is the same as the -default directory name (only adding a ".db" suffix). +default directory name (only adding a \*(``.db\*('' suffix). .PP In either case (directory or hashed database), -\fB@TIC@\fP will create the container if it does not exist. +.B \%@TIC@ +will create the container if it does not exist. For a directory, this would be the \*(``terminfo\*('' leaf, -versus a "terminfo.db" file. +versus a +.I terminfo.db +file. .PP -The results are normally placed in the system terminfo database \fB\*d\fP. +The results are normally placed +in the system +.I \%term\%info +database +.IR \%@TERMINFO@ "." The compiled terminal description can be placed -in a different terminfo database. +in a different +.I \%term\%info +database. There are two ways to achieve this: .bP First, you may override the system default either by using the \fB\-o\fP option, or by setting the variable \fI\%TERMINFO\fP -in your shell environment to a valid database location. +in the process environment to a valid database location. .bP -Secondly, if \fB@TIC@\fP cannot write in \fI\*d\fP -or the location specified using your \fI\%TERMINFO\fP variable, -it looks for the directory \fI$HOME/.terminfo\fP -(or hashed database \fI$HOME/.terminfo.db)\fP; +Secondly, if +.B \%@TIC@ +cannot write in +.I \%@TERMINFO@ +or the location specified using your +.I \%TERMINFO +variable, +it looks for the directory +.I \%$HOME/.terminfo +(or hashed database +.IR $HOME/.terminfo.db ); if that location exists, the entry is placed there. .PP -Libraries that read terminfo entries are expected to check in succession +Libraries that read +.I \%term\%info +entries are expected to check in succession .bP -a location specified with the \fI\%TERMINFO\fP environment variable, +a location specified by the +.I \%TERMINFO +environment variable, .bP -\fI$HOME/.terminfo\fP, +.IR \%$HOME/.terminfo "," .bP -directories listed in the \fI\%TERMINFO_DIRS\fP environment variable, +directories listed in the +.I \%TERMINFO_DIRS +environment variable, .bP -a compiled-in list of directories (@TERMINFO_DIRS@), and +a compiled-in list of directories +.RI \%( @TERMINFO_DIRS@ ), +and .bP -the system terminfo database (\fI\*d\fP). +the system +.I \%term\%info +database +.RI \%( @TERMINFO@ ). .PP -The \fIFetching Compiled Descriptions\fP section in the \fBterminfo\fR(5) -manual goes into further detail. +Section \*(``Fetching Compiled Descriptions\*('' in \fBterminfo\fP(5) +goes into further detail. .SS Aliases -This is the same program as @INFOTOCAP@ and @CAPTOINFO@; -usually those are linked to, or copied from this program: +.B \%@TIC@ +is the same program as +.B \%@INFOTOCAP@ +and +.BR \%@CAPTOINFO@ ";" +usually those are linked to, +or copied from, this program. .bP -When invoked as @INFOTOCAP@, @TIC@ sets the \fB\-I\fP option. +When invoked as +.BR \%@INFOTOCAP@ "," +.B \%@TIC@ +sets the +.B \-I +option. .bP -When invoked as @CAPTOINFO@, @TIC@ sets the \fB\-C\fP option. +When invoked as +.BR \%@CAPTOINFO@ "," +.B \%@TIC@ +sets the +.B \-C +option. .SH OPTIONS .TP -\fB\-0\fP -restricts the output to a single line +.B \-0 +restricts the output to a single line. .TP -\fB\-1\fP -restricts the output to a single column +.B \-1 +restricts the output to a single column. .TP -\fB\-a\fP -tells \fB@TIC@\fP to retain commented-out capabilities rather than discarding -them. +.B \-a +tells +.B \%@TIC@ +to retain commented-out capabilities rather than discarding them. Capabilities are commented by prefixing them with a period. -This sets the \fB\-x\fP option, because it treats the commented-out -entries as user-defined names. -If the source is termcap, accept the 2-character names required by version 6. +.B \-a +implies +.BR \-x "," +because +.B \%@TIC@ +treats the commented-out entries as user-defined names. +If the source is in +.I termcap +format, +.B \%@TIC@ +accepts the 2-character names required by version 6. +.\" TD added this comment in 2003, prompted by discussion with Don Libes. +.\" Quoting from SunOS 4.1.3 termcap(5): +.\" Each termcap entry consist of a number of colon-separated (:) fields. +.\" The first field for each terminal lists the various names by which it +.\" is known, separated by bar ( | ) characters. The first name is always +.\" two characters long, and is used by older (version 6) systems (which +.\" store the terminal type in a 16-bit word in a system-wide database). +.\" Version 6 sounds like Unix version 6, but termcap was introduced a few +.\" years later. The SunOS man page was based on material in 4.2BSD. Otherwise these are ignored. .TP \fB\-C\fP -Force source translation to termcap format. -Note: this differs from the \fB\-C\fP -option of \fB@INFOCMP@\fP(1M) in that it does not merely translate capability -names, but also translates terminfo strings to termcap format. -Capabilities -that are not translatable are left in the entry under their terminfo names +Force source translation to +.I termcap +format. +Note: this option differs from the +.B \-C +option of \fB\%@INFOCMP@\fP(1M) +in that it does not merely translate capability names, +but also translates +.I \%term\%info +string capability values to +.I termcap +format. +.B \%@TIC@ +leaves capabilities that are not translatable +in the entry under their +.I \%term\%info +names, but commented out with two preceding dots. -The actual format used incorporates some improvements for escaped characters -from terminfo format. -For a stricter BSD-compatible translation, add the \fB\-K\fP option. +The actual format used +incorporates some improvements for escaped characters +from +.I \%term\%info +format. +For a stricter BSD-compatible translation, +specify +.B \-K +as well. .IP -If this is combined with \fB\-c\fP, \fB@TIC@\fP makes additional checks -to report cases where the terminfo values do not have an exact equivalent -in termcap form. +If +.B \-C +is combined with +.BR \-c "," +.B \%@TIC@ +makes additional checks, +reporting cases where +.I \%term\%info +capability values do not have an exact equivalent +in +.I termcap +syntax. For example: .RS .bP -\fBsgr\fP usually will not convert, because termcap lacks the ability to -work with more than two parameters, and because termcap lacks many of -the arithmetic/logical operators used in terminfo. -.bP -capabilities with more than one delay or with delays before the end of -the string will not convert completely. +.B sgr +usually does not convert, +because +.I termcap +is unable to work with more than two parameters, +and because +.I termcap 's +language for encoding parameterized capabilities +lacks many of +.IR \%term\%info 's +arithmetic and logical operators. .RE .TP -\fB\-c\fP -tells \fB@TIC@\fP to only check \fIfile\fP for errors, -including syntax problems and bad use-links. -If you specify \fB\-C\fP (\fB\-I\fP) with this option, the code -will print warnings about entries which, after use resolution, are more than -1023 (4096) bytes long. -Due to a fixed buffer length in older termcap libraries, -as well as buggy checking for the buffer length -(and a documented limit in terminfo), -these entries may cause core -dumps with other implementations. +.B \-c +tells +.B \%@TIC@ +to perform only validation of +.I file "," +including syntax problems and invalid +.RB \*(`` use \*('' +references; +no output is produced. +If you specify +.B \-C +.RB ( \-I ) +with this option, +.B \%@TIC@ +warns about entries that, +after +.RB \*(`` use \*('' +resolution, +exceed 1023 (4096) bytes. +Due to a fixed buffer length in older +.I termcap +libraries, +as well as buggy checking of the buffer length +(and a documented limit in +.IR \%term\%info ), +these entries may cause core dumps +with other implementations. .IP -\fB@TIC@\fP checks string capabilities to ensure that those with parameters -will be valid expressions. -It does this check only for the predefined string capabilities; -those which are defined with the \fB\-x\fP option are ignored. +.B \%@TIC@ +checks string capabilities +to ensure that those with parameters are valid expressions. +It validates only standard string capabilities, +ignoring those defined with the +.B \-x +option. .TP \fB\-D\fP -tells \fB@TIC@\fP to print the database locations that it knows about, and exit. +tells +.B \%@TIC@ +to print the database locations that it knows about, and exit. The first location shown is the one to which it would write compiled terminal descriptions. -If \fB@TIC@\fP is not able to find a writable database location +If +.B \%@TIC@ +is not able to find a writable database location according to the rules summarized above, it will print a diagnostic and exit with an error rather than printing a list of database locations. @@ -223,7 +348,9 @@ the list, the entry will be written or translated as normal. Otherwise no output will be generated for it. The option value is interpreted as a file containing the list if it contains a '/'. -(Note: depending on how @TIC@ was compiled, +(Note: depending on how +.B \%@TIC@ +was compiled, this option may require \fB\-I\fP or \fB\-C\fP.) .TP \fB\-f\fP @@ -321,12 +448,16 @@ This is mainly useful for testing and analysis, since the compiled descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo). .TP \fB\-t\fP -tells \fB@TIC@\fP to discard commented-out capabilities. +tells +.B \%@TIC@ +to discard commented-out capabilities. Normally when translating from terminfo to termcap, untranslatable capabilities are commented-out. .TP \fB\-U\fP -tells \fB@TIC@\fP to not post-process the data after parsing the source file. +tells +.B \%@TIC@ +to not post-process the data after parsing the source file. Normally, it infers data which is commonly missing in older terminfo data, or in termcaps. .TP @@ -336,7 +467,9 @@ and exits. .TP \fB\-v\fIn\fR specifies that (verbose) output be written to standard error trace -information showing \fB@TIC@\fP's progress. +information showing +.BR \%@TIC@ 's +progress. .IP The optional parameter \fIn\fP is a number from 1 to 9, inclusive, indicating the desired level of detail of information. @@ -397,43 +530,91 @@ If it is omitted, it defaults to 60. .TP \fB\-x\fP Treat unknown capabilities as user-defined (see \fBuser_caps\fP(5)). -That is, if you supply a capability name which \fB@TIC@\fP does not recognize, +That is, if you supply a capability name which +.B \%@TIC@ +does not recognize, it will infer its type (Boolean, number or string) from the syntax and make an extended table entry for that. User-defined capability strings whose name begins with \*(``k\*('' are treated as function keys. .SS Parameters .TP -\fIfile\fP -contains one or more \fBterminfo\fP terminal descriptions in source -format [see \fBterminfo\fP(5)]. +.I file +contains one or more +.I \%term\%info +terminal descriptions in source format; see \fBterminfo\fP(5). Each description in the file -describes the capabilities of a particular terminal. +describes the capabilities of a particular terminal type. .IP -If \fIfile\fP is \*(``-\*('', then the data is read from the standard input. -The \fIfile\fP parameter may also be the path of a character-device. +If +.I file +is \*(``\-\*('', +the data are read from the standard input stream. +The +.I file +parameter may also be the path of a character device. .SS Processing -All but one of the capabilities recognized by \fB@TIC@\fP are documented -in \fBterminfo\fP(5). -The exception is the \fBuse\fP capability. +\fBterminfo\fP(5) documents all but one of the capabilities +recognized by +.BR \%@TIC@ "." +The exception is the +.B use +capability, +which enables a terminal type description to incorporate others +by reference. .PP -When a \fBuse\fP=\fIentry\fP\-\fIname\fP field is discovered in a -terminal entry currently being compiled, \fB@TIC@\fP reads in the binary -from \fB\*d\fP to complete the entry. -(Entries created from -\fIfile\fP will be used first. -\fB@TIC@\fP duplicates the capabilities in -\fIentry\fP\-\fIname\fP for the current entry, with the exception of -those capabilities that explicitly are defined in the current entry. +.B \%@TIC@ +serially reads and compiles terminal type descriptions; +at any given time, +the program compiles at most one +.I current +entry. +.\" That is, tic doesn't recursively compile entries to resolve "use=". +When +.B \%@TIC@ +encounters a +.BI use= entry-name +field in the current entry, +it reads the compiled description of +.I entry-name +from +.I \%@TERMINFO@ +to complete the current entry. +If +.B \%@TIC@ +has already compiled a description of +.I entry-name +preceding the current entry in +.IR file "," +.B \%@TIC@ +uses it preferentially. +.\" XXX: Check this--tic doesn't read ahead in or index the input file, +.\" does it? Otherwise this feature would break when reading from a +.\" pipe. --GBR +.B \%@TIC@ +duplicates the capabilities in +.I entry-name +for the current entry, +excepting those that the current entry explicitly defines. +The foregoing has implications for capability cancellation. +When +.I entry-1 +declares +.RB \*(`` use=\c +.IR entry-2 \*(``, +any canceled capabilities in +.I entry-2 +must also appear in +.I entry-1 +prior to +.RB \*(`` use=\c +.IR entry-2 \*(`` +for these capabilities to be canceled in +.IR entry-1 "." .PP -When an entry, e.g., \fBentry_name_1\fP, contains a -\fBuse=\fIentry\fR_\fIname\fR_\fI2\fR field, any canceled -capabilities in \fIentry\fR_\fIname\fR_\fI2\fP must also appear in -\fBentry_name_1\fP before \fBuse=\fP for these capabilities to be -canceled in \fBentry_name_1\fP. -.PP -Total compiled entries cannot exceed -4096 bytes in the legacy storage format, or +Compiled entries cannot exceed +4096 bytes in the legacy storage format, +or 32768 using the extended number format. The name field cannot exceed 512 bytes. @@ -443,90 +624,148 @@ will be truncated to the maximum alias length and a warning message will be printed. .SH FILES .TP -.I \*d +.I @TERMINFO@ compiled terminal description database .SH NOTES -There is some evidence that historic \fB@TIC@\fP implementations treated +There is some evidence that historic +.B \%@TIC@ +implementations treated description fields with no whitespace in them as additional aliases or short names. -This \fB@TIC@\fP does not do that, but it does warn when +This +.B \%@TIC@ +does not do that, but it does warn when description fields may be treated that way and check them for dangerous characters. .SH EXTENSIONS -Unlike the SVr4 \fB@TIC@\fP command, this implementation can actually -compile termcap sources. -In fact, entries in terminfo and termcap syntax can -be mixed in a single source file. +Unlike the SVr4 +.I tic +command, +.I \%ncurses +.I tic +can compile +.I termcap +sources. +In fact, +entries in +.I \%term\%info +and +.I termcap +syntax can be mixed in a single source file. See \fBterminfo\fP(5) for the list of -termcap names taken to be equivalent to terminfo names. +.I termcap +capability names +.I \%ncurses +.B \%@TIC@ +treats as equivalent to +.I \%term\%info +names. .PP -The SVr4 manual pages are not clear on the resolution rules for \fBuse\fP +The SVr4 man pages are not clear on the resolution rules for +.RB \*(`` use \*('' capabilities. -This implementation of \fB@TIC@\fP will find \fBuse\fP targets anywhere -in the source file, -or anywhere in the file tree rooted at -\fI\%TERMINFO\fP +.IR ncurses 's +.B \%@TIC@ +finds +.RB \*(`` use \*('' +targets anywhere in the source file, +or anywhere in the file tree rooted at the location in the +.I \%TERMINFO +environment variable (if -\fI\%TERMINFO\fP is defined), -or in the user's \fI$HOME/.terminfo\fP database +.I \%TERMINFO +is defined), +or in the user's +.I \%$HOME/.terminfo +database (if it exists), -or (finally) anywhere in the system's file tree of -compiled entries. +or (finally) anywhere in the system's collection of compiled entries. .PP -The error messages from this \fB@TIC@\fP have the same format as GNU C -error messages, and can be parsed by GNU Emacs's compile facility. +The error messages from +.I \%ncurses +.B \%@TIC@ +have the same format as GNU C error messages, +and can be parsed by GNU Emacs's \*(``compile\*('' facility. .PP -Aside from \fB\-c\fP and \fB\-v\fP, options are not portable: +Aside from +.B \-c +and +.BR \-v "," +options are not portable. .bP -Most of @TIC@'s options -are not supported by SVr4 \fBtic\fP: -.sp +Most of +.I \%ncurses +.BR \%@TIC@ 's +options are not supported by SVr4 +.IR tic "." +.PP .RS -\fB\-0\fP -\fB\-1\fP -\fB\-C\fP -\fB\-G\fP -\fB\-I\fP -\fB\-N\fP -\fB\-R\fP -\fB\-T\fP -\fB\-V\fP -\fB\-a\fP -\fB\-e\fP -\fB\-f\fP -\fB\-g\fP -\fB\-o\fP -\fB\-r\fP -\fB\-s\fP -\fB\-t\fP -\fB\-x\fP +.B \-0 +.B \-1 +.B \-C +.B \-G +.B \-I +.B \-N +.B \-R +.B \-T +.B \-V +.B \-a +.B \-e +.B \-f +.B \-g +.B \-o +.B \-r +.B \-s +.B \-t +.B \-x .RE .bP -The NetBSD \fBtic\fP supports a few of the \fI\%ncurses\fP options -.sp +NetBSD +.I tic +supports a few of the +.I \%ncurses +.B \%@TIC@ +options. +.PP .RS -\fB\-a\fP -\fB\-o\fP -\fB\-x\fP +.B \-a +.B \-o +.B \-x .RE -.IP -and adds \fB\-S\fP -(a feature which does the same thing -as @INFOCMP@'s \fB\-e\fP and \fB\-E\fP options). +.bP +NetBSD +.I tic +also adds +.BR \-S "," +a feature which does the same thing as +.I \%ncurses +.BR \%@INFOCMP@ 's +.B \-e +and +.B \-E +options. .PP -The SVr4 \fB\-c\fP mode does not report bad \*(``use=\*('' links. +SVr4 +.IR tic 's +.B \-c +mode does not report bad +.RB \*(`` use \*('' +links. .PP -System V does not compile entries to or read entries from your -\fI$HOME/.terminfo\fP database unless \fI\%TERMINFO\fP is explicitly set -to it. +SVr4 does not compile entries to +or read entries from your +.I \%$HOME/.terminfo +database unless the +.I \%TERMINFO +environment variable is explicitly set to it. .SH PORTABILITY -X/Open Curses, Issue 7 (2009) provides a brief description of \fBtic\fP. +X/Open Curses Issue\ 7 (2009) provides a brief description of \fBtic\fP. It lists one option: \fB\-c\fP. The omission of \fB\-v\fP is unexpected. The change history states that the description is derived from Tru64. According to its manual pages, that system also supported the \fB\-v\fP option. .PP -Shortly after Issue 7 was released, Tru64 was discontinued. +Shortly after Issue\ 7 was released, Tru64 was discontinued. As of 2019, the surviving implementations of \fBtic\fP are SVr4 (AIX, HP-UX and Solaris), \fI\%ncurses\fP @@ -547,7 +786,7 @@ System V Release 2 provided a \fBtic\fP utility. It accepted a single option: \fB\-v\fP (optionally followed by a number). According to Ross Ridge's comment in \fImytinfo\fP, this version of \fBtic\fP was -unable to represent cancelled capabilities. +unable to represent canceled capabilities. .PP System V Release 3 provided a different \fBtic\fP utility, written by Pavel Curtis, @@ -583,28 +822,43 @@ to support user-defined capabilities. In 2010, Roy Marples provided a \fBtic\fP program and terminfo library for NetBSD. That implementation adapts several features from \fI\%ncurses\fP, -including \fB@TIC@\fP's \fB\-x\fP option. +including +.BR \%@TIC@ 's +\fB\-x\fP option. .PP -The \fB\-c\fP option tells \fB@TIC@\fP to check for problems in the +The \fB\-c\fP option tells +.B \%@TIC@ +to check for problems in the terminfo source file. Continued development provides additional checks: .bP -\fIpcurses\fP had 8 warnings +.I pcurses +had 8 warnings. .bP -\fI\%ncurses\fP in 1996 had 16 warnings +.I \%ncurses +in 1996 had 16 warnings. .bP -Solaris (SVr4) curses has 28 warnings +Solaris (SVr4) +.I curses +has 28 warnings. .bP -NetBSD tic in 2019 has 19 warnings. +NetBSD +.I tic +in 2019 has 19 warnings. .bP -\fI\%ncurses\fP in 2019 has 96 warnings +.I \%ncurses +in 2019 has 96 warnings. .PP -The checking done in \fI\%ncurses\fP' \fB@TIC@\fP helps with the +The checking done in +.IR \%ncurses 's +.B \%@TIC@ +helps with the conversion to termcap, as well as pointing out errors and inconsistencies. It is also used to ensure consistency with the user-defined capabilities. -There are 527 distinct capabilities in \fI\%ncurses\fP' terminal -database; +There are 527 distinct capabilities in +.IR \%ncurses 's +terminal database; 128 of those are user-defined. .SH AUTHORS Eric S. Raymond <esr@snark.thyrsus.com> diff --git a/contrib/ncurses/man/toe.1m b/contrib/ncurses/man/toe.1m index c4eba848e06b..4f92ec021976 100644 --- a/contrib/ncurses/man/toe.1m +++ b/contrib/ncurses/man/toe.1m @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2019-2023,2024 Thomas E. Dickey * +.\" Copyright 2019-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: toe.1m,v 1.68 2024/04/20 18:59:26 tom Exp $ -.TH @TOE@ 1M 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: toe.1m,v 1.75 2025/11/12 01:06:36 tom Exp $ +.TH @TOE@ 1M 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -50,7 +50,6 @@ .ie n .IP \(bu 4 .el .IP \(bu 2 .. -.ds d @TERMINFO@ .SH NAME \fB\%@TOE@\fP \- list table of entries of \fIterminfo\fR terminal types @@ -99,7 +98,7 @@ Without the \fB\-s\fP option, \fB\%@TOE@\fP does not attempt to merge duplicates in its report. .TP .B \-h -writes a heading naming each each directory as it is accessed. +writes a heading naming each directory as it is accessed. .TP .B \-s sorts the output by the entry names. @@ -143,7 +142,7 @@ reports the version of \fI\%ncurses\fP associated with this program and exits with a successful status. .SH FILES .TP -.I \*d +.I @TERMINFO@ compiled terminal description database .SH PORTABILITY \fB\%@TOE@\fP is not provided by other implementations. @@ -172,7 +171,7 @@ terminal database directories named in the \fI\%TERMINFO\fP and .\" toe -a | grep -E '^(xterm|vt)' .ft \*(CW .TS -L2 Lx. +L2 Lw(32n)x. xterm\-color generic color xterm xterm\-xfree86 xterm terminal emulator (XFree86) xterm\-vt220 xterm emulating vt220 @@ -181,7 +180,7 @@ xterm\-r6 xterm X11R6 version xterm\-r5 xterm R5 version xterm\-mono monochrome xterm xterm T{ -.ad l +.na xterm terminal emulator (X Window System) T} vt220 dec vt220 @@ -202,19 +201,19 @@ terminal description was found. .\" toe -as | grep -E '(^-+>|:.(xterm|vt))' .ft \*(CW .TS -Lx. +Lw(31n)x. \-\-> /etc/terminfo \-\-\-\-> /lib/terminfo \-\-\-\-\-\-> /usr/share/terminfo .TE .TS -L1 L2 Lx. +L1 L2 Lw(31n)x. \-\-*\-\-\-: vt100 dec vt100 (w/advanced video) \-\-*\-\-\-: vt102 dec vt102 \-\-*\-\-\-: vt220 dec vt220 \-\-*\-\-\-: vt52 dec vt52 \-\-*\-\-\-: xterm T{ -.ad l +.na xterm terminal emulator (X Window System) T} \-\-*\-\-\-: xterm\-256color xterm with 256 colors @@ -224,7 +223,7 @@ T} \-\-*\-\-\-: xterm\-r6 xterm X11R6 version \-\-*\-\-\-: xterm\-vt220 xterm emulating vt220 \-\-*\-\-\-: xterm\-xfree86 T{ -.ad l +.na xterm terminal emulator (XFree86) T} .T& diff --git a/contrib/ncurses/man/tput.1 b/contrib/ncurses/man/tput.1 index eba073390df5..f27a529c29e3 100644 --- a/contrib/ncurses/man/tput.1 +++ b/contrib/ncurses/man/tput.1 @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,44 +28,44 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: tput.1,v 1.113 2024/04/20 19:58:50 tom Exp $ -.TH @TPUT@ 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: tput.1,v 1.149 2025/11/12 01:05:03 tom Exp $ +.TH @TPUT@ 1 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq .\} .el \{\ .ie t .ds `` `` -.el .ds `` "" +.el .ds `` ""\" cannot be used in quoted macro argument w/ AT&T troff .ie t .ds '' '' -.el .ds '' "" +.el .ds '' ""\" cannot be used in quoted macro argument w/ AT&T troff .\} . .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. -.ds d @TERMINFO@ .SH NAME \fB\%@TPUT@\fP \- initialize a terminal, exercise its capabilities, or query \fI\%term\%info\fP database .SH SYNOPSIS -\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] +\fB@TPUT@\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] {\fIcap-code\fP [\fIparameter\fP .\|.\|.\&]} .\|.\|. .PP -\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] [\fB\-x\fP] \fBclear\fP +\fB@TPUT@\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] [\fB\-x\fP] \fBclear\fP .PP -\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] \fBinit\fP +\fB@TPUT@\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] \fBinit\fP .PP -\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] \fB\%reset\fP +\fB@TPUT@\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] \fB\%reset\fP .PP -\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] \fB\%longname\fP +\fB@TPUT@\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] \fB\%longname\fP .PP -\fB@TPUT@ \-S\fP +\fB@TPUT@\fP [\fB\-v\fP] \fB\-S\fP .PP -\fB@TPUT@ \-V\fP +\fB@TPUT@\fP [\fB\-v\fP] \fB\-V\fP .SH DESCRIPTION -\fB\%@TPUT@\fP uses the +.B \%@TPUT@ +uses the .I \%term\%info library and database to make terminal-specific capabilities and information available to the shell, @@ -75,26 +75,30 @@ to report a description of the current (or specified) terminal type. Terminal capabilities are accessed by -.IR cap-code . +.IR cap-code "." .PP \fB\%terminfo\fP(5) discusses terminal capabilities at length -and presents a complete list of -.IR cap-codes . +and presents a complete list of standardized +.IR cap-codes "." +\fB\%user_caps\fP(5) presents other widely used +but non-standard capabilities. .PP When retrieving capability values, the result depends upon the capability's type. .TP 9 \" "Boolean" + 2n Boolean -\fB\%@TPUT@\fP sets its exit status to +.B \%@TPUT@ +sets its exit status to .B 0 if the terminal possesses -.IR cap-code , +.IR cap-code "," and .B 1 if it does not. .TP numeric -\fB\%@TPUT@\fP writes +.B \%@TPUT@ +writes .IR cap-code 's decimal value to the standard output stream if defined .RB ( \-1 @@ -102,26 +106,30 @@ if it is not) followed by a newline. .TP string -\fB\%@TPUT@\fP writes +.B \%@TPUT@ +writes .IR cap-code 's value to the standard output stream if defined, without a trailing newline. .PP Before using a value returned on the standard output, -the application should test \fB\%@TPUT@\fP's exit status +the application should test +.BR \%@TPUT@ 's +exit status to be sure it is 0; see section \*(``EXIT STATUS\*('' below. .SS Operands Generally, an operand is a -.IR cap-code , +.IR cap-code "," a capability code from the terminal database, or a parameter thereto. -Three others are specially recognized by \fB\%@TPUT@\fP: -.BR init , -.BR \%reset , +Three others are specially recognized by +.BR \%@TPUT@ ":" +.BR init "," +.BR \%reset "," and -.BR \%longname . +.BR \%longname "." Although these resemble capability codes, they in fact receive special handling; we term them \*(``pseudo-capabilities\*(''. @@ -132,18 +140,23 @@ indicates a capability from the terminal database. If .I cap-code is of string type and takes parameters, -\fB\%@TPUT@\fP interprets arguments following +.B \%@TPUT@ +interprets arguments following .I cap-code as the parameters, up to the (fixed) quantity the capability requires. .IP Most parameters are numeric. Only a few terminal capabilities require string parameters; -\fB\%@TPUT@\fP uses a table to decide which to pass as strings. -Normally \fB\%@TPUT@\fP uses \fB\%tparm\fP(3X) to perform the +.B \%@TPUT@ +uses a table to decide which to pass as strings. +Normally +.B \%@TPUT@ +uses \fB\%tparm\fP(3X) to perform the substitution. If no parameters are given for the capability, -\fB\%@TPUT@\fP writes the string without performing the substitution. +.B \%@TPUT@ +writes the string without performing the substitution. .TP .B init initializes the terminal. @@ -153,7 +166,8 @@ the following occur. .RS .TP 5 (1) -\fB\%@TPUT@\fP retrieves the terminal's mode settings. +.B \%@TPUT@ +retrieves the terminal's mode settings. It successively tests the file descriptors corresponding to .RS .bP @@ -169,22 +183,20 @@ and .IP to obtain terminal settings. Having retrieved them, -\fB\%@TPUT@\fP remembers which descriptor to use for further updates. +.B \%@TPUT@ +remembers which descriptor to use for further updates. .TP (2) If the terminal dimensions cannot be obtained from the operating system, but the environment or terminal type database entry describes them, -\fB\%@TPUT@\fP updates the operating system's notion of them. +.B \%@TPUT@ +updates the operating system's notion of them. .TP (3) -\fB\%@TPUT@\fP updates the terminal modes. +.B \%@TPUT@ +updates the terminal modes. .RS .bP -Any delays specified in the entry -(for example, -when a newline is sent) -are set in the terminal driver. -.bP Tab expansion is turned on or off per the specification in the entry, and .bP @@ -199,10 +211,12 @@ If initialization capabilities, detailed in subsection \*(``Tabs and Initialization\*('' of \fB\%terminfo\fP(5), are present, -\fB\%@TPUT@\fP writes them to the standard output stream. +.B \%@TPUT@ +writes them to the standard output stream. .TP (5) -\fB\%@TPUT@\fP flushes the standard output stream. +.B \%@TPUT@ +flushes the standard output stream. .RE .IP If an entry lacks the information needed for an activity above, @@ -214,24 +228,27 @@ A reset differs from initialization in two ways. .RS .TP 5 (1) -\fB\%@TPUT@\fP sets the the terminal modes to a \*(``sane\*('' state, +.B \%@TPUT@ +sets the terminal modes to a \*(``sane\*('' state, .RS .bP -enabling cooked and echo modes, +enabling canonical (\*(``cooked\*('') and echo modes, .bP disabling cbreak and raw modes, .bP enabling newline translation, and .bP -setting any unset special characters to their default values. +setting any special input characters to their default values. .RE .TP 5 (2) If any reset capabilities are defined for the terminal type, -\fB\%@TPUT@\fP writes them to the output stream. +.B \%@TPUT@ +writes them to the output stream. Otherwise, -\fB\%@TPUT@\fP uses any defined initialization capabilities. +.B \%@TPUT@ +uses any defined initialization capabilities. Reset capabilities are detailed in subsection \*(``Tabs and Initialization\*('' of \fB\%terminfo\fP(5). .RE @@ -246,7 +263,8 @@ The names are separated by \*(``|\*('' characters. X/Open Curses terms the last name the \*(``long name\*('', and indicates that it may include blanks. .IP -\fB\%@TIC@\fP warns if the last name does not include blanks, +.B \%@TIC@ +warns if the last name does not include blanks, to accommodate old .I \%term\%info entries that treated the long name as an optional feature. @@ -254,37 +272,48 @@ The long name is often referred to as the description field. .IP If the terminal database is present and an entry for the user's terminal type exists, -\fB\%@TPUT@\fP reports its description to the standard output stream, +.B \%@TPUT@ +reports its description to the standard output stream, without a trailing newline. See \fB\%terminfo\fP(5). .PP .I Note: Redirecting the output of -.RB \%\*(`` "@TPUT@ init" \*('' +\*(``\c +.B "@TPUT@ init\c" +\*('' or -.RB \%\*(`` "@TPUT@ reset" \*('' +\*(``\c +.B "@TPUT@ reset\c" +\*('' to a file will capture only part of their actions. Changes to the terminal modes are not affected by file descriptor redirection, -since the terminal modes are altered via \fB\%ioctl\fP(2). +since the terminal modes are altered via \fI\%ioctl\fP(2). .SS Aliases -If \fB\%@TPUT@\fP is invoked via link with any of the names -.BR clear , -.BR init , +If +.B \%@TPUT@ +is invoked via link with any of the names +.BR clear "," +.BR init "," or -.BR \%reset , +.BR \%reset "," it operates as if run with the corresponding (pseudo-)capability operand. For example, executing a link named .B \%reset -that points to \fB\%@TPUT@\fP has the same effect as -.RB \%\*(`` "@TPUT@ \%reset" \*(''. +that points to +.B \%@TPUT@ +has the same effect as +\%\*(``\c +.B "@TPUT@ \%reset\c" +\*(''. .PP This feature was introduced by .I \%ncurses 5.2 in 2000. -It is rarely used: +It is rarely used. .TP .B \%clear is a separate program, @@ -296,12 +325,13 @@ has the same name as another program in widespread use. .B \%reset is provided by the \fB\%@TSET@\fP(1) utility (also via a link named -.BR \%reset ")." +.BR \%reset ). .SS "Terminal Size" Besides the pseudo-capabilities (such as .BR init ), -\fB\%@TPUT@\fP treats the +.B \%@TPUT@ +treats the .B lines and .B cols @@ -310,7 +340,8 @@ specially: it may call \fB\%setupterm\fP(3X) to obtain the terminal size. .bP First, -\fB\%@TPUT@\fP attempts to obtain these capabilities from the terminal +.B \%@TPUT@ +attempts to obtain these capabilities from the terminal database. This generally fails for terminal emulators, which lack a fixed window size and thus omit the capabilities. @@ -324,14 +355,15 @@ Finally, it inspects the environment variables .I LINES and -.IR \%COLUMNS , +.IR \%COLUMNS "," which may override the terminal size. .PP If the .B \-T option is given, -\fB\%@TPUT@\fP ignores the environment variables by calling -.BR \%use_tioctl(TRUE) , +.B \%@TPUT@ +ignores the environment variables by calling +.BR \%use_tioctl(TRUE) "," relying upon the operating system (or, ultimately, @@ -339,8 +371,11 @@ the terminal database). .SH OPTIONS .TP 9n \" "-T type" + 2n .B \-S -retrieves more than one capability per invocation of \fB\%@TPUT@\fP. -The capabilities must be passed to \fB\%@TPUT@\fP from the standard +retrieves more than one capability per invocation of +.BR \%@TPUT@ "." +The capabilities must be passed to +.B \%@TPUT@ +from the standard input stream instead of from the command line (see section \*(``EXAMPLES\*('' below). Only one @@ -356,13 +391,14 @@ exit statuses (see section \*(``EXIT STATUS\*('' below). .IP Some capabilities use string parameters rather than numeric ones. -\fB\%@TPUT@\fP employs a built-in table and the presence of parameters +.B \%@TPUT@ +employs a built-in table and the presence of parameters in its input to decide how to interpret them, and whether to use \fB\%tparm\fP(3X). .TP .BI \-T\ type indicates the terminal's -.IR type . +.IR type "." Normally this option is unnecessary, because a default is taken from the .I TERM @@ -374,19 +410,30 @@ and .I \%COLUMNS are also ignored. .TP +.B \-v +causes +.B \%@TPUT@ +to operate verbosely, +reporting warnings. +.TP .B \-V reports the version of .I \%ncurses -associated with \fB\%@TPUT@\fP, +associated with +.BR \%@TPUT@ "," and exits with a successful status. .TP .B \-x prevents -.RB \%\*(`` "@TPUT@ clear" \*('' +\%\*(``\c +.B "@TPUT@ clear\c" +\*('' from attempting to clear the scrollback buffer. .SH EXIT STATUS Normally, -one should interpret \fB\%@TPUT@\fP's exit statuses as follows. +one should interpret +.BR \%@TPUT@ "'s" +exit statuses as follows. .PP .if n .ne 3 .if t .ne 2 @@ -420,30 +467,37 @@ _ 4 some operands not interpreted .TE .SH ENVIRONMENT -\fB@TPUT@\fP reads one environment variable. -.TP 8n \" "TERM" + 2n + adjustment for PDF +.B \%@TPUT@ +reads up to three environment variables +if the +.B \-T +option is not specified. +.TP 9n \" "COLUMNS" + 2n +.I COLUMNS +specifies the width of the screen in characters. +.TP +.I LINES +specifies the height of the screen in characters. +.TP .I TERM denotes the terminal type. Each terminal type is distinct, though many are similar. -The -.B \-T -option overrides its value. .SH FILES .TP .I @DATADIR@/tabset tab stop initialization database .TP -.I \*d +.I @TERMINFO@ compiled terminal description database .SH PORTABILITY Over time .I \%ncurses -\fB\%@TPUT@\fP +.B \%@TPUT@ has differed from that of System\ V in two important respects, one now mostly historical. .bP -\%\*(``\fB@TPUT@\fP +.RB \%\*(`` @TPUT@ .IR cap-code \*('' writes to the standard output, which need not be a terminal device. @@ -452,16 +506,16 @@ the operands that manipulate terminal modes might not use the standard output. .IP System\ V -.BR tput 's +.IR tput 's .B init and .B \%reset operands use logic from 4.1cBSD -.BR tset , +.IR tset "," manipulating terminal modes. It checks the same file descriptors (and -.IR \%/dev/tty ) +.IR \%/dev/tty ")" for association with a terminal device as .I \%ncurses now does, @@ -474,18 +528,21 @@ Until .I \%ncurses 6.1 (see section \*(``HISTORY\*('' below), -\fB\%@TPUT@\fP did not modify terminal modes. +.B \%@TPUT@ +did not modify terminal modes. It now employs a scheme similar to System\ V, -using functions shared with \fB\%@TSET@\fP +using functions shared with +.B \%@TSET@ (and ultimately based on 4.4BSD -.BR tset ). +.IR tset ). If it is not able to open a terminal (for instance, when run by \fIcron\fP(1)), -\fB\%@TPUT@\fP exits with an error status. +.B \%@TPUT@ +exits with an error status. .bP System\ V -.B tput +.I tput assumes that the type of a .I cap-code operand is numeric if all the characters of its value are decimal @@ -499,10 +556,12 @@ Most implementations that provide support for .I cap-code operands use the \fB\%tparm\fP(3X) function to expand its parameters. That function expects a mixture of numeric and string parameters, -requiring \fB\%@TPUT@\fP to know which type to use. +requiring +.B \%@TPUT@ +to know which type to use. .IP .I \%ncurses -\fB\%@TPUT@\fP +.B \%@TPUT@ uses a table to determine the parameter types for the standard .I cap-code @@ -517,9 +576,9 @@ An OpenBSD developer adapted the internal library function from .I \%ncurses to port NetBSD's .IR termcap -based -.B tput +.I tput to -.IR \%term\%info , +.IR \%term\%info "," and modified it to interpret multiple .I cap-codes (and parameters) @@ -528,7 +587,9 @@ Portable applications should not rely upon this feature; .I \%ncurses offers it to support applications written specifically for OpenBSD. .PP -This implementation, +.IR \%ncurses 's +implementation of +.IR tput ","\" generic unlike others, accepts both .I termcap @@ -540,7 +601,6 @@ if support is compiled in. In that case, however, -the predefined .I termcap and .I \%term\%info @@ -561,17 +621,17 @@ to but .B \%parm_delete_line to -.IR \%term\%info . +.IR \%term\%info "." .I termcap uses the code .B DL for -.BR \%parm_delete_line . +.BR \%parm_delete_line "." .I \%term\%info uses the code .B dl1 for -.BR \%delete_line . +.BR \%delete_line "." .bP The .I cap-code @@ -583,17 +643,17 @@ to but .B \%clr_eos to -.IR \%term\%info . +.IR \%term\%info "." .I termcap uses the code .B cd for -.BR \%clr_eos . +.BR \%clr_eos "." .I \%term\%info uses the code .B rmdc for -.BR \%exit_delete_mode . +.BR \%exit_delete_mode "." .PP The .B \%longname @@ -609,16 +669,16 @@ AT&T/USL before SVr4 (1989). Later, 4.3BSD-Reno (1990) added support for -.BR \%longname , +.BR \%longname "," .\" longname was added in October 1989. and in 1994, NetBSD added support for the parameter-substitution features. .PP -IEEE Std 1003.1/The Open Group Base Specifications Issue 7 +IEEE Std 1003.1/The Open Group Base Specifications Issue\ 7 (POSIX.1-2008) documents only the -.BR clear , -.BR init , +.BR clear "," +.BR init "," and .B \%reset operands. @@ -628,15 +688,15 @@ A few observations of interest arise from that selection. supports .B clear as it does any other standard -.IR cap-code . +.IR cap-code "." The others .RB ( init and -.BR \%longname ) +.BR \%longname ")" do not correspond to terminal capabilities. .bP The -.B tput +.I tput on SVr4-based systems such as Solaris, IRIX64, and HP-UX, @@ -650,11 +710,11 @@ A few platforms such as FreeBSD recognize codes rather than .I \%term\%info capability codes in their respective -.B tput +.I tput commands. Since 2010, NetBSD's -.B tput +.I tput uses .I \%term\%info codes. @@ -668,7 +728,7 @@ codes. Beginning in 2021, FreeBSD uses .I \%ncurses -.BR tput , +.BR tput "," configured for both .I \%term\%info (tested first) @@ -681,7 +741,7 @@ Because (apparently) all Unix systems support the full set of capability codes, the reason for documenting only a few may not be apparent. .bP -X/Open Curses Issue 7 documents +X/Open Curses Issue\ 7 documents .B tput differently, with @@ -690,23 +750,23 @@ and the other features used in this implementation. .bP That is, there are two standards for -.BR tput : +.IR tput ":" POSIX (a subset) and X/Open Curses (the full implementation). POSIX documents a subset to avoid the complication of including X/Open Curses and the terminal capability database. .bP While it is certainly possible to write a -.B tput +.I tput program without using -.IR curses , +.IR curses "," no system with a .I curses implementation provides a -.B tput +.I tput utility that does not also support standard -.IR cap-codes . +.IR cap-codes "." .PP -X/Open Curses Issue 7 (2009) is the first version to document utilities. +X/Open Curses Issue\ 7 (2009) is the first version to document utilities. However that part of X/Open Curses does not follow existing practice (that is, System\ V @@ -727,14 +787,14 @@ in the database. That likely is a documentation error, mistaking the \*(``\-1\*('' written to the standard output to indicate -an absent or cancelled numeric capability for an (unsigned) exit status. +an absent or canceled numeric capability for an (unsigned) exit status. .PP The various System\ V implementations (AIX, HP-UX, Solaris) use the same exit statuses as -.IR \%ncurses . +.IR \%ncurses "." .PP NetBSD .I curses @@ -743,7 +803,7 @@ documents exit statuses that correspond to neither nor X/Open Curses. .SH HISTORY Bill Joy wrote a -.B tput +.I tput command during development of 4BSD in October 1980. This initial version only cleared the screen, and did not ship with official distributions. @@ -753,15 +813,15 @@ and did not ship with official distributions. .\" See Spinellis's "unix-history-repo" on GitHub. .PP System\ V developed a different -.B tput +.I tput command. .bP SVr2 (1984) provided a rudimentary -.B tput +.I tput that checked the parameter against each -predefined capability and returned the corresponding value. +capability name and returned the corresponding value. This version of -.B tput +.I tput did not use \fB\%tparm\fP(3X) for parameterized capabilities. .bP SVr3 (1987) replaced that @@ -777,7 +837,7 @@ operands incorporated the .B \%reset feature of BSD -.B tset +.I tset written by Eric Allman. .bP SVr4 (1989) added color initialization by using the @@ -791,19 +851,21 @@ capabilities in its logic. .PP Keith Bostic refactored BSD -.B tput -for shipment in 4.3BSD-Tahoe (1988), -then replaced it the next year with a new implementation based on -System\ V -.BR tput . -Bostic's version similarly accepted some parameters named for +.I tput +for shipment in 4.3BSD-Reno (1990), +making it follow the interface of System\ V +.I tput +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/tput/tput.c +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=Net2/usr/src/usr.bin/tput/tput.c +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/src/usr.bin/tput/tput.c +by accepting some parameters named for .I \%term\%info (pseudo-)capabilities: -.BR clear , -.BR init , -.BR \%longname , +.BR clear "," +.BR init "," +.BR \%longname "," and -.BR \%reset . +.BR \%reset "." However, because he had only .I termcap @@ -813,22 +875,22 @@ it accepted codes for other capabilities. Also, Bostic's BSD -.B tput +.I tput did not modify the terminal modes as the earlier BSD -.B tset +.I tset had done. -.PP At the same time, Bostic added a shell script named \*(``clear\*('' that used -.B tput +.I tput to clear the screen. -Both of these appeared in 4.4BSD, -becoming the \*(``modern\*('' BSD implementation of -.BR tput . +.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/tput/clear.sh +These became the \*(``modern\*('' BSD implementation of +.IR tput "." .PP The origin of .I \%ncurses -\fB\%@TPUT@\fP lies outside both System\ V and BSD, +.B \%@TPUT@ +lies outside both System\ V and BSD, in Ross Ridge's .I \%mytinfo package, @@ -838,10 +900,10 @@ in December 1992. Ridge's program made more sophisticated use of the terminal capabilities than the BSD program. Eric Raymond used that -.B tput +.I tput program (and other parts of -.IR \%mytinfo ) +.IR \%mytinfo ")" in .I \%ncurses in June 1995. @@ -853,13 +915,19 @@ were handled. Before .I \%ncurses 6.1 (2018), -its \fB\%@TSET@\fP and \fB\%@TPUT@\fP utilities differed. +its +.B \%@TSET@ +and +.B \%@TPUT@ +utilities differed. .bP -\fB\%@TSET@\fP was more effective, -resetting the terminal modes and special characters. +.B \%@TSET@ +was more effective, +resetting the terminal's modes and special input characters. .bP On the other hand, -\fB\%@TSET@\fP's repertoire of terminal capabilities for resetting the +.BR \%@TSET@ "'s" +repertoire of terminal capabilities for resetting the terminal was more limited; it had only equivalents of .B \%reset_1string @@ -869,12 +937,15 @@ it had only equivalents of and .B \%reset_file .RB ( rf ), -and not the tab stop and margin update features of \fB\%@TPUT@\fP. +and not the tab stop and margin update features of +.BR \%@TPUT@ "." .PP The -.B \%reset -program is traditionally an alias for \fB\%@TSET@\fP due to its ability -to reset terminal modes and special characters. +.I \%reset +program is traditionally an alias for +.B \%@TSET@ +due to its ability +to reset the terminal's modes and special input characters. .PP As of .I \%ncurses @@ -882,14 +953,24 @@ As of the \*(``reset\*('' features of the two programs are (mostly) the same. Two minor differences remain. .bP -The \fB\%@TSET@\fP program waits one second when resetting, -in case the terminal happens to be a hardware device. +When issuing a reset, +the +.B \%@TSET@ +program +checks whether the device appears to be a pseudoterminal +(as might be used by a terminal emulator program), +and, +if it does not, +waits one second in case it is communicating with a hardware terminal. .bP The two programs write the terminal initialization strings to different streams; that is, -standard error for \fB\%@TSET@\fP and -standard output for \fB\%@TPUT@\fP. +standard error for +.B \%@TSET@ +and +standard output for +.BR \%@TPUT@ "." .SH EXAMPLES .TP .B "@TPUT@ init" @@ -914,7 +995,7 @@ environment variable. Set cursor to normal visibility. .TP .B "@TPUT@ home" -Move the cursor to row 0, +Move the cursor to line 0, column 0: the upper left corner of the screen, usually known as the \*(``home\*('' cursor position. @@ -935,7 +1016,7 @@ Report the number of columns used by an ADM-3A terminal. Set shell variables to capability values: .B strong and -.BR normal , +.BR normal "," to begin and end, respectively, stand-out mode for the terminal. @@ -951,7 +1032,7 @@ printf "${strong}Username:${normal} " Indicate via exit status whether the terminal is a hard copy device. .TP .B "@TPUT@ cup 23 4" -Move the cursor to row 23, +Move the cursor to line 23, column 4. .TP .B "@TPUT@ cup" @@ -976,11 +1057,13 @@ The option can be profitably used with a shell \*(``here document\*(''. .IP .EX +.nf .RB $\ "@TPUT@ \-S <<!" .RB >\ clear .RB >\ "cup 10 10" .RB >\ bold .RB >\ ! +.fi .EE .IP The foregoing @@ -993,7 +1076,9 @@ mode. .TP .B "@TPUT@ clear cup 10 10 bold" Perform the same actions as the foregoing -.RB \%\*(`` "@TPUT@ \-S" \*('' +\%\*(``\c +.B "@TPUT@ \-S\c" +\*('' example. .SH SEE ALSO \fB\%@CLEAR@\fP(1), @@ -1001,4 +1086,5 @@ example. \fB\%@TABS@\fP(1), \fB\%@TSET@\fP(1), \fB\%curs_termcap\fP(3X), -\fB\%terminfo\fP(5) +\fB\%terminfo\fP(5), +\fB\%user_caps\fP(5) diff --git a/contrib/ncurses/man/tset.1 b/contrib/ncurses/man/tset.1 index 185227dcdb03..3e7b0fc10c73 100644 --- a/contrib/ncurses/man/tset.1 +++ b/contrib/ncurses/man/tset.1 @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,8 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: tset.1,v 1.85 2024/04/27 17:57:47 tom Exp $ -.TH @TSET@ 1 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" +.\" $Id: tset.1,v 1.94 2025/01/19 00:51:54 tom Exp $ +.TH @TSET@ 1 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -47,7 +47,6 @@ .el .IP \(bu 2 .. . -.ds d @TERMINFO@ .SH NAME \fB\%@TSET@\fP, \fB\%@RESET@\fP \- @@ -124,7 +123,10 @@ the backspace, interrupt and line kill characters unless the \*(``\fB\-I\fP\*('' option is enabled, the terminal and tab \fIinitialization\fP strings are sent to the standard error output, -and \fB@TSET@\fP waits one second (in case a hardware reset was issued). +and, +if the terminal device does not appear to be a pseudoterminal +(as might be used by a terminal emulator program), +\fB@TSET@\fP waits one second in case a hardware reset was issued. .bP Finally, if the erase, interrupt and line kill characters have changed, or are not set to their default values, their values are displayed to the @@ -133,13 +135,13 @@ standard error output. When invoked as \fB@RESET@\fP, \fB@TSET@\fP sets the terminal modes to \*(``sane\*('' values: .bP -sets cooked and echo modes, +sets canonical (\*(``cooked\*('') and echo modes, .bP turns off cbreak and raw modes, .bP turns on newline translation and .bP -resets any unset special characters to their default values +resets special input characters to their default values .PP before doing the terminal initialization described above. @@ -314,12 +316,12 @@ for the terminal description. .I /etc/ttys system port name to terminal type mapping database (BSD versions only). .TP -.I \*d +.I @TERMINFO@ compiled terminal description database directory .SH PORTABILITY -Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7 +Neither IEEE Std 1003.1/The Open Group Base Specifications Issue\ 7 (POSIX.1-2008) nor -X/Open Curses Issue 7 documents \fB@TSET@\fP or \fB@RESET@\fP. +X/Open Curses Issue\ 7 documents \fB@TSET@\fP or \fB@RESET@\fP. .PP The AT&T \fBtput\fP utility (AIX, HP-UX, Solaris) incorporated the terminal-mode manipulation as well as termcap-based features diff --git a/contrib/ncurses/man/user_caps.5 b/contrib/ncurses/man/user_caps.5 index 219bbf5f9976..e4057737e9cb 100644 --- a/contrib/ncurses/man/user_caps.5 +++ b/contrib/ncurses/man/user_caps.5 @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: user_caps.5,v 1.49 2024/03/16 15:35:01 tom Exp $ -.TH user_caps 5 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" +.\" $Id: user_caps.5,v 1.60 2025/11/12 01:01:01 tom Exp $ +.TH user_caps 5 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -47,260 +47,456 @@ .. .SH NAME user_caps \- -user-defined \fIterminfo\fR capability format +user-defined \%\fIterm\%info\fP capability format .SH SYNOPSIS .B @INFOCMP@ \-x .PP .B @TIC@ \-x .SH DESCRIPTION .SS Background -Before \fI\%ncurses\fP 5.0, -terminfo databases used a \fIfixed repertoire\fP of terminal -capabilities designed for the SVr2 terminal database in 1984, -and extended in stages through SVr4 (1989), -and standardized in the Single Unix Specification beginning in 1995. +Prior to +.I \%ncurses +5.0 (1999), +.I \%term\%info +databases used a +.I "fixed repertoire" +of terminal capabilities designed +for the SVr2 terminal database in 1984, +added to in stages through SVr4 (1989), +and standardized in X/Open Curses starting in 1995. +.\" That date is a surmise based on the capability list appearing in +.\" Issue 4, Version 2 (1996). That list is not in man page format in +.\" the standard, so lacks a "HISTORY" section. However, `tigetstr()` +.\" and `tputs()` are identified in the same document as new to Issue 4, +.\" so GBR conjectures that the list came in at the same time. +.\" +.\" TED: the list is reflected in term.h, seen in examples from AIX 3 and 4, +.\" HP-UX 9, OSF/1, Solaris 2.4, dating from 1992-1994 -- all before 1996. +.\" The AIX 4 file has copyright dates starting in 1984; +.\" the Solaris file cites 1988 (the others have no copyright comments). +.\" Those term.h files note in a comment that it is generated by a script with +.\" a data file, i.e., +.\" term.h - this file is automatically made from caps and maketerm.ex. +.\" illumos-gate has related source, with a "caps" file having AT&T copyright +.\" for 1988, and UCB copyright for 1982, 1986, 1988. That 1982 is interesting +.\" (hinting that something may have been in the initial releases of System V) +.\" but the first release with tic appears to be SVr2 in 1984. .PP -Most of the \fIextensions\fP in this fixed repertoire were additions -to the tables of Boolean, numeric and string capabilities. -Rather than change the meaning of an existing capability, a new name was added. -The terminfo database uses a binary format; binary compatibility was -ensured by using a header which gave the number of items in the -tables for each type of capability. -The standardization was incomplete: +Most such additions to this fixed repertoire +suppelmented the tables of Boolean, +numeric, +and string capabilities. +Rather than changing the meaning of an existing capability, +a new name was added. +The +.I \%term\%info +database uses a binary format; +binary compatibility was ensured +by using a header +that counted the number of items in the tables +for each type of capability. +Because each +.I curses +vendor extended the standard capability lists in distinct ways, +a library could be programmed to recognize only compiled +.I \%term\%info +entries that it was prepared to interpret. +Standardization was incomplete. .bP -The \fIbinary format\fP itself is not described -in the X/Open Curses documentation. -Only the \fIsource format\fP is described. +X/Open Curses describes only the +.I source +format, +not its +.I binary +representation on disk. .IP -Library developers rely upon the SVr4 documentation, -and reverse-engineering the compiled terminfo files to match the binary format. +Library developers rely upon SVr4 documentation +and reverse engineering of compiled +.I \%term\%info +files to match the binary format. .bP -Lacking a standard for the binary format, most implementations -copy the SVr2 binary format, which uses 16-bit signed integers, +Lacking a standard for the binary format, +most implementations copy the SVr2 binary format, +which uses 16-bit signed integers, and is limited to 4096-byte entries. .IP -The format cannot represent very large numeric capabilities, -nor can it represent large numbers of special keyboard definitions. +The SVr2 format cannot represent very large numeric capability values, +nor can it represent large numbers of key definitions, +as are required to distinguish multiple modifier keys used +in combination with a function key. .bP The tables of capability names differ between implementations. .IP -Although they \fImay\fP provide all of the standard capability names, -the position in the tables differs because some features were added as needed, -while others were added (out of order) to comply with X/Open Curses. +Although they +.I may +provide all of the standard capability names, +each arranges its table entries differently +because some features were added as needed, +while others were added +\(em out of order \(em +for X/Open Curses conformance. .IP -While \fI\%ncurses\fP' repertoire of predefined capabilities is closest -to Solaris, -Solaris's terminfo database has a few differences from -the list published by X/Open Curses. -For example, -\fI\%ncurses\fP can be configured with tables which match the terminal -databases for AIX, HP-UX or OSF/1, +While +.IR ncurses 's +capability repertoire is closest to that of Solaris, +the set of capabilities supported by +each vendor's +.I \%term\%info +database differs +from the list published by X/Open Curses. +.I \%ncurses +can be configured +with tables that match the terminal databases +for AIX, +HP-UX, +or OSF/1, rather than the default Solaris-like configuration. .bP -In SVr4 curses and \fI\%ncurses\fP, -the terminal database is defined at compile-time using a text file -which lists the different terminal capabilities. +In SVr4 +.I curses +and +.IR \%ncurses "," +the terminal database is defined at compile time +by interpolating a text file +that lists the different terminal capabilities. .IP -In principle, the text-file can be extended, -but doing this requires recompiling and reinstalling the library. -The text-file used in \fI\%ncurses\fP for terminal capabilities includes -details for various systems past the documented X/Open Curses features. -For example, \fI\%ncurses\fP supports these capabilities in each configuration: +In principle, +the text file can be extended, +but doing so requires recompiling and reinstalling the library. +The text file used by +.I \%ncurses +for terminal capabilities includes details of extensions +to X/Open Curses +made by various systems. +For example, +.I \%ncurses +supports the following nonstandard capabilities in each configuration. .RS 8 .TP 5 -memory_lock -(meml) +.B memory_lock +.RB ( meml ) lock memory above cursor .TP 5 -memory_unlock -(memu) +.B memory_unlock +.RB ( memu ) unlock memory .TP 5 -box_chars_1 -(box1) +.B box_chars_1 +.RB ( box1 ) box characters primary set .RE .IP The memory lock/unlock capabilities were included because they were used -in the X11R6 terminal description for \fBxterm\fP(1). -The \fIbox1\fP capability is used in @TIC@ to help with terminal descriptions -written for AIX. +in the X11R6 terminal description for \fIxterm\fP(1). +.B \%@TIC@ +uses the +.B box1 +capability to cope with terminal descriptions written for AIX. .PP -During the 1990s, some users were reluctant to use terminfo -in spite of its performance advantages over termcap: +During the 1990s, +some application developers were reluctant to use +.I \%term\%info +in spite of its performance +(and other) +advantages over +.IR termcap "." .bP -The fixed repertoire prevented users from adding features -for unanticipated terminal improvements +The fixed repertoire prevented users from adding support +for terminal features unanticipated by X/Open Curses (or required them to reuse existing capabilities as a workaround). .bP The limitation to 16-bit signed integers was also mentioned. -Because termcap stores everything as a string, +Because +.I termcap +stores everything as a string, it could represent larger numbers. .PP -Although termcap's extensibility was rarely used -(it was never the \fIspeaker\fP who had actually used the feature), +Although +.IR termcap 's +extensibility was rarely used +\(em the claimant was never an implementor +who had actually exercised it \(em the criticism had a point. -\fI\%ncurses\fP 5.0 provided a way to detect nonstandard capabilities, -determine their -type and optionally store and retrieve them in a way which did not interfere -with other applications. -These are referred to as \fIuser-defined capabilities\fP because no -modifications to the toolset's predefined capability names are needed. +.I \%ncurses +5.0 provided a way to detect nonstandard capabilities, +to determine their type, +and to optionally store and retrieve them +in a way that did not interfere with other applications. +.I ncurses +terms these +.I "user-defined capabilities" +because no modifications +to the standard capability list are needed. .PP -The \fI\%ncurses\fP utilities \fB@TIC@\fP and \fB@INFOCMP@\fP have a -command-line option \*(``\-x\*('' to control whether the nonstandard -capabilities are stored or retrieved. -A library function \fBuse_extended_names\fP -is provided for the same purpose. +The +.I \%ncurses +utilities +.B \%@TIC@ +and +.B \%@INFOCMP@ +have a command-line option \*(``\-x\*('' +to control whether the nonstandard capabilities +are stored or retrieved. +.I \%ncurses +provides \fBuse_extended_names\fP(3X) to programs for the same purpose. .PP -When compiling a terminal database, if \*(``\-x\*('' is set, -\fB@TIC@\fP will store a user-defined capability if the capability name is not -one of the predefined names. +When compiling a terminal database, if \*(``\-x\*('' is used, +.B \%@TIC@ +stores a user-defined capability +if the capability name is not standard. .PP -Because \fI\%ncurses\fP provides a termcap library interface, -these user-defined capabilities may be visible to termcap applications: +Because +.I \%ncurses +provides a +.I termcap +library interface, +these user-defined capabilities may be visible to +.I termcap +applications. .bP -The termcap interface (like all implementations of termcap) -requires that the capability names are 2-characters. +The +.I termcap +interface +(like all implementations of +.IR termcap ) +restricts capability names to two characters. .IP -When the capability is simple enough for use in a termcap application, -it is provided as a 2-character name. +When the capability is simple enough for use in a +.I termcap +application, +it is provided as a two-character name. .bP -There are other -user-defined capabilities which refer to features not usable in termcap, -e.g., parameterized strings that use more than two parameters -or use more than the trivial expression support provided by termcap. -For these, the terminfo database should have only capability names with -3 or more characters. +Other user-defined capabilities employ features not usable in +.IR termcap "," +such as parameterized strings that use more than two parameters +or require more powerful expressions than +.I termcap +supports. +Such capabilities should, +in the +.I \%term\%info +database, +have names at least three characters in length. .bP Some terminals can send distinct strings for special keys (cursor-, keypad- or function-keys) depending on modifier keys (shift, control, etc.). -While terminfo and termcap have a set of 60 predefined function-key names, +While +.I \%term\%info +and +.I termcap +define a set of sixty function key names, to which a series of keys can be assigned, that is insufficient for more than a dozen keys multiplied by more than a couple of modifier combinations. -The \fI\%ncurses\fP database uses a convention based on \fBxterm\fP(1) +The +.I \%ncurses +database uses a convention based on \fIxterm\fP(1) to provide extended special-key names. .IP -Fitting that into termcap's limitation of 2-character names +Fitting that into +.IR termcap 's +limitation of 2-character names would be pointless. -These extended keys are available only with terminfo. +These extended keys are available only with +.IR \%term\%info "." .SS "Recognized Capabilities" -The \fI\%ncurses\fP library uses the user-definable capabilities. -While the terminfo database may have other extensions, -\fI\%ncurses\fP makes explicit checks for these: +The +.I \%ncurses +library employs user-definable capabilities. +While the +.I \%term\%info +database may have other extensions, +.I \%ncurses +makes explicit checks for the following. .RS 3 .TP 3 -AX -\fIBoolean\fP, asserts that the terminal interprets SGR 39 and SGR 49 -by resetting the foreground and background color, respectively, to the default. +.B AX +(Boolean) +asserts that the terminal interprets SGR 39 and SGR 49 +by resetting the foreground and background colors, +respectively, +to the default. .IP -This is a feature recognized by the \fBscreen\fP program as well. +\fBscreen\fP(1) +recognizes this capability as well. .TP 3 -E3 -\fIstring\fP, tells how to clear the terminal's scrollback buffer. -When present, the \fBclear\fP(1) program sends this before clearing -the terminal. +.B E3 +(string) +tells an application how to clear the terminal's scrollback buffer. +When present, +the \fBclear\fP(1) program sends this before clearing the terminal. .IP -The command \*(``\fBtput clear\fP\*('' does the same thing. +The command +.RB \*(`` "tput clear" \*('' +does the same thing. .TP 3 -NQ -\fIBoolean\fP, -used to suppress a consistency check in @TIC@ for the \fI\%ncurses\fP -capabilities -in user6 through user9 (u6, u7, u8 and u9) -which tell how to query the terminal's cursor position +.B NQ +(Boolean) +suppresses a consistency check in +.B \%@TIC@ +for the +.I \%ncurses +string capabilities +.B user6 +.RB ( u6 ) +through +.B user9 +.RB ( u9 ), +which tell an application how to query the terminal's cursor position and its device attributes. .TP 3 -RGB -\fIBoolean\fP, \fInumber\fP \fBor\fP \fIstring\fP, -used to assert that the -\fBset_a_foreground\fP and -\fBset_a_background\fP capabilities correspond to \fIdirect colors\fP, +.B RGB +(Boolean, +numeric, +or +string) +asserts that the +.B \%set_a_foreground +.RB ( setaf ) +and +.B \%set_a_background +.RB ( setab ) +capabilities employ +.IR "direct colors" "," using an RGB (red/green/blue) convention. -This capability allows the \fBcolor_content\fP function to -return appropriate values without requiring the application -to initialize colors using \fBinit_color\fP. +This capability allows \fBcolor_content\fP(3X) +to return appropriate values +without requiring the application +to initialize colors using \fBinit_color\fP(3X). .IP -The capability type determines the values which \fI\%ncurses\fP sees: +The capability type determines the values +.I \%ncurses +sees. .RS 3 .TP 3 -\fIBoolean\fP -implies that the number of bits for red, green and blue are the same. -Using the maximum number of colors, -\fI\%ncurses\fP adds two, -divides that sum by three, +Boolean +implies that the number of bits for red, +green, +and blue are the same. +Starting with the value of the capability +.B max_colors +.RB \%( colors ; +.I termcap: +.BR co ), +.I \%ncurses +adds two, +divides the sum by three, and assigns the result to red, -green and blue in that order. +green, +and blue, +in that order. .IP -If the number of bits needed for the number of colors is not a multiple -of three, the blue (and green) components lose in comparison to red. +If the number of bits needed for the number of colors +is not a multiple of three, +the blue (and green) color channels lose in comparison to red. .TP 3 -\fInumber\fP -tells \fI\%ncurses\fP what result to add to red, green and blue. -If \fI\%ncurses\fP runs out of bits, -blue (and green) lose just as in the \fIBoolean\fP case. +numeric +tells +.I \%ncurses +what result to add to red, +green, +and blue. +If +.I \%ncurses +runs out of bits, +blue (and green) lose just as in the Boolean case. .TP 3 -\fIstring\fP -explicitly list the number of bits used for red, green and blue components +string +specify the quantity of bits used for +red, +green, +and blue color channels as a slash-separated list of decimal integers. .RE .IP Because there are several RGB encodings in use, -applications which make assumptions about the number of bits per color +applications that make assumptions +about the number of bits per color channel are unlikely to work reliably. -As a trivial case, for example, one could define \fBRGB#1\fP -to represent the standard eight ANSI colors, i.e., one bit per color. +As a trivial case, +one could define +.B RGB#1 +to represent the standard eight ANSI\ X3.64/ECMA-48/ISO\ 6429 colors +using one bit per color channel. .TP 3 -U8 -\fInumber\fP, -asserts that \fI\%ncurses\fP must use Unicode values for line-drawing -characters, -and that it should ignore the alternate character set capabilities +.B U8 +(numeric) +asserts whether +.I \%ncurses +must use Unicode values for line-drawing characters, +and that it should ignore the alternate character set (ACS) capabilities when the locale uses UTF-8 encoding. -For more information, see the discussion of -\fBNCURSES_NO_UTF8_ACS\fP in \fB\%ncurses\fP(3X). +See the discussion of +.B \%NCURSES_NO_UTF8_ACS +in section \*(``ENVIRONMENT\*('' of \fB\%ncurses\fP(3X). .IP Set this capability to a nonzero value to enable it. .TP 3 -XM -\fIstring\fP, -override \fI\%ncurses\fP's built-in string which -enables/disables \fBxterm\fP(1) mouse mode. +.B XM +(string) +override +.IR \%ncurses 's +built-in string that directs \fIxterm\fP(1) +to enable or disable mouse mode. .IP -\fI\%ncurses\fP sends a character sequence to the terminal to initialize mouse mode, -and when the user clicks the mouse buttons or (in certain modes) moves the -mouse, handles the characters sent back by the terminal to tell it what -was done with the mouse. +.I \%ncurses +sends a character sequence to the terminal to initialize mouse mode, +and when the user clicks the mouse buttons or +(in certain modes) +moves the mouse, +handles the characters sent back by the terminal +to tell the application what was done with the mouse. .IP -The mouse protocol is enabled when -the \fImask\fP passed in the \fBmousemask\fP function is nonzero. +The mouse protocol is enabled +when the +.I \fImask\fP +argument to the \fBmousemask\fP(3X) function is nonzero. By default, -\fI\%ncurses\fP handles the responses for the X11 xterm mouse protocol. -It also knows about the \fISGR 1006\fP xterm mouse protocol, -but must to be told to look for this specifically. -It will not be able to guess which mode is used, +.I \%ncurses +handles the responses for the X11 +.I xterm +mouse protocol. +It also knows about the SGR\ 1006 +.I xterm +mouse protocol, +but must to be told to look for it specifically. +.I \%ncurses +is not be able to guess which of the two modes is used, because the responses are enough alike that only confusion would result. .IP -The \fBXM\fP capability has a single parameter. -If nonzero, the mouse protocol should be enabled. -If zero, the mouse protocol should be disabled. -\fI\%ncurses\fP inspects this capability if it is present, +The +.B XM +capability has a single numeric parameter. +If nonzero, +the mouse protocol should be enabled. +If zero, +the mouse protocol should be disabled. +.I \%ncurses +inspects this capability if it is present, to see whether the 1006 protocol is used. -If so, it expects the responses to use the \fISGR 1006\fP xterm mouse protocol. +If so, +it expects the responses to use the SGR\ 1006 +.I xterm +mouse protocol. .IP -The xterm mouse protocol is used by other terminal emulators. -The terminal database uses building-blocks for the various xterm mouse -protocols which can be used in customized terminal descriptions. +The +.I xterm +mouse protocol is used by other terminal emulators. +The terminal database uses building blocks for the various +.I xterm +mouse protocols usable in customized terminal descriptions. .IP -The terminal database building blocks for this mouse -feature also have an experimental capability \fIxm\fP. -The \*(``xm\*('' capability describes the mouse response. -Currently there is no interpreter which would use this -information to make the mouse support completely data-driven. +The terminal database building blocks for this mouse feature +also have an experimental capability, +.BR xm "," +that describes the mouse response. +No known interpreter uses this information, +which could make mouse support completely data-driven. .IP -\fIxm\fP shows the format of the mouse responses. -In this experimental capability, the parameters are +.B xm +shows the format of the mouse responses. +In this experimental capability, +the parameters are as follows. .RS 5 .TP 5 .I p1 @@ -329,8 +525,10 @@ x-ordinate ending region .RE .IP Here are examples from the terminal database for the most commonly used -xterm mouse protocols: +.I xterm +mouse protocols. .IP +.EX .nf xterm+x11mouse|X11 xterm mouse protocol, kmous=\eE[M, XM=\eE[?1000%?%p1%{1}%=%th%el%;, @@ -338,7 +536,7 @@ xterm mouse protocols: %?%p4%t%p3%e%{3}%;%'\ '%+%c %p2%'!'%+%c %p1%'!'%+%c, - +.IP xterm+sm+1006|xterm SGR-mouse, kmous=\eE[<, XM=\eE[?1006;1000%?%p1%{1}%=%th%el%;, xm=\eE[<%i%p3%d; @@ -346,18 +544,20 @@ xterm mouse protocols: %p2%d; %?%p4%tM%em%;, .fi +.EE . .SS "Extended Key Definitions" Several terminals provide the ability to send distinct strings for combinations of modified special keys. There is no standard for what those keys can send. .PP -Since 1999, \fBxterm\fP(1) has supported +Since 1999, \fIxterm\fP(1) has supported \fIshift\fP, \fIcontrol\fP, \fIalt\fP, and \fImeta\fP modifiers which produce distinct special-key strings. In a terminal description, \fI\%ncurses\fP has no special knowledge of the modifiers used. -Applications can use the \fInaming convention\fP established for \fBxterm\fP +Applications can use the \fInaming convention\fP established for +\fIxterm\fP to find these special keys in the terminal description. .PP Starting with the @@ -403,9 +603,10 @@ These are the suffixes used to denote the modifiers: .PP .RS 5 .TS -tab(/) ; -l l . -\fBValue\fP/\fBDescription\fP +tab(/); +Lb Lb +L L . +Value/Description _ 2/Shift 3/Alt @@ -425,8 +626,14 @@ _ .TE .RE .PP -None of these are predefined; terminal descriptions can refer to \fInames\fP -which \fI\%ncurses\fP will allocate at runtime to \fIkey-codes\fP. +.I ncurses +defines no capabilities for modified F-keys; +terminal descriptions can refer to +.I names +that +.I \%ncurses +allocates at runtime to +.IR "key codes" "." To use these keys in an \fI\%ncurses\fP program, an application could do this: .bP @@ -438,27 +645,34 @@ ask \fBkey_defined\fP(3X) for the \fIkey-code\fP which would be returned for those keys by \fBwgetch\fP(3X). .\" .SH PORTABILITY -The \*(``\-x\*('' extension feature of \fB@TIC@\fP and \fB@INFOCMP@\fP -has been adopted in NetBSD curses. +The \*(``\-x\*('' extension feature of +.B \%@TIC@ +and +.B \%@INFOCMP@ +has been adopted in NetBSD +.IR curses "." That implementation stores user-defined capabilities, but makes no use of these capabilities itself. .\" .SH AUTHORS Thomas E. Dickey .br -beginning with \fI\%ncurses\fP 5.0 (1999) +beginning with +.I \%ncurses +5.0 (1999) .\" .SH SEE ALSO \fB\%@INFOCMP@\fP(1M), \fB\%@TIC@\fP(1M) .PP -The terminal database section -.I "NCURSES USER-DEFINABLE CAPABILITIES" +In the source form of the terminal database, +.IR \%terminfo.src "," +the section \*(``NCURSES USER-DEFINABLE CAPABILITIES\*(''. summarizes commonly-used user-defined capabilities -which are used in the terminal descriptions. +employed in the terminal descriptions. Some of those features are mentioned in \fB\%screen\fP(1) or \fBtmux\fP(1). .PP .I "XTerm Control Sequences" -provides further information on the \fB\%xterm\fP(1) features +provides further information on the \fI\%xterm\fP(1) features that are used in these extended capabilities. diff --git a/contrib/ncurses/man/wresize.3x b/contrib/ncurses/man/wresize.3x index b67feada0dc0..2e22d2fb4d0e 100644 --- a/contrib/ncurses/man/wresize.3x +++ b/contrib/ncurses/man/wresize.3x @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright 2018-2023,2024 Thomas E. Dickey * +.\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2010,2015 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,8 +29,8 @@ .\" .\" Author: Thomas E. Dickey 1996 .\" -.\" $Id: wresize.3x,v 1.36 2024/03/16 15:35:01 tom Exp $ -.TH wresize 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.\" $Id: wresize.3x,v 1.47 2025/01/19 00:51:54 tom Exp $ +.TH wresize 3X 2025-01-18 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .SH NAME \fB\%wresize\fP \- resize a \fIcurses\fR window @@ -38,35 +38,94 @@ resize a \fIcurses\fR window .nf \fB#include <curses.h> .PP -\fBint wresize(WINDOW *\fIwin\fP, int \fIlines\fP, int \fIcolumns\fP); +\fBint wresize(WINDOW * \fIwin\fP, int \fIlines\fP, int \fIcolumns\fP); .fi .SH DESCRIPTION -This \fI\%ncurses\fP extension to standard \fIcurses\fP reallocates -storage for a \fIcurses\fP window to adjust its dimensions to the -specified values. +.BR \%wresize "," +an +.I \%ncurses +extension to the +.I curses +library, +reallocates storage for +.IR win , +adjusting its dimensions to +.I lines +and +.IR columns "." If either dimension is larger than its current value, -the expanded part of the window is filled with blanks merged with -current background rendition -(as set by \fB\%wbkgdset\fP(3X)). +.I \%ncurses +fills the expanded part of the window +with the window's background character as configured by +\fB\%wbkgdset\fP(3X) +(wide-character API: \fB\%wbkgrndset\fP(3X)). .SH RETURN VALUE -\fB\%wresize\fP returns \fBERR\fP upon failure and \fBOK\fP on success. -It will fail if either of the dimensions is less than or equal to zero, -or if an error occurs while (re)allocating memory for the window. +.B \%wresize +returns +.B OK +on success and +.B ERR +on failure. +It fails if either +.I lines +or +.I columns +is less than or equal to zero, +or if an error occurs while (re)allocating memory for +.IR win "." .SH NOTES -The only restriction placed on the dimensions is that they be greater -than zero. -They are \fInot\fP compared to the \fIcurses\fP screen dimensions; +The only restriction placed on the values of +.I lines +and +.I columns +is that they be greater than zero. +They are +.I not +compared to the dimensions of the +.I curses +screen; this keeps the logic of \fB\%resizeterm\fP(3X) simple. -The caller must ensure that the window's dimensions fit within the -actual screen dimensions. +The caller must ensure that +.IR win 's +dimensions fit within those of the screen. +.SH EXTENSIONS +.B \%wresize +is an \fB\%ncurses\fP(3X) extension, +and is not found in SVr4 +.IR curses "," +4.4BSD +.IR curses "," +or any other previous +.I curses +implementation. .SH PORTABILITY -It is not possible to resize windows with SVr4 \fIcurses\fP. +Applications employing +.I \%ncurses +extensions should condition their use on the visibility of the +.B \%NCURSES_VERSION +preprocessor macro. .PP -\fI\%ncurses\fP introduced this extension in mid-1995. -NetBSD \fIcurses\fP adopted it in 2001, -and \fI\%PDCurses\fP in 2003. +NetBSD +.I curses +adopted +.I \%wresize +in 2001 (release 1.5.3), +and +.I \%PDCurses +in 2004 (version 2.7). +.PP +It is not possible to resize windows with SVr4 +.IR curses "." +.SH HISTORY +Thomas Dickey developed +.I \%wresize +as an extension to BSD +.I curses +in 1988, +and brought it to +.I \%ncurses +in mid-1995. .SH AUTHORS Thomas Dickey -(from an equivalent function written in 1988 for BSD \fIcurses\fP). .SH SEE ALSO \fB\%resizeterm\fP(3X) diff --git a/contrib/ncurses/menu/Makefile.in b/contrib/ncurses/menu/Makefile.in index b623bf0eed82..5f96e76f944c 100644 --- a/contrib/ncurses/menu/Makefile.in +++ b/contrib/ncurses/menu/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.71 2021/07/03 15:45:33 tom Exp $ +# $Id: Makefile.in,v 1.76 2025/10/25 17:59:51 tom Exp $ ############################################################################## -# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2020-2024,2025 Thomas E. Dickey # # Copyright 1998-2015,2018 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -47,11 +47,14 @@ SHELL = @SHELL@ VPATH = @srcdir@ THIS = Makefile +@SET_MAKE@ +@SET_DESTDIR@ +TOP_MFLAGS = DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" + x = @EXEEXT@ o = .@OBJEXT@ MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ top_srcdir = @top_srcdir@ srcdir = @srcdir@ prefix = @prefix@ @@ -61,7 +64,9 @@ libdir = @libdir@ includedir = @includedir@ includesubdir = @includesubdir@ -INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) +INCLUDEDIR = $(DESTDIR)$(includedir@MERGE_PREFIX@)$(includesubdir) +BINDIR = $(DESTDIR)$(bindir@MERGE_PREFIX@) +LIBDIR = $(DESTDIR)$(libdir@MERGE_PREFIX@) PACKAGE = @PACKAGE@ @@ -110,7 +115,7 @@ LINK = $(LIBTOOL_LINK) LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ +SHLIB_LIST = $(SHLIB_DIRS) -lncurses@ABI_SUFFIX@ @SHLIB_LIST@ RPATH_LIST = @RPATH_LIST@ RESULTING_SYMS = @RESULTING_SYMS@ @@ -153,10 +158,13 @@ all \ libs \ install :: $(AUTO_SRC) $(LIBRARIES) +check :: + @echo "no unit-test implemented" + sources : $(AUTO_SRC) -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : +$(BINDIR) \ +$(LIBDIR) : mkdir -p $@ # make copies to simplify include-paths while still keeping menu's include @@ -207,6 +215,12 @@ distclean :: clean realclean :: distclean +# These rules are used to allow "make -n" to work on a clean directory-tree +../include/curses.h \ +../include/ncurses_def.h \ +../include/term.h : + ( cd ../include && $(MAKE) $(TOP_MFLAGS) ) + ############################################################################### # The remainder of this file is automatically generated during configuration ############################################################################### diff --git a/contrib/ncurses/menu/m_driver.c b/contrib/ncurses/menu/m_driver.c index cf2ef2fe05c6..168eeede08ee 100644 --- a/contrib/ncurses/menu/m_driver.c +++ b/contrib/ncurses/menu/m_driver.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2012,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_driver.c,v 1.37 2021/03/27 23:46:29 tom Exp $") +MODULE_ID("$Id: m_driver.c,v 1.39 2024/12/07 22:01:57 tom Exp $") /* Macros */ @@ -307,7 +307,7 @@ menu_driver(MENU *menu, int c) else { my_top_row += rdiff; - while (rdiff-- > 0 && item != 0 && item->down != 0) + while (rdiff-- > 0 && item != NULL && item->down != NULL) item = item->down; } break; @@ -320,7 +320,7 @@ menu_driver(MENU *menu, int c) else { my_top_row -= rdiff; - while (rdiff-- > 0 && item != 0 && item->up != 0) + while (rdiff-- > 0 && item != NULL && item->up != NULL) item = item->up; } break; @@ -449,7 +449,7 @@ menu_driver(MENU *menu, int c) else if (KEY_MOUSE == c) { MEVENT event; - WINDOW *uwin = Get_Menu_UserWin(menu); + const WINDOW *uwin = Get_Menu_UserWin(menu); getmouse(&event); if ((event.bstate & (BUTTON1_CLICKED | @@ -459,7 +459,7 @@ menu_driver(MENU *menu, int c) { /* we react only if the click was in the userwin, that means * inside the menu display area or at the decoration window. */ - WINDOW *sub = Get_Menu_Window(menu); + const WINDOW *sub = Get_Menu_Window(menu); int ry = event.y, rx = event.x; /* screen coordinates */ result = E_REQUEST_DENIED; @@ -548,7 +548,7 @@ menu_driver(MENU *menu, int c) result = E_UNKNOWN_COMMAND; } - if (item == 0) + if (item == NULL) { result = E_BAD_STATE; } diff --git a/contrib/ncurses/menu/m_global.c b/contrib/ncurses/menu/m_global.c index 4bc8ef8fc8c1..f50b2c805a14 100644 --- a/contrib/ncurses/menu/m_global.c +++ b/contrib/ncurses/menu/m_global.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020-2021,2023 Thomas E. Dickey * + * Copyright 2020-2023,2024 Thomas E. Dickey * * Copyright 1998-2012,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_global.c,v 1.34 2023/09/16 16:39:26 tom Exp $") +MODULE_ID("$Id: m_global.c,v 1.35 2024/12/07 23:02:27 tom Exp $") static char mark[] = "-"; /* *INDENT-OFF* */ @@ -256,13 +256,13 @@ _nc_Calculate_Text_Width(const TEXT *item /*FIXME: limit length */ ) int result = item->length; T((T_CALLED("_nc_menu_text_width(%p)"), (const void *)item)); - if (result != 0 && item->str != 0) + if (result != 0 && item->str != NULL) { - int count = (int)mbstowcs(0, item->str, 0); - wchar_t *temp = 0; + int count = (int)mbstowcs(NULL, item->str, 0); + wchar_t *temp = NULL; if (count > 0 - && (temp = typeMalloc(wchar_t, 2 + count)) != 0) + && (temp = typeMalloc(wchar_t, 2 + count)) != NULL) { int n; @@ -296,7 +296,7 @@ calculate_actual_width(MENU *menu, bool name) assert(menu && menu->items); - if (menu->items != 0) + if (menu->items != NULL) { ITEM **items; diff --git a/contrib/ncurses/menu/m_item_new.c b/contrib/ncurses/menu/m_item_new.c index 28b71caf5b07..1af18a2fcce2 100644 --- a/contrib/ncurses/menu/m_item_new.c +++ b/contrib/ncurses/menu/m_item_new.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020-2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -45,7 +45,7 @@ #endif #endif -MODULE_ID("$Id: m_item_new.c,v 1.38 2021/06/17 21:26:02 tom Exp $") +MODULE_ID("$Id: m_item_new.c,v 1.40 2024/12/07 22:01:57 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -60,16 +60,16 @@ MODULE_ID("$Id: m_item_new.c,v 1.38 2021/06/17 21:26:02 tom Exp $") static bool Is_Printable_String(const char *s) { - int result = TRUE; + bool result = TRUE; #if USE_WIDEC_SUPPORT - int count = (int)mbstowcs(0, s, 0); - wchar_t *temp = 0; + int count = (int)mbstowcs(NULL, s, 0); + wchar_t *temp = NULL; assert(s); if (count > 0 - && (temp = typeCalloc(wchar_t, (2 + (unsigned)count))) != 0) + && (temp = typeCalloc(wchar_t, (2 + (unsigned)count))) != NULL) { int n; @@ -231,7 +231,7 @@ set_menu_mark(MENU *menu, const char *mark) else { menu->mark = old_mark; - menu->marklen = (short)((old_mark != 0) ? strlen(old_mark) : 0); + menu->marklen = (short)((old_mark != NULL) ? strlen(old_mark) : 0); RETURN(E_SYSTEM_ERROR); } } diff --git a/contrib/ncurses/menu/m_item_vis.c b/contrib/ncurses/menu/m_item_vis.c index 9ae4fdb0a689..5471cad9c0ec 100644 --- a/contrib/ncurses/menu/m_item_vis.c +++ b/contrib/ncurses/menu/m_item_vis.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2004,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_vis.c,v 1.20 2021/06/17 21:20:30 tom Exp $") +MODULE_ID("$Id: m_item_vis.c,v 1.21 2024/07/27 18:14:09 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -53,7 +53,7 @@ MODULE_ID("$Id: m_item_vis.c,v 1.20 2021/06/17 21:20:30 tom Exp $") MENU_EXPORT(bool) item_visible(const ITEM *item) { - MENU *menu; + const MENU *menu; T((T_CALLED("item_visible(%p)"), (const void *)item)); if (item && diff --git a/contrib/ncurses/menu/m_pattern.c b/contrib/ncurses/menu/m_pattern.c index 6fbef236f2e6..5eb6119f842c 100644 --- a/contrib/ncurses/menu/m_pattern.c +++ b/contrib/ncurses/menu/m_pattern.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2006,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_pattern.c,v 1.20 2021/06/17 21:20:30 tom Exp $") +MODULE_ID("$Id: m_pattern.c,v 1.21 2024/12/07 23:00:37 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -57,7 +57,7 @@ menu_pattern(const MENU *menu) static char empty[] = ""; T((T_CALLED("menu_pattern(%p)"), (const void *)menu)); - returnPtr(menu ? (menu->pattern ? menu->pattern : empty) : 0); + returnPtr(menu ? (menu->pattern ? menu->pattern : empty) : NULL); } /*--------------------------------------------------------------------------- diff --git a/contrib/ncurses/menu/m_post.c b/contrib/ncurses/menu/m_post.c index cb80230433d5..1e4ce7cf46d6 100644 --- a/contrib/ncurses/menu/m_post.c +++ b/contrib/ncurses/menu/m_post.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020-2021,2022 Thomas E. Dickey * + * Copyright 2020-2022,2024 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_post.c,v 1.38 2022/09/24 09:38:44 tom Exp $") +MODULE_ID("$Id: m_post.c,v 1.41 2024/07/27 18:08:59 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -67,7 +67,7 @@ _nc_Post_Item(const MENU *menu, const ITEM *item) - it is a onevalued menu and it is the current item - or it has a selection value */ - wattron(menu->win, (int)menu->back); + wattr_on(menu->win, menu->back, NULL); if (item->value || (item == menu->curitem)) { if (menu->marklen) @@ -79,13 +79,13 @@ _nc_Post_Item(const MENU *menu, const ITEM *item) item. */ if (!(menu->opt & O_ONEVALUE) && item->value && item != menu->curitem) { - wattron(menu->win, (int)menu->fore); + wattr_on(menu->win, menu->fore, NULL); isfore = TRUE; } waddstr(menu->win, menu->mark); if (isfore) { - wattron(menu->win, (int)menu->fore); + wattr_on(menu->win, menu->fore, NULL); isfore = FALSE; } } @@ -93,7 +93,7 @@ _nc_Post_Item(const MENU *menu, const ITEM *item) else /* otherwise we have to wipe out the marker area */ for (ch = ' ', i = menu->marklen; i > 0; i--) waddch(menu->win, ch); - wattroff(menu->win, (int)menu->back); + wattr_off(menu->win, menu->back, NULL); count += menu->marklen; /* First we have to calculate the attribute depending on selectability @@ -101,19 +101,19 @@ _nc_Post_Item(const MENU *menu, const ITEM *item) */ if (!(item->opt & O_SELECTABLE)) { - wattron(menu->win, (int)menu->grey); + wattr_on(menu->win, menu->grey, NULL); isgrey = TRUE; } else { if (item->value || item == menu->curitem) { - wattron(menu->win, (int)menu->fore); + wattr_on(menu->win, menu->fore, NULL); isfore = TRUE; } else { - wattron(menu->win, (int)menu->back); + wattr_on(menu->win, menu->back, NULL); isback = TRUE; } } @@ -159,10 +159,10 @@ _nc_Post_Item(const MENU *menu, const ITEM *item) assert(cx >= 0 && cy >= 0); getyx(menu->win, ncy, ncx); if (isgrey) - wattroff(menu->win, (int)menu->grey); + wattr_off(menu->win, menu->grey, NULL); else if (isfore) - wattroff(menu->win, (int)menu->fore); - wattron(menu->win, (int)menu->back); + wattr_off(menu->win, menu->fore, NULL); + wattr_on(menu->win, menu->back, NULL); for (j = 1; j < menu->spc_rows; j++) { if ((item_y + j) < getmaxy(menu->win)) @@ -176,17 +176,17 @@ _nc_Post_Item(const MENU *menu, const ITEM *item) } wmove(menu->win, ncy, ncx); if (!isback) - wattroff(menu->win, (int)menu->back); + wattr_off(menu->win, menu->back, NULL); } } /* Remove attributes */ if (isfore) - wattroff(menu->win, (int)menu->fore); + wattr_off(menu->win, menu->fore, NULL); if (isback) - wattroff(menu->win, (int)menu->back); + wattr_off(menu->win, menu->back, NULL); if (isgrey) - wattroff(menu->win, (int)menu->grey); + wattr_off(menu->win, menu->grey, NULL); } /*--------------------------------------------------------------------------- @@ -201,7 +201,7 @@ MENU_EXPORT(void) _nc_Draw_Menu(const MENU *menu) { ITEM *item = menu->items[0]; - ITEM *lastvert; + const ITEM *lastvert; ITEM *hitem; chtype s_bkgd; @@ -220,7 +220,7 @@ _nc_Draw_Menu(const MENU *menu) do { - ITEM *lasthor; + const ITEM *lasthor; wmove(menu->win, y, 0); @@ -231,7 +231,7 @@ _nc_Draw_Menu(const MENU *menu) { _nc_Post_Item(menu, hitem); - wattron(menu->win, (int)menu->back); + wattr_on(menu->win, menu->back, NULL); if (((hitem = hitem->right) != lasthor) && hitem) { int i, j, cy, cx; @@ -250,7 +250,7 @@ _nc_Draw_Menu(const MENU *menu) } } while (hitem && (hitem != lasthor)); - wattroff(menu->win, (int)menu->back); + wattr_off(menu->win, menu->back, NULL); item = item->down; y += menu->spc_rows; @@ -291,7 +291,7 @@ post_menu(MENU *menu) { int h = 1 + menu->spc_rows * (menu->rows - 1); - WINDOW *win = Get_Menu_Window(menu); + const WINDOW *win = Get_Menu_Window(menu); int maxy = getmaxy(win); if ((menu->win = newpad(h, menu->width))) diff --git a/contrib/ncurses/menu/m_req_name.c b/contrib/ncurses/menu/m_req_name.c index c72116fa4aff..d4af02d0dccf 100644 --- a/contrib/ncurses/menu/m_req_name.c +++ b/contrib/ncurses/menu/m_req_name.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2012,2015 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_req_name.c,v 1.27 2021/06/17 21:11:08 tom Exp $") +MODULE_ID("$Id: m_req_name.c,v 1.28 2024/12/07 23:00:37 tom Exp $") #define DATA(s) { s } @@ -106,7 +106,7 @@ menu_request_by_name(const char *str) T((T_CALLED("menu_request_by_name(%s)"), _nc_visbuf(str))); - if (str != 0 && (i = strlen(str)) != 0) + if (str != NULL && (i = strlen(str)) != 0) { char buf[16]; diff --git a/contrib/ncurses/menu/menu.priv.h b/contrib/ncurses/menu/menu.priv.h index 0bc6147e07d9..e464a7c991d4 100644 --- a/contrib/ncurses/menu/menu.priv.h +++ b/contrib/ncurses/menu/menu.priv.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -31,7 +31,7 @@ * Author: Juergen Pfeifer, 1995,1997 * ****************************************************************************/ -/* $Id: menu.priv.h,v 1.29 2020/05/24 01:40:20 anonymous.maarten Exp $ */ +/* $Id: menu.priv.h,v 1.30 2024/08/03 15:41:22 tom Exp $ */ /*************************************************************************** * Module menu.priv.h * @@ -61,9 +61,6 @@ extern MENU_EXPORT_VAR(MENU) _nc_Default_Menu; /* Normalize menu to default if none was given */ #define Normalize_Menu( menu ) ((menu)=(menu)?(menu):&_nc_Default_Menu) -#define Get_Menu_Screen( menu ) (menu->userwin ? \ - _nc_screen_of(menu->userwin) : CURRENT_SCREEN) - /* Get the user defined (framing) window of the menu */ #define Get_Menu_UserWin(menu) ((menu)->userwin ? \ (menu)->userwin : CURRENT_SCREEN->_stdscr) diff --git a/contrib/ncurses/menu/mf_common.h b/contrib/ncurses/menu/mf_common.h index fcbd565c5a2f..c54e8cdf74fa 100644 --- a/contrib/ncurses/menu/mf_common.h +++ b/contrib/ncurses/menu/mf_common.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2005,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -31,7 +31,7 @@ * Author: Juergen Pfeifer, 1995,1997 * ****************************************************************************/ -/* $Id: mf_common.h,v 0.25 2020/02/02 23:34:34 tom Exp $ */ +/* $Id: mf_common.h,v 0.27 2024/12/07 22:01:18 tom Exp $ */ /* Common internal header for menu and form library */ @@ -64,7 +64,7 @@ extern int errno; #if USE_RCS_IDS #define MODULE_ID(id) static const char Ident[] = id; #else -#define MODULE_ID(id) /*nothing */ +#define MODULE_ID(id) /* nothing */ #endif /* Maximum regular 8-bit character code */ @@ -88,7 +88,7 @@ extern int errno; /* Call object hook */ #define Call_Hook( object, handler ) \ - if ( (object) != 0 && ((object)->handler) != (void *) 0 )\ + if ( (object) != NULL && ((object)->handler) != (void *) 0 )\ {\ SetStatus(object, _IN_DRIVER);\ (object)->handler(object);\ diff --git a/contrib/ncurses/misc/Makefile.in b/contrib/ncurses/misc/Makefile.in index 1539973fef07..bfcee26a6dd3 100644 --- a/contrib/ncurses/misc/Makefile.in +++ b/contrib/ncurses/misc/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.79 2021/11/06 23:36:12 tom Exp $ +# $Id: Makefile.in,v 1.88 2025/12/25 22:26:15 tom Exp $ ############################################################################## -# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 2018-2024,2025 Thomas E. Dickey # # Copyright 1998-2016,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -47,10 +47,9 @@ SHELL = @SHELL@ VPATH = @srcdir@ THIS = Makefile -CF_MFLAGS = @cf_cv_makeflags@ @SET_MAKE@ +@SET_DESTDIR@ -DESTDIR = @DESTDIR@ top_srcdir = @top_srcdir@ srcdir = @srcdir@ prefix = @prefix@ @@ -61,7 +60,7 @@ datarootdir = @datarootdir@ datadir = @datadir@ includesubdir = @includesubdir@ -INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) +INCLUDEDIR = $(DESTDIR)$(includedir@MERGE_PREFIX@)$(includesubdir) tabsetdir = $(datadir)/tabset ticdir = @TERMINFO@ @@ -75,6 +74,17 @@ INSTALL_DATA = @INSTALL_DATA@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +BINDIR = $(DESTDIR)$(bindir@MERGE_PREFIX@) +DATADIR = $(DESTDIR)$(datadir@MERGE_PREFIX@) + +@MAKE_DATABASE@INSTALL_PREFIX = $(DESTDIR)$(prefix@MERGE_PREFIX@) +@MAKE_DATABASE@LIBDIR = $(DESTDIR)$(libdir@MERGE_PREFIX@) +@MAKE_DATABASE@TICDIR = $(DESTDIR)$(ticdir@MERGE_PREFIX@) +@MAKE_DATABASE@TICFILE = $(DESTDIR)$(ticfile@MERGE_PREFIX@) +@MAKE_DATABASE@TABSETDIR = $(DESTDIR)$(tabsetdir@MERGE_PREFIX@) + +@MAKE_PC_FILES@INSTALL_CONFIG = $(DESTDIR)$(PKG_CONFIG_LIBDIR@MERGE_PREFIX@) + ################################################################################ @MAKE_PHONY@.PHONY : all @@ -97,31 +107,28 @@ all \ depend \ sources :: +check :: + @echo "no unit-test implemented" + @MAKE_DATABASE@all \ @MAKE_DATABASE@sources :: terminfo.tmp @MAKE_DATABASE@install :: @MISC_INSTALL_DATA@ @MAKE_DATABASE@install.data :: terminfo.tmp \ -@MAKE_DATABASE@ $(DESTDIR)$(libdir) \ -@MAKE_DATABASE@ $(DESTDIR)$(datadir) \ -@MAKE_DATABASE@ $(DESTDIR)$(tabsetdir) -@MAKE_DATABASE@ DESTDIR=${DESTDIR} \ -@MAKE_DATABASE@ prefix=${prefix} \ -@MAKE_DATABASE@ exec_prefix=${exec_prefix} \ -@MAKE_DATABASE@ bindir=${bindir} \ -@MAKE_DATABASE@ top_srcdir=${top_srcdir} \ -@MAKE_DATABASE@ srcdir=${srcdir} \ -@MAKE_DATABASE@ datadir=${datadir} \ -@MAKE_DATABASE@ ticdir=${ticdir} \ -@MAKE_DATABASE@ source=terminfo.tmp \ -@MAKE_DATABASE@ cross_compiling=@cross_compiling@ \ +@MAKE_DATABASE@ $(LIBDIR) \ +@MAKE_DATABASE@ $(DATADIR) \ +@MAKE_DATABASE@ $(TABSETDIR) +@MAKE_DATABASE@ INSTALL_PREFIX=${INSTALL_PREFIX} \ +@MAKE_DATABASE@ TICDIR=${TICDIR} \ +@MAKE_DATABASE@ BINDIR=${BINDIR} \ +@MAKE_DATABASE@ tic_source=terminfo.tmp \ @MAKE_DATABASE@ $(SHELL) ./run_tic.sh @MAKE_DATABASE@ @( cd $(srcdir)/tabset && \ @MAKE_DATABASE@ $(SHELL) -c 'for i in * ; do \ @MAKE_DATABASE@ if test -f $$i ; then \ @MAKE_DATABASE@ echo installing $$i; \ -@MAKE_DATABASE@ $(INSTALL_DATA) $$i $(DESTDIR)$(tabsetdir)/$$i; \ +@MAKE_DATABASE@ $(INSTALL_DATA) $$i $(TABSETDIR)/$$i; \ @MAKE_DATABASE@ fi; done' ) install.data :: @echo "finished $@" @@ -129,8 +136,8 @@ install.data :: NCURSES_CONFIG = ncurses@DFT_ARG_SUFFIX@@cf_cv_abi_version@@cf_config_suffix@-config install \ -install.libs :: $(DESTDIR)$(bindir) ncurses-config - $(INSTALL_SCRIPT) ncurses-config $(DESTDIR)$(bindir)/$(NCURSES_CONFIG) +install.libs :: $(BINDIR) ncurses-config + $(INSTALL_SCRIPT) ncurses-config $(BINDIR)/$(NCURSES_CONFIG) # Make a list of the files that gen-pkgconfig might create: @MAKE_PC_FILES@PC_FILES = \ @@ -148,12 +155,12 @@ install.libs :: $(DESTDIR)$(bindir) ncurses-config @MAKE_PC_FILES@install \ @MAKE_PC_FILES@install.libs :: pc-files @MAKE_PC_FILES@ @$(SHELL) -c 'case "x$(PKG_CONFIG_LIBDIR)" in \ -@MAKE_PC_FILES@ x/*) \ -@MAKE_PC_FILES@ mkdir -p $(DESTDIR)$(PKG_CONFIG_LIBDIR); \ +@MAKE_PC_FILES@ x@GLOB_FULLPATH_POSIX@|x@GLOB_FULLPATH_OTHER@) \ +@MAKE_PC_FILES@ mkdir -p $(INSTALL_CONFIG); \ @MAKE_PC_FILES@ for name in $(PC_FILES); do \ @MAKE_PC_FILES@ test -f $$name || continue; \ @MAKE_PC_FILES@ echo installing $$name; \ -@MAKE_PC_FILES@ $(INSTALL_DATA) $$name $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; \ +@MAKE_PC_FILES@ $(INSTALL_DATA) $$name $(INSTALL_CONFIG)/$$name; \ @MAKE_PC_FILES@ done \ @MAKE_PC_FILES@ ;; \ @MAKE_PC_FILES@ *) \ @@ -177,27 +184,29 @@ run_tic.sed : datadir=${datadir} \ $(SHELL) $(srcdir)/gen_edit.sh >$@ -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) \ -$(DESTDIR)$(datadir) \ -$(DESTDIR)$(tabsetdir) : +$(BINDIR) \ +$(DATADIR) : mkdir -p $@ +@MAKE_DATABASE@$(LIBDIR) \ +@MAKE_DATABASE@$(TABSETDIR) : +@MAKE_DATABASE@ mkdir -p $@ + uninstall : @MISC_UNINSTALL_DATA@ uninstall.libs uninstall.data : - -test -d $(DESTDIR)$(tabsetdir) && rm -rf $(DESTDIR)$(tabsetdir) - -test -d $(DESTDIR)$(ticdir) && rm -rf $(DESTDIR)$(ticdir) - -test -f $(DESTDIR)$(ticfile) && rm -f $(DESTDIR)$(ticfile) +@MAKE_DATABASE@ -$(SHELL) -c 'if test -d $(TABSETDIR) ; then rm -rf $(TABSETDIR); fi' +@MAKE_DATABASE@ -$(SHELL) -c 'if test -d $(TICDIR) ; then rm -rf $(TICDIR); fi' +@MAKE_DATABASE@ -$(SHELL) -c 'if test -f $(TICFILE) ; then rm -f $(TICFILE); fi' uninstall.libs : - -rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG) -@MAKE_PC_FILES@ @$(SHELL) -c 'case x$(DESTDIR)$(PKG_CONFIG_LIBDIR) in \ -@MAKE_PC_FILES@ x/*) \ + -rm -f $(BINDIR)/$(NCURSES_CONFIG) +@MAKE_PC_FILES@ @$(SHELL) -c 'case x$(INSTALL_CONFIG) in \ +@MAKE_PC_FILES@ x@GLOB_FULLPATH_POSIX@|x@GLOB_FULLPATH_OTHER@) \ @MAKE_PC_FILES@ for name in $(PC_FILES); do \ @MAKE_PC_FILES@ test -f $$name || continue; \ @MAKE_PC_FILES@ echo uninstalling $$name; \ -@MAKE_PC_FILES@ rm -f $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; \ +@MAKE_PC_FILES@ rm -f $(INSTALL_CONFIG)/$$name; \ @MAKE_PC_FILES@ done \ @MAKE_PC_FILES@ ;; \ @MAKE_PC_FILES@ esac' diff --git a/contrib/ncurses/misc/gen-pkgconfig.in b/contrib/ncurses/misc/gen-pkgconfig.in index 89a5cd4a3180..c369dd26a07c 100644 --- a/contrib/ncurses/misc/gen-pkgconfig.in +++ b/contrib/ncurses/misc/gen-pkgconfig.in @@ -1,7 +1,7 @@ #!@SHELL@ -# $Id: gen-pkgconfig.in,v 1.56 2022/10/08 16:45:20 tom Exp $ +# $Id: gen-pkgconfig.in,v 1.58 2024/09/28 20:21:23 tom Exp $ ############################################################################## -# Copyright 2018-2021,2022 Thomas E. Dickey # +# Copyright 2018-2022,2024 Thomas E. Dickey # # Copyright 2009-2015,2018 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -92,7 +92,7 @@ do -specs*) # ignore linker specs-files which were used to build library continue ;; - -Wl,-z,*) # ignore flags used to manipulate shared image + -Wl,-z*) # ignore flags used to manipulate shared image continue ;; -Wl,--dynamic-linker*) # ignore ELF interpreter @@ -112,7 +112,7 @@ do @LD_SEARCHPATH@) # skip standard libdir if [ "$lib_check" = "$libdir" ] then - lib_first=yes + lib_first=no IFS_save="$IFS" IFS='|' LIBDIRS="@LD_SEARCHPATH@" @@ -120,11 +120,11 @@ do do if [ -d "$lib_check" ] then - if [ "$lib_check" != "$libdir" ] + if [ "$lib_check" = "$libdir" ] then - lib_first=no + lib_first=yes + break fi - break fi done IFS="$IFS_save" diff --git a/contrib/ncurses/misc/gen_edit.sh b/contrib/ncurses/misc/gen_edit.sh index 0c41611d7c57..1fe43cd7ad1b 100755 --- a/contrib/ncurses/misc/gen_edit.sh +++ b/contrib/ncurses/misc/gen_edit.sh @@ -1,6 +1,6 @@ #!/bin/sh ############################################################################## -# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2020-2021,2025 Thomas E. Dickey # # Copyright 2004-2011,2012 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -30,8 +30,8 @@ # # Author: Thomas E. Dickey # -# $Id: gen_edit.sh,v 1.7 2021/09/04 15:55:29 tom Exp $ -# Generate a sed-script for converting the terminfo.src to the form which will +# $Id: gen_edit.sh,v 1.9 2025/11/12 00:52:57 Branden.Robinson Exp $ +# Generate a sed script for converting the terminfo.src to the form which will # be installed. # # Assumes: @@ -48,13 +48,13 @@ linux_dft=linux2.2 # If we're not installing into /usr/share/, we'll have to adjust the location # of the tabset files in terminfo.src (which are in a parallel directory). TABSET=${datadir}/tabset -if test "x$TABSET" != "x/usr/share/tabset" ; then +if [ "x$TABSET" != "x/usr/share/tabset" ] ; then cat <<EOF s%/usr/share/tabset%$TABSET%g EOF fi -if test "$WHICH_XTERM" != "xterm-new" ; then +if [ "$WHICH_XTERM" != "xterm-new" ] ; then echo "** using $WHICH_XTERM terminal description for XTerm entry" >&2 cat <<EOF /^# This is xterm for ncurses/,/^$/{ @@ -63,7 +63,7 @@ cat <<EOF EOF fi -if test "$XTERM_KBS" != "BS" ; then +if [ "$XTERM_KBS" != "BS" ] ; then echo "** using DEL for XTerm backspace-key" >&2 cat <<EOF /^xterm+kbs|fragment for backspace key/,/^#/{ @@ -83,7 +83,7 @@ fi case x$WHICH_LINUX in #(vi xauto) system=`uname -s 2>/dev/null` - if test "x$system" = xLinux + if [ "$system" = Linux ] then case x`uname -r` in x1.*) @@ -108,7 +108,7 @@ xlinux*) ;; esac -if test $WHICH_LINUX != $linux_dft +if [ "$WHICH_LINUX" != "$linux_dft" ] then echo "** using $WHICH_LINUX terminal description for Linux console" >&2 cat <<EOF diff --git a/contrib/ncurses/misc/magic b/contrib/ncurses/misc/magic index ee1a1c4d456c..314cb6d20d23 100644 --- a/contrib/ncurses/misc/magic +++ b/contrib/ncurses/misc/magic @@ -1,6 +1,6 @@ -# $Id: magic,v 1.5 2023/09/23 23:37:26 tom Exp $ +# $Id: magic,v 1.6 2025/02/15 15:23:23 tom Exp $ ############################################################################## -# Copyright 2020,2023 Thomas E. Dickey # +# Copyright 2020-2023,2025 Thomas E. Dickey # # Copyright 2015,2018 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -59,9 +59,8 @@ >>12 regex \^[a-zA-Z0-9][a-zA-Z0-9.][^|]* Compiled 32-bit terminfo entry "%-s" !:mime application/x-terminfo2 # -# While the compiled terminfo uses little-endian format irregardless of -# platform, System V screen dumps do not. They came later, and that detail was -# overlooked. +# While the compiled terminfo uses little-endian format regardless of platform, +# System V screen dumps do not. They came later; that detail was overlooked. # # AIX and HPUX use the SVr4 big-endian format # Solaris uses the SVr3 formats (sparc and x86 differ endian-ness) diff --git a/contrib/ncurses/misc/makellib b/contrib/ncurses/misc/makellib index fb3d3b7a92fd..04d99fe9ebdf 100755 --- a/contrib/ncurses/misc/makellib +++ b/contrib/ncurses/misc/makellib @@ -1,6 +1,6 @@ #!/bin/sh ############################################################################## -# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2020-2021,2025 Thomas E. Dickey # # Copyright 1998,2000 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -30,7 +30,7 @@ # # Author: Thomas E. Dickey 1996,1997,2000 # -# $Id: makellib,v 1.11 2021/09/04 15:49:38 tom Exp $ +# $Id: makellib,v 1.12 2025/06/14 14:44:56 tom Exp $ # System-dependent wrapper for 'lint' that creates a lint-library via the # following method (XXX is the name of the library): # a. If the file llib-lXXX doesn't exist, create it using the make-rule @@ -52,7 +52,7 @@ # $* = C-preprocessor options # ARCH=`uname -s` -if test "x$ARCH" = "xSunOS" ; then +if [ "$ARCH" = "SunOS" ] ; then case `uname -r` in 5.*) ARCH=Solaris ;; @@ -64,7 +64,7 @@ OPT="" LLIB="" llib="" # -while test $# != 0 +while [ $# != 0 ] do case $1 in -L*) @@ -74,7 +74,7 @@ do OPT="$OPT $1" ;; *) - if test -z "$LLIB" + if [ -z "$LLIB" ] then LLIB=$1 else @@ -85,16 +85,16 @@ do shift done -if test -z "$LLIB" +if [ -z "$LLIB" ] then echo '? no library name specified' exit 1 -elif test -z "$llib" +elif [ -z "$llib" ] then llib="llib-l$LLIB" fi -if test ! -f "$llib" ; then +if [ ! -f "$llib" ] ; then if ( make "$llib" ) then : @@ -142,16 +142,16 @@ UNIX_SV) exit 1 esac -echo OPT "$OPT" -echo TARGET "$TARGET" -echo LIBNAME "$llib" +echo "OPT $OPT" +echo "TARGET $TARGET" +echo "LIBNAME $llib" if ( lint "$CREATE" "$OPT" "$TARGET" ) then - if test -f "$llib.ln" + if [ -f "$llib.ln" ] then for p in $HOME/lib $HOME/lib/$ARCH $HOME/lib/$ARCH/lint do - if test ! -d "$p" + if [ ! -d "$p" ] then mkdir "$p" fi @@ -163,6 +163,6 @@ then rm -f "$llib.ln" fi fi -if test "x$TARGET" = "x$llib.c" ; then +if [ "$TARGET" = "$llib.c" ] ; then rm -f "$TARGET" fi diff --git a/contrib/ncurses/misc/ncurses-config.in b/contrib/ncurses/misc/ncurses-config.in index c9f1cf809843..ea3ad0d26ddd 100644 --- a/contrib/ncurses/misc/ncurses-config.in +++ b/contrib/ncurses/misc/ncurses-config.in @@ -1,7 +1,7 @@ #!@SHELL@ -# $Id: ncurses-config.in,v 1.52 2022/07/26 21:36:28 tom Exp $ +# $Id: ncurses-config.in,v 1.63 2025/11/22 19:19:28 tom Exp $ ############################################################################## -# Copyright 2018-2021,2022 Thomas E. Dickey # +# Copyright 2018-2024,2025 Thomas E. Dickey # # Copyright 2006-2015,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -46,12 +46,10 @@ datarootdir="@datarootdir@" datadir="@datadir@" mandir="@mandir@" -THIS="@LIB_NAME@@USE_LIB_SUFFIX@" +CURSES_LIB="@LIB_NAME@@ABI_SUFFIX@" TINFO_LIB="@TINFO_ARG_SUFFIX@" RPATH_LIST="@RPATH_LIST@" -includesubdir="@includedir@/${THIS}" - # Ensure that RPATH_LIST contains only absolute pathnames, if it is nonempty. # We cannot filter it out within the build-process since the variable is used # in some special cases of installation using a relative path. @@ -80,18 +78,29 @@ fi # the headers to include like this: # <ncurses@LIB_SUFFIX@/curses.h> if [ x@WITH_OVERWRITE@ = xno ]; then + includesubdir="@includedir@/${CURSES_LIB}" case $includedir in $prefix/include/ncurses@LIB_SUFFIX@@EXTRA_SUFFIX@) includedir=`echo "$includedir" | sed -e 's,/[^/]*$,,'` ;; esac +else + includesubdir="@includedir@" fi LIBS="@LIBS@" if [ "@TINFO_NAME@" = "@LIB_NAME@" ]; then - LIBS="-l${THIS} $LIBS" + LIBS="-l${CURSES_LIB} $LIBS" else - LIBS="-l${THIS} -l${TINFO_LIB} $LIBS" + LIBS="-l${CURSES_LIB} -l${TINFO_LIB} $LIBS" +fi + +CFLAGS="@PKG_CFLAGS@" +if [ "$includesubdir" != "/usr/include" ]; then + CFLAGS="$CFLAGS -I${includesubdir}" + if [ "$includedir" != "/usr/include" ]; then + [ x@WITH_OVERWRITE@ = xno ] && CFLAGS="$CFLAGS -I${includedir}" + fi fi # Ignore -L options which do not correspond to an actual directory, or which @@ -107,7 +116,7 @@ do -specs*) # ignore linker specs-files which were used to build library continue ;; - -Wl,-z,*) # ignore flags used to manipulate shared image + -Wl,-z*) # ignore flags used to manipulate shared image continue ;; -Wl,--dynamic-linker*) # ignore ELF interpreter @@ -123,7 +132,7 @@ do @LD_SEARCHPATH@) # skip standard libdir if [ "$lib_check" = "$libdir" ] then - lib_first=yes + lib_first=no IFS_save="$IFS" IFS='|' LIBDIRS="@LD_SEARCHPATH@" @@ -131,11 +140,11 @@ do do if [ -d "$lib_check" ] then - if [ "$lib_check" != "$libdir" ] + if [ "$lib_check" = "$libdir" ] then - lib_first=no + lib_first=yes + break fi - break fi done IFS="$IFS_save" @@ -186,16 +195,57 @@ while [ $# -gt 0 ]; do ;; # compile/link --cflags) - INCS="@PKG_CFLAGS@" - if [ "x@WITH_OVERWRITE@" = xno ]; then - INCS="$INCS -I${includesubdir}" - fi - if [ "${includedir}" != /usr/include ]; then - INCS="$INCS -I${includedir}" - fi - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - $INCS -ENDECHO + OPTS= + for opt in $CFLAGS + do + case "x$opt" in + x-[fgOW]*) + opt= + ;; + esac + if [ -n "$opt" ] + then + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="$OPTS$opt" + fi + done + printf "%s\n" "$OPTS" + ;; + --cflags-only-I) + OPTS= + for opt in $CFLAGS + do + case "x$opt" in + x-[I]*) + ;; + *) + opt= + ;; + esac + if [ -n "$opt" ] + then + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="$OPTS$opt" + fi + done + printf "%s\n" "$OPTS" + ;; + --cflags-only-other) + OPTS= + for opt in $CFLAGS + do + case "x$opt" in + x-[I]*|x-[fgOW]*) + opt= + ;; + esac + if [ -n "$opt" ] + then + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="$OPTS$opt" + fi + done + printf "%s\n" "$OPTS" ;; --libs) OPTS= @@ -294,30 +344,32 @@ ENDECHO Usage: `basename "$0"` [options] Options: - --prefix echos the package-prefix of ${THIS} - --exec-prefix echos the executable-prefix of ${THIS} + --prefix echoes the package-prefix of ${CURSES_LIB} + --exec-prefix echoes the executable-prefix of ${CURSES_LIB} - --cflags echos the C compiler flags needed to compile with ${THIS} - --libs echos the libraries needed to link with ${THIS} + --cflags echoes the C compiler flags needed to compile for ${CURSES_LIB} + --cflags-only-I echoes only -I C compiler flags needed with ${CURSES_LIB} + --cflags-only-other echoes only C compiler flags other than -I for ${CURSES_LIB} + --libs echoes the libraries needed to link with ${CURSES_LIB} - --libs-only-L echos -L linker options (search path) for ${THIS} - --libs-only-l echos -l linker options (libraries) for ${THIS} - --libs-only-other echos linker options other than -L/-l + --libs-only-L echoes -L linker options (search path) for ${CURSES_LIB} + --libs-only-l echoes -l linker options (libraries) for ${CURSES_LIB} + --libs-only-other echoes linker options other than -L/-l - --version echos the release+patchdate version of ${THIS} - --abi-version echos the ABI version of ${THIS} - --mouse-version echos the mouse-interface version of ${THIS} + --version echoes the release+patchdate version of ${CURSES_LIB} + --abi-version echoes the ABI version of ${CURSES_LIB} + --mouse-version echoes the mouse-interface version of ${CURSES_LIB} - --bindir echos the directory containing ${THIS} programs - --datadir echos the directory containing ${THIS} data - --includedir echos the directory containing ${THIS} header files - --libdir echos the directory containing ${THIS} libraries - --mandir echos the directory containing ${THIS} manpages - --terminfo echos the \$TERMINFO terminfo database path - --terminfo-dirs echos the \$TERMINFO_DIRS directory list - --termpath echos the \$TERMPATH termcap list + --bindir echoes the directory containing ${CURSES_LIB} programs + --datadir echoes the directory containing ${CURSES_LIB} data + --includedir echoes the directory containing ${CURSES_LIB} header files + --libdir echoes the directory containing ${CURSES_LIB} libraries + --mandir echoes the directory containing ${CURSES_LIB} man pages + --terminfo echoes the \$TERMINFO terminfo database path + --terminfo-dirs echoes the \$TERMINFO_DIRS directory list + --termpath echoes the \$TERMPATH termcap list - --help prints this message + --help prints this message ENDHELP ;; --error|*) diff --git a/contrib/ncurses/misc/run_tic.in b/contrib/ncurses/misc/run_tic.in index bd11c4c80d4c..60fbdcc7fa52 100644 --- a/contrib/ncurses/misc/run_tic.in +++ b/contrib/ncurses/misc/run_tic.in @@ -1,7 +1,7 @@ #!@SHELL@ -# $Id: run_tic.in,v 1.40 2022/07/16 19:37:03 tom Exp $ +# $Id: run_tic.in,v 1.44 2025/09/13 16:52:46 tom Exp $ ############################################################################## -# Copyright 2019-2020,2022 Thomas E. Dickey # +# Copyright 2019-2024,2025 Thomas E. Dickey # # Copyright 2000-2012,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -42,50 +42,59 @@ echo "** Building terminfo database, please wait..." # The script is designed to be run from the misc/Makefile as # make install.data -: "${suffix:=@EXEEXT@}" -: "${DESTDIR:=@DESTDIR@}" +# Symbols which are not overridden by misc/Makefile: : "${prefix:=@prefix@}" : "${exec_prefix:=@exec_prefix@}" -: "${bindir:=@bindir@}" : "${top_srcdir:=@top_srcdir@}" : "${srcdir:=@srcdir@}" : "${datarootdir:=@datarootdir@}" : "${datadir:=@datadir@}" -: "${TIC_PATH:=@TIC@}" -: "${ticdir:=@TERMINFO@}" -: "${source:=@TERMINFO_SRC@}" -: "${cross_compiling:=no}" +: "${cross_compiling:=@cross_compiling@}" +: "${suffix:=@EXEEXT@}" + : "${ext_funcs:=@NCURSES_EXT_FUNCS@}" +: "${tic_path:=@TIC@}" +: "${ticdir:=@TERMINFO@}" +: "${tic_source:=@TERMINFO_SRC@}" + +# Symbols which $DESTDIR and/or install-prefix may affect: +: "${INSTALL_PREFIX:=$prefix}" +: "${BINDIR:=@bindir@}" +: "${TICDIR:=$ticdir}" -test -z "${DESTDIR}" && DESTDIR= +failed() { + echo "? $*" >&2 + exit 1 +} + +unset CDPATH # Allow tic to run either from the install-path, or from the build-directory. # Do not do this if we appear to be cross-compiling. In that case, we rely # on the host's copy of tic to compile the terminfo database. -if test "x$cross_compiling" = "xno" +if test "$cross_compiling" = "no" then - if test -f ../progs/tic$suffix + if test -f ../progs/tic"$suffix" then case "$PATH" in \@PATH_SEPARATOR@*) - PATH="../progs@PATH_SEPARATOR@../lib@PATH_SEPARATOR@${DESTDIR}$bindir$PATH" + PATH="../progs@PATH_SEPARATOR@../lib@PATH_SEPARATOR@${BINDIR}$PATH" ;; *) - PATH="../progs@PATH_SEPARATOR@../lib@PATH_SEPARATOR@${DESTDIR}$bindir@PATH_SEPARATOR@$PATH" + PATH="../progs@PATH_SEPARATOR@../lib@PATH_SEPARATOR@${BINDIR}@PATH_SEPARATOR@$PATH" ;; esac export PATH if test @DFT_LWR_MODEL@ = shared then SHLIB="sh $srcdir/shlib" - TIC_PATH="$SHLIB tic" + tic_path="$SHLIB tic" else - TIC_PATH="tic" + tic_path="tic" fi - elif test "$TIC_PATH" = unknown + elif test "$tic_path" = unknown then - echo "? no tic program found" - exit 1 + failed "no tic program found" fi else # Cross-compiling, so don't set PATH or run shlib. @@ -95,26 +104,27 @@ else fi -# set another env var that doesn't get reset when `shlib' runs, so `shlib' uses +# Set another env var that doesn't get reset when `shlib' runs, so `shlib' uses # the PATH we just set. SHLIB_PATH=$PATH export SHLIB_PATH -# set a variable to simplify environment update in shlib +# Set a variable to simplify environment update in the shlib script. SHLIB_HOST=@host_os@ export SHLIB_HOST -# don't use user's TERMINFO variable +# Don't use user's TERMINFO or TERMINFO_DIRS variables. The explicit "-o" +# option makes this moot, but this may reduce confusion. unset TERMINFO_DIRS -TERMINFO="${DESTDIR}$ticdir" ; export TERMINFO +unset TERMINFO umask 022 # Construct the name of the old (obsolete) pathname, e.g., /usr/lib/terminfo. -TICDIR=`echo "$TERMINFO" | sed -e 's%/share/\([^/]*\)$%/lib/\1%'` +OLD_DIR=`echo "$TICDIR" | sed -e 's%/share/\([^/]*\)$%/lib/\1%'` # Parent directory may not exist, which would confuse the install for hashed # database. Fix. -PARENT=`echo "$TERMINFO" | sed -e 's%/[^/]*$%%'` +PARENT=`echo "$TICDIR" | sed -e 's%/[^/]*$%%'` if test -n "$PARENT" then mkdir -p "$PARENT" @@ -124,87 +134,102 @@ fi # would generate a lot of confusing error messages if we tried to overwrite it. # We explicitly remove its contents rather than the directory itself, in case # the directory is actually a symbolic link. -if test -d "$TERMINFO" +if test -d "$TICDIR" then - ( cd "$TERMINFO" && rm -fr ./? 2>/dev/null ) -elif test -f "$TERMINFO.db" + test -w "$TICDIR" || failed "existing $TICDIR is not writable" + ( cd "$TICDIR" && rm -fr ./? 2>/dev/null ) +elif test -f "$TICDIR.db" then - ( rm -f "$TERMINFO.db" 2>/dev/null ) + ( rm -f "$TICDIR.db" 2>/dev/null ) + test -f "$TICDIR.db" && failed "cannot remove $TICDIR.db" fi if test "$ext_funcs" = 1 ; then cat <<EOF -Running $TIC_PATH to install $TERMINFO ... +Running $tic_path to install $TICDIR ... You may see messages regarding extended capabilities, e.g., AX. These are extended terminal capabilities which are compiled using - tic -x + $tic_path -x If you have ncurses 4.2 applications, you should read the INSTALL document, and install the terminfo without the -x option. EOF -$TIC_PATH -V -if ( $TIC_PATH -x -s -o "$TERMINFO" $source ) +$tic_path -V +if ( $tic_path -x -s -o "$TICDIR" "$tic_source" ) then - echo "** built new $TERMINFO" + echo "** built new $TICDIR" else - echo "? tic could not build $TERMINFO" - exit 1 + failed "$tic_path could not build $TICDIR" fi else cat <<EOF -Running $TIC_PATH to install $TERMINFO ... +Running $tic_path to install $TICDIR ... You may see messages regarding unknown capabilities, e.g., AX. These are extended terminal capabilities which may be compiled using - tic -x + $tic_path -x If you have ncurses 4.2 applications, you should read the INSTALL document, and install the terminfo without the -x option. EOF -$TIC_PATH -V -if ( $TIC_PATH -s -o "$TERMINFO" $source ) +$tic_path -V +if ( $tic_path -s -o "$TICDIR" "$tic_source" ) then - echo "** built new $TERMINFO" + echo "** built new $TICDIR" else - echo "? tic could not build $TERMINFO" - exit 1 + failed "$tic_path could not build $TICDIR" fi fi +# Check if we are using symbolic links, or just pretending. +case "@LN_S@" in +cp\ *) + OLD_DIR="$TICDIR" + echo "** assuming we cannot make symbolic links to a directory" + ;; +*) + echo "** assuming we can make symbolic links to a directory" + ;; +esac + + # Make a symbolic link to provide compatibility with applications that expect # to find terminfo under /usr/lib. That is, we'll _try_ to do that. Not # all systems support symbolic links, and those that do provide a variety # of options for 'test'. -if test "$TICDIR" != "$TERMINFO" ; then - ( rm -f "$TICDIR" 2>/dev/null ) - if ( cd "$TICDIR" 2>/dev/null ) +if test "$OLD_DIR" != "$TICDIR" ; then + ( rm -f "$OLD_DIR" 2>/dev/null ) + if ( cd "$OLD_DIR" 2>/dev/null ) then - cd "$TICDIR" || exit - TICDIR=`pwd` - if test "$TICDIR " != "$TERMINFO "; then + cd "$OLD_DIR" || exit + OLD_DIR=`pwd` + if test "$OLD_DIR " != "$TICDIR "; then # Well, we tried. Some systems lie to us, so the # installer will have to double-check. - echo "Verify if $TICDIR and $TERMINFO are the same." - echo "The new terminfo is in $TERMINFO; the other should be a link to it." - echo "Otherwise, remove $TICDIR and link it to $TERMINFO." + echo "Verify if $OLD_DIR and $TICDIR are the same." + echo "The new terminfo is in $TICDIR; the other should be a link to it." + echo "Otherwise, remove $OLD_DIR and link it to $TICDIR." fi else - cd ${DESTDIR}$prefix || exit + cd "${INSTALL_PREFIX}" || exit # Construct a symbolic link that only assumes $ticdir has the # same $prefix as the other installed directories. - RELATIVE=`echo $ticdir|sed -e 's%^'$prefix'/%%'` - if test "$RELATIVE" != "$ticdir" ; then - RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'` + SOURCE=`echo "$ticdir"|sed -e 's%^'"$prefix"'/%%'` + if test "$SOURCE" != "$ticdir" ; then + SOURCE=../`echo "$ticdir"|sed -e 's%^'"$prefix"'/%%' -e 's%^/%%'` fi - if ( @LN_S@ "$RELATIVE" "$TICDIR" ) + test -d lib || mkdir lib + cd lib || exit + TARGET=`pwd`/terminfo + if ( @LN_S@ "$SOURCE" terminfo ) then - echo "** sym-linked $TICDIR for compatibility" + echo "** sym-linked $TARGET for compatibility" else - echo "** could not sym-link $TICDIR for compatibility" + echo "** could not sym-link $TARGET for compatibility" fi fi fi -# vile:shmode +# vile:shmode ts=4 sw=4 diff --git a/contrib/ncurses/misc/terminfo.src b/contrib/ncurses/misc/terminfo.src index 5d575b8eb454..f111e5342c90 100644 --- a/contrib/ncurses/misc/terminfo.src +++ b/contrib/ncurses/misc/terminfo.src @@ -6,8 +6,8 @@ # Report bugs and new terminal descriptions to # bug-ncurses@gnu.org # -# $Revision: 1.1143 $ -# $Date: 2024/03/09 20:01:40 $ +# $Revision: 1.1200 $ +# $Date: 2025/11/12 00:52:57 $ # # The original header is preserved below for reference. It is noted that there # is a "newer" version which differs in some cosmetic details (but actually @@ -423,11 +423,10 @@ klone+acs|alternate character set for ansi.sys displays, # <rmul=\E[24m>, but this isn't a documented feature of ANSI.SYS. klone+sgr|attribute control for ansi.sys displays, blink=\E[5m, bold=\E[1m, rev=\E[7m, rmpch=\E[10m, - rmso=\E[m, rmul=\E[m, sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6 %t;1%;%?%p9%t;11%;m, - sgr0=\E[0;10m, smpch=\E[11m, smso=\E[7m, smul=\E[4m, - use=klone+acs, + sgr0=\E[0;10m, smpch=\E[11m, use=ansi+sgrso, + use=ansi+sgrul, use=klone+acs, # Most Intel boxes do not treat "invis" (invisible) text. klone+sgr8|attribute control for ansi.sys displays with invis, @@ -475,9 +474,15 @@ ecma+color|color control for ECMA-48-compatible terminals, ecma+italics|ECMA-48 italics, ritm=\E[23m, sitm=\E[3m, +ecma+standout|ECMA-48 standout, + rmso=\E[27m, smso=\E[7m, + +ecma+underline|ECMA-48 underline, + rmul=\E[24m, smul=\E[4m, + # Attribute control for ECMA-48-compatible terminals ecma+sgr|attribute capabilities for true ECMA-48 terminals, - rmso=\E[27m, rmul=\E[24m, use=klone+sgr8, + use=ecma+underline, use=ecma+standout, use=klone+sgr8, ecma+strikeout|ECMA-48 strikeout/crossed-out, rmxx=\E[29m, smxx=\E[9m, @@ -494,10 +499,10 @@ ecma+index|ECMA-48 scroll up/down, ibcs2|Intel Binary Compatibility Standard prescriptions, cbt=\E[Z, clear=\Ec, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch=\E[%p1%dP, - dispc=\E=%p1%dg, ech=\E[%p1%dX, hpa=\E[%i%p1%dG, hts=\EH, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, rc=\E7, - rmam=\E[?7l, sc=\E7, smam=\E[?7h, tbc=\E[g, - vpa=\E[%i%p1%dd, use=ansi+local, use=ecma+index, + dispc=\E=%p1%dg, ech=\E[%p1%dX, hts=\EH, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, rc=\E7, rmam=\E[?7l, sc=\E7, + smam=\E[?7h, tbc=\E[g, use=ansi+local, use=ansi+rca2, + use=ecma+index, #### ANSI/ECMA-48 terminals and terminal emulators # @@ -559,12 +564,12 @@ ansi-mtabs|any ANSI terminal with pessimistic assumptions (relative addressing), ansi77|ANSI 3.64 standard 1977 version, OTbs, am, mir, cols#80, it#8, lines#24, - bel=^G, clear=\E[;H\E[2J, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M$<5*/>, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, - kf1=\EOP, kf2=\EOR, kf4=\EOS, nel=\r\ED, ri=\EM, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m, - use=ansi+arrows, use=ansi+csr, use=ansi+local1, + bel=^G, clear=\E[;H\E[2J, cr=\r, cub1=^H, dch1=\E[P, + dl1=\E[M$<5*/>, ed=\E[J, el=\E[K, ht=^I, il1=\E[L$<5*/>, + ind=\ED, kf1=\EOP, kf2=\EOR, kf4=\EOS, nel=\r\ED, ri=\EM, + rmir=\E[4l, smir=\E[4h, use=ansi+arrows, use=ansi+csr, + use=ansi+cup, use=ansi+local1, use=ansi+sgrso, + use=ansi+sgrul, # Procomm and some other ANSI emulations don't recognize all of the ANSI- # standard capabilities. This entry deletes <cuu>, <cuf>, <cud>, <cub>, and @@ -579,10 +584,9 @@ ansi77|ANSI 3.64 standard 1977 version, pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ANSI (mono mode), OTbs, am, mir, msgr, cols#80, lines#24, - bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, - home=\E[H, ht=^I, il1=\E[L, ind=\n, use=ansi+arrows, - use=ansi+erase, use=ansi+inittabs, use=ansi+local1, - use=klone+sgr-dumb, + bel=^G, cr=\r, dch1=\E[P, ind=\n, use=ansi+arrows, + use=ansi+cup, use=ansi+erase, use=ansi+idl1, + use=ansi+inittabs, use=ansi+local1, use=klone+sgr-dumb, pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode), lines#25, use=pcansi-m, @@ -607,10 +611,10 @@ pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines, ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes, mc5i, dch=\E[%p1%dP, dl=\E[%p1%dM, ech=\E[%p1%dX, el1=\E[1K, - hpa=\E[%i%p1%dG, ht=\E[I, ich=\E[%p1%d@, il=\E[%p1%dL, - kcbt=\E[Z, kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, + ht=\E[I, ich=\E[%p1%d@, il=\E[%p1%dL, kcbt=\E[Z, + kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, rep=%p1%c\E[%p2%{1}%-%db, s0ds=\E(B, s1ds=\E)B, - s2ds=\E*B, s3ds=\E+B, vpa=\E[%i%p1%dd, use=ansi+local, + s2ds=\E*B, s3ds=\E+B, use=ansi+local, use=ansi+rca2, use=ecma+index, use=pcansi-m, # ECMA-48 addresses three of the four capabilities here: @@ -636,7 +640,7 @@ ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes, # Parameter default value: Ps = 0 # With a parameter value not equal to 0, DA is used to identify the # device which sends the DA. The parameter value is a device type -# identification code according to a register which is to be established. +# identification code according to a register which is to be established. # If the parameter value is 0, DA is used to request an identifying DA # from a device. # @@ -687,10 +691,10 @@ ansi-generic|ansiterm|generic ANSI standard terminal, ansi.sys-old|ANSI.SYS under PC-DOS 2.0, OTbs, am, mir, msgr, xon, cols#80, lines#25, - clear=\E[2J, cub1=^H, cup=\E[%i%p1%d;%p2%dH, el=\E[k, - home=\E[H, is2=\E[m\E[?7h, kcub1=^H, kcud1=\n, kcuf1=^L, - kcuu1=^K, khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s"p, - rc=\E[u, rmam=\E[?7l, sc=\E[s, smam=\E[?7h, use=ansi+cpr, + clear=\E[2J, cub1=^H, el=\E[k, is2=\E[m\E[?7h, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, + pfkey=\E[0;%p1%{58}%+%d;%p2"%s"p, rc=\E[u, rmam=\E[?7l, + sc=\E[s, smam=\E[?7h, use=ansi+cpr, use=ansi+cup, use=ansi+local1, use=klone+color, use=klone+sgr8, # Keypad: Home=\0G Up=\0H PrPag=\0I @@ -834,17 +838,15 @@ tw100|Toswin VT100 window manager, yzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, civis=\Ef, clear=\E[2J\E[H, cnorm=\Ee, cr=\r, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\E[%i%p1%d;%p2%dH, cuu1=\EA, dch1=\Ea, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il1=\EL, - ind=\n, is2=\E<\E)0, kdch1=^?, kf1=\EOP, kf10=\EOY, kf11=\Ep, - kf12=\Eq, kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, - kf18=\Ew, kf19=\Ex, kf2=\EOQ, kf20=\Ey, kf3=\EOR, kf4=\EOS, - kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khlp=\EH, + cuf1=\EC, cuu1=\EA, dch1=\Ea, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, ht=^I, hts=\EH, + ich=\E[%p1%d@, il1=\EL, ind=\n, is2=\E<\E)0, kdch1=^?, + kf10=\EOY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es, kf15=\Et, + kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf20=\Ey, kf5=\EOT, + kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khlp=\EH, khome=\E\EE, kich1=\EI, knp=\Eb, kpp=\E\Ea, kund=\EK, ll=\E[24H, nel=\EE, oc=\E[30;47m, op=\E[30;47m, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[?7h, rmir=\Ei, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, rs1=\E<\E[20l\E[?3;6;9l\E[r\Eq\E(B\017\E)0\E>, setb=\E[4%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%= %t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6' @@ -853,8 +855,9 @@ tw100|Toswin VT100 window manager, %t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6' %=%t3%e7%;m, sgr0=\E[m, smacs=^N, smcup=\E[?7l, smir=\Eh, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - use=ansi+apparrows, use=ansi+csr, use=ansi+local, + smkx=\E[?1h\E=, tbc=\E[3g, use=ansi+apparrows, + use=ansi+csr, use=ansi+cup, use=ansi+local, + use=ansi+sgrso, use=ansi+sgrul, use=vt100+pf1-pf4, # The entries for stv52 and stv52pc probably need a revision. stv52|MiNT virtual console, @@ -925,19 +928,18 @@ st52-old|Atari ST with VT52 emulation, beterm|BeOS Terminal, am, eo, mir, msgr, xenl, xon, cols#80, it#8, lines#25, ncv#5, - bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, ech=\E[%p1%dX, el1=\E[1K, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n, - kf1=\E[11~, kf10=\E[20~, kf11=\E[21~, kf12=\E[22~, - kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[16~, - kf7=\E[17~, kf8=\E[18~, kf9=\E[19~, khome=\E[1~, kspd=^Z, - nel=\r\n, op=\E[m, rev=\E[7m, ri=\EM, rmkx=\E[?4l, rmso=\E[m, - rmul=\E[24m, rs1=\Ec, setb=\E[%p1%{40}%+%cm, - setf=\E[%p1%{30}%+%cm, sgr0=\E[0;10m, smkx=\E[?4h, - smso=\E[7m, smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, - vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr, - use=ansi+erase, use=ansi+idc, use=ansi+idl, - use=ansi+local, use=klone+color, use=vt220+pcedit, + bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, ech=\E[%p1%dX, + el1=\E[1K, ht=^I, hts=\EH, ind=\n, kf10=\E[20~, kf11=\E[21~, + kf12=\E[22~, kf6=\E[16~, kf7=\E[17~, kf8=\E[18~, + kf9=\E[19~, khome=\E[1~, kspd=^Z, nel=\r\n, op=\E[m, + rev=\E[7m, ri=\EM, rmkx=\E[?4l, rs1=\Ec, + setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm, + sgr0=\E[0;10m, smkx=\E[?4h, u6=\E[%i%p1%d;%p2%dR, + u7=\E[6n, use=ecma+underline, use=ansi+arrows, + use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idc, + use=ansi+idl, use=ansi+local, use=ansi+rca2, + use=ansi+sgrso, use=klone+color, use=vt220+pcedit, + use=xterm+r5+fkeys, #### Linux consoles # @@ -973,28 +975,31 @@ linux-basic|Linux console (basic), acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u \264v\301w\302x\263y\363z\362{\343|\330}\234~\376, - bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, - dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K, - flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, - ht=^I, hts=\EH, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z, kf1=\E[[A, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[[B, - kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kmous=\E[M, kspd=^Z, - nel=\r\n, ri=\EM, rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m, - rs1=\Ec\E]R, + bel=^G, cr=\r, cub1=^H, cud1=\n, dim=\E[2m, ech=\E[%p1%dX, + el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, ht=^I, hts=\EH, + ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z, khome=\E[1~, kmous=\E[M, + kspd=^Z, nel=\r\n, ri=\EM, rmam=\E[?7l, rs1=\Ec\E]R, sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 %t;2%;%?%p6%t;1%;%?%p9%t;11%;m, - smam=\E[?7h, tbc=\E[3g, vpa=\E[%i%p1%dd, use=ansi+arrows, - use=ansi+csr, use=ansi+erase, use=ansi+idc, use=ansi+idl, - use=ansi+local, use=vt220+pcedit, use=vt102+enq, - use=klone+sgr, use=ecma+color, use=linux+sfkeys, + smam=\E[?7h, tbc=\E[3g, use=ecma+underline, + use=ecma+standout, use=ansi+arrows, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idc, use=ansi+idl, + use=ansi+local, use=ansi+rca2, use=vt220+pcedit, + use=vt102+enq, use=klone+sgr, use=ecma+color, + use=linux+lockeys, use=linux+sfkeys, use=vt220+ufkeys, + +# VT220 uses F1-F5 for "local" manipulation, normally not sending anything to +# the host. Rather than adapt the numbering scheme used by xterm, Linux used +# this arrangement which doubles the "[", making it inconsistent with most +# terminals having function-keys in the same format as control sequences -TD +linux+lockeys|Linux "local" keys in vt220 scheme, + kf1=\E[[A, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, linux+decid|ncurses extension for Linux console DECID, u8=\E[?6c, use=decid+cpr, linux+sfkeys|shifted function-keys for Linux console, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, + use=vt220+sfkeys, linux-m|Linux console no color, colors@, pairs@, @@ -1140,34 +1145,29 @@ linux-vt|Linux console using VT codes for graphics, # of the functionality), but does not recognize as many control sequences. # The program comes bundled with an old (circa 1998) copy of the Linux # console terminfo. It recognizes some non-ANSI/VT100 sequences such as -# \E* move cursor to home, as as \E[H +# \E* move cursor to home, as \E[H # \E,X same as \E(X # \EE move cursor to beginning of row # \E[y,xf same as \E[y,xH # # Note: The status-line support is buggy (dsl does not work). kon|kon2|Kanji ON Linux console, - am, bce, ccc, eo, eslok, hs, mir, msgr, xenl, xon, + am, bce, ccc, eo, mir, msgr, xenl, xon, it#8, ncv#18, - bel=^G, civis=\E[?25l, cnorm=\E[?25h, cr=\r, cub1=^H, - cud1=\n, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, - dsl=\E[?H\E[?E, el1=\E[1K, fsl=\E[?F, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n, + bel=^G, cr=\r, cub1=^H, cud1=\n, dim=\E[2m, dsl=\E[?H\E[?E, + el1=\E[1K, fsl=\E[?F, ht=^I, hts=\EH, ind=\n, initc=\E]P%p1%x%p2%02x%p3%02x%p4%02x, kb2=\E[G, kbs=^?, - kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, - kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kspd=^Z, - nel=\r\n, op=\E[37;40m, ri=\EM, rmso=\E[27m, rmul=\E[24m, - rs1=\Ec, + khome=\E[1~, kspd=^Z, nel=\r\n, ri=\EM, rs1=\Ec, sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, sgr0=\E[0;10m, tbc=\E[3g, tsl=\E[?T, u8=\E[?6c, - vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr, + use=ecma+underline, use=ecma+standout, use=vt220+cvis, + use=ansi+arrows, use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl, - use=ansi+local, use=ansi+sgrbold, use=ecma+sgr, - use=klone+color, use=vt220+pcedit, + use=ansi+local, use=ansi+sgrbold, use=ansi+rca2, + use=dec+sl, use=ecma+sgr, use=klone+color, + use=linux+lockeys, use=linux+sfkeys, use=vt220+ufkeys, + use=vt220+pcedit, # release: 0.4.7 2005/05 # @@ -1237,18 +1237,33 @@ bterm|bogl virtual terminal, am, bce, colors#8, cols#80, lines#24, pairs#64, acsc=aajjkkllmmqqttuuxx, bold=\E[1m, clear=\E[H\E[2J, - cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, - el=\E[K, home=\E[H, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z, - kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, - kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, - kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[49m\E[39m, rev=\E[7m, - ri=\EM, rmacs=^O, rmso=\E[27m, rmul=\E[24m, + cr=\r, cub1=^H, cud1=\n, ed=\E[J, el=\E[K, ind=\n, kb2=\E[G, + kbs=^?, kcbt=\E[Z, khome=\E[1~, kmous=\E[M, kspd=^Z, + nel=\r\n, op=\E[49m\E[39m, rev=\E[7m, ri=\EM, rmacs=^O, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m, smacs=^N, - smso=\E[7m, smul=\E[4m, use=ansi+arrows, - use=vt220+pcedit, use=vt220+cvis, + smul=\E[4m, use=ecma+underline, use=ecma+standout, + use=ansi+arrows, use=ansi+cup, use=linux+lockeys, + use=linux+sfkeys, use=vt220+pcedit, use=vt220+cvis, + use=vt220+ufkeys, + +# https://lists.gnu.org/archive/html/bug-ncurses/2025-04/msg00014.html +sclp|IBM s390 driver for Linux, + xon, + cols#80, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, cr=\r, cub1=^H, cud1=\n, + cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, el1=\E[1K, + enacs=\E)0, ht=^I, ich=\E[%p1%d@, ind=\ED, is2=\Ec, + kf5=\E[15~, khome=\E[1~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, + rmacs=\E(B$<4>, sc=\E7, + sgr=\E[0%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e + \E(B%;$<2>, + sgr0=\E[m\E(B, smacs=\E(0$<2>, smul=\E[4m, + use=ecma+underline, use=ecma+standout, use=klone+color, + use=ansi+arrows, use=ansi+cpr, use=ansi+erase, + use=ansi+local, use=ansi+rca, use=linux+sfkeys, + use=vt100+pf1-pf4, use=vt220+ufkeys, use=vt220+pcedit, #### Mach # @@ -1258,20 +1273,19 @@ mach|Mach console, am, km, NQ, cols#80, it#8, lines#25, bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r, cub1=^H, - cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, ind=\n, kbs=^?, kdch1=\E[9, kend=\E[Y, - kf1=\EOP, kf10=\EOY, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, - kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, kich1=\E[@, kll=\E[F, - knp=\E[U, kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m, - sgr0=\E[0m, smso=\E[7m, smul=\E[4m, use=ansi+arrows, - use=ansi+idl, use=ansi+local, + cud1=\n, ed=\E[J, el=\E[K, ht=^I, ind=\n, kbs=^?, kdch1=\E[9, + kend=\E[Y, kf10=\EOY, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, + kf9=\EOX, kich1=\E[@, kll=\E[F, knp=\E[U, kpp=\E[V, + rev=\E[7m, rmso=\E[0m, sgr0=\E[0m, use=ecma+underline, + use=ansi+arrows, use=ansi+cup, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=vt100+pf1-pf4, mach-bold|Mach console with bold instead of underline, rmul=\E[0m, smul=\E[1m, use=mach, mach-color|Mach console with ANSI color, colors#8, pairs#64, - dim=\E[2m, invis=\E[8m, op=\E[37;40m, rmso=\E[27m, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=mach, + dim=\E[2m, invis=\E[8m, op=\E[37;40m, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, use=ecma+standout, use=mach, # From: Samuel Thibault # Source: git://git.sv.gnu.org/hurd/gnumach.git @@ -1291,8 +1305,8 @@ mach-gnu|GNU Mach, mach-gnu-color|GNU Mach console with ANSI color, colors#8, pairs#64, - op=\E[37;40m, rmso=\E[27m, setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, use=mach-gnu, + op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + use=ecma+standout, use=mach-gnu, # From: Marcus Brinkmann # http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/ @@ -1329,22 +1343,19 @@ hurd|The GNU Hurd console server, bel=^G, cbt=\E[Z, clear=\Ec, cr=\r, cub1=^H, cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K, flash=\Eg, ht=^I, ich=\E[%p1%d@, ind=\E[S, - kb2=\E[G, kbs=^?, kcbt=\E[Z, kf1=\EOP, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[1~, kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[39;49m, - ri=\E[T, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, + kb2=\E[G, kbs=^?, kcbt=\E[Z, khome=\E[1~, kmous=\E[M, + kspd=^Z, nel=\r\n, op=\E[39;49m, ri=\E[T, rmir=\E[4l, rs1=\EM\E[?1000l, sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t; 2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, smir=\E[4h, grbom=\E[>1l, gsbom=\E[>1h, + use=ecma+underline, use=ecma+standout, use=ansi+apparrows, use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl, use=ansi+local, use=ansi+rca2, use=ansi+sgrbold, use=vt220+pcedit, use=ecma+index, use=ecma+italics, use=klone+acs, - use=klone+color, use=vt220+cvis, + use=klone+color, use=linux+sfkeys, use=vt100+pf1-pf4, + use=vt220+cvis, use=xterm+r5+fkeys, #### QNX # @@ -1462,14 +1473,13 @@ qansi-g|QNX ANSI, kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa, kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kdch1=\E[P, kdl1=\E[p, kend=\E[Y, - kext=\E[y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA, - kf13=\EOp, kf14=\EOq, kf15=\EOr, kf16=\EOs, kf17=\EOt, - kf18=\EOu, kf19=\EOv, kf2=\EOQ, kf20=\EOw, kf21=\EOx, - kf22=\EOy, kf23=\EOz, kf24=\EOa, kf25=\E[1~, kf26=\E[2~, - kf27=\E[3~, kf28=\E[4~, kf29=\E[5~, kf3=\EOR, kf30=\E[6~, - kf31=\E[7~, kf32=\E[8~, kf33=\E[9~, kf34=\E[10~, - kf35=\E[11~, kf36=\E[12~, kf37=\E[17~, kf38=\E[18~, - kf39=\E[19~, kf4=\EOS, kf40=\E[20~, kf41=\E[21~, + kext=\E[y, kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf13=\EOp, + kf14=\EOq, kf15=\EOr, kf16=\EOs, kf17=\EOt, kf18=\EOu, + kf19=\EOv, kf20=\EOw, kf21=\EOx, kf22=\EOy, kf23=\EOz, + kf24=\EOa, kf25=\E[1~, kf26=\E[2~, kf27=\E[3~, kf28=\E[4~, + kf29=\E[5~, kf30=\E[6~, kf31=\E[7~, kf32=\E[8~, kf33=\E[9~, + kf34=\E[10~, kf35=\E[11~, kf36=\E[12~, kf37=\E[17~, + kf38=\E[18~, kf39=\E[19~, kf40=\E[20~, kf41=\E[21~, kf42=\E[22~, kf43=\E[23~, kf44=\E[24~, kf45=\E[25~, kf46=\E[26~, kf47=\E[27~, kf48=\E[28~, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, kfnd=\ENf, khlp=\ENh, @@ -1478,7 +1488,7 @@ qansi-g|QNX ANSI, kpp=\E[V, kref=\ENl, kres=\ENp, krfr=\ENg, kri=\E[b, krpl=\ENr, krst=\ENj, ksav=\ENq, kslt=\E[T, ktbc=\ENd, kund=\ENu, ll=\E[99H, nel=\EE, op=\E[39;49m, ri=\E[T, - rmacs=^O, rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m, + rmacs=^O, rmam=\E[?7l, rs1=\017\E[?7h\E[0;39;49m$<2>\E>\E[?1l, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} @@ -1488,10 +1498,11 @@ qansi-g|QNX ANSI, sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1 %|%t;7%;%?%p7%t;9%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, - tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, use=ansi+arrows, + tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, + use=ecma+underline, use=ecma+standout, use=ansi+arrows, use=ansi+local, use=ansi+rep, use=ansi+inittabs, use=ansi+sgrbold, use=att610+cvis0, use=decid+cpr, - use=ecma+index, + use=ecma+index, use=vt100+pf1-pf4, # qansi|QNX ANSI with console writes, daisy, xhpa, use=qansi-g, @@ -1523,8 +1534,8 @@ qansi-w|QNX ANSI for windows, # # klone+sgr-dumb is an error since the acsc does not match -TD # -# In this description based on SCO's keyboard(HW) manpage list of default -# function key values: +# In this description based on SCO's keyboard(HW) man page list of +# default function key values: # F13-F24 are shifted F1-F12 # F25-F36 are control F1-F12 # F37-F48 are shift+control F1-F12 @@ -1547,26 +1558,26 @@ scoansi-old|SCO Extended ANSI standard crt (5.0.5), yszr{c}\034~\207, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=14;12C, clear=\E[H\E[2J, cnorm=\E[=10;12C, - cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=0;12C, - dch=\E[%p1%dP, dch1=\E[P, dispc=\E[=%p1%dg, ed=\E[m\E[J, - el=\E[m\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m, kbeg=\E[E, - kcbt=\E[Z, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, - kf11=\E[W, kf12=\E[X, kf13=\E[Y, kf15=\E[a, kf16=\E[b, - kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, - kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, - kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O, - kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t, - kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, - kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, - kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, - kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, kich1=\E[L, - knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8, rev=\E[7m, - ri=\E[T, rmacs=\E[10m, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, + cub1=^H, cvvis=\E[=0;12C, dch=\E[%p1%dP, dch1=\E[P, + dispc=\E[=%p1%dg, ed=\E[m\E[J, el=\E[m\E[K, el1=\E[1K, + ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, + invis=\E[8m, kbeg=\E[E, kcbt=\E[Z, kdch1=^?, kend=\E[F, + kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf13=\E[Y, + kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d, kf19=\E[e, + kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h, kf23=\E[i, + kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m, kf28=\E[n, + kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q, kf32=\E[r, + kf33=\E[s, kf34=\E[t, kf35=\E[u, kf36=\E[v, kf37=\E[w, + kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z, kf41=\E[@, + kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^, kf46=\E[_, + kf47=\E[`, kf48=\E[{, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, + kf9=\E[U, kich1=\E[L, knp=\E[G, kpp=\E[I, op=\E[0;37;40m, + rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m, rmam=\E[?7l, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr0=\E[0;10m, smacs=\E[12m, smam=\E[?7h, smso=\E[7m, - smul=\E[4m, use=ansi+arrows, use=ansi+idl, - use=ansi+local, use=ecma+index, + sgr0=\E[0;10m, smacs=\E[12m, smam=\E[?7h, + use=ansi+arrows, use=ansi+cup, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, + use=ecma+index, scoansi-new|SCO Extended ANSI standard crt (5.0.6), km, @@ -1625,9 +1636,8 @@ iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100), cols#80, it#8, lines#40, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cnorm=\E[9/y\E[12/y\E[=6l, cr=\r, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\ED, + el1=\E[1K, ht=^I, hts=\EH, ind=\ED, is2=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8, kDC=\E[P, kEND=\E[147q, kHOM=\E[143q, kLFT=\E[158q, kPRT=\E[210q, kRIT=\E[167q, kSPD=\E[218q, kcbt=\E[Z, kdch1=^?, @@ -1637,22 +1647,23 @@ iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100), kf8=\E[008q, kf9=\E[009q, kich1=\E[139q, knp=\E[154q, kpp=\E[150q, kprt=\E[209q, krmir=\E[146q, kspd=\E[217q, nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\, rc=\E8, - rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sc=\E7, - sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m, - tbc=\E[3g, use=ansi+arrows, use=ansi+idl, use=ansi+local, + rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, sc=\E7, sgr0=\E[m, + smam=\E[?7h, smso=\E[1;7m, tbc=\E[3g, use=ansi+arrows, + use=ansi+cup, use=ansi+idl, use=ansi+local, + use=ansi+sgrul, iris-ansi-ap|IRIS ANSI in application-keypad mode, is2=\E[?1l\E=\E[?7h, kent=\EOM, use=iris-ansi, -# From the man-page, this is a quasi-vt100 emulator that runs on SGI's IRIX +# From the man page, this is a quasi-vt100 emulator that runs on SGI's IRIX # (T.Dickey 98/1/24) iris-color|xwsh|IRIX ANSI with color, ncv#33, csr=\E[%i%p1%d;%p2%dr, dch=\E[%p1%dP, dim=\E[2m, - ech=\E[%p1%dX, ich=\E[%p1%d@, rmul=\E[24m, rs1=\Ec, + ech=\E[%p1%dX, ich=\E[%p1%d@, rs1=\Ec, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - use=ecma+italics, use=vt100+enq, use=klone+color, - use=iris-ansi-ap, + use=ecma+underline, use=ecma+italics, use=vt100+enq, + use=klone+color, use=iris-ansi-ap, #### OpenBSD consoles # @@ -1669,51 +1680,48 @@ iris-color|xwsh|IRIX ANSI with color, # Notes from testing with vttest: # fails wrapping test # no 8-bit controls -# identifies as vt200 with selective erase, but does not implement DECSCA +# DA1 says vt200 with selective erase, but does not implement DECSCA +# DA2 says vt320, has DECTABSR # no vt52 mode # also lacks these: # ESC # 8 DEC Screen Alignment Test (DECALN). # CSI ? 5 h Reverse Video (DECSCNM). # pccon+keys|OpenBSD PC keyboard keys, - kbs=^?, kend=\E[8~, kent=\r, kf1=\E[11~, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf21=\E[35~, - kf22=\E[36~, kf23=\E[37~, kf24=\E[38~, kf3=\E[13~, - kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, - kf9=\E[20~, khome=\E[7~, krfr=^R, use=ansi+arrows, - use=vt220+pcedit, + kbs=^?, kend=\E[8~, kent=\r, kf21=\E[35~, kf22=\E[36~, + kf23=\E[37~, kf24=\E[38~, khome=\E[7~, krfr=^R, + use=ansi+arrows, use=vt220+pcedit, use=vt220+sfkeys, + use=xterm+r5+fkeys, pccon+sgr+acs0|sgr and simple ASCII pseudographics for OpenBSD PC console, acsc=+>\,<-\^.v0#`+a:f\\h#i#j+k+l+m+n+o~p-q-r-s_t+u+v+w+x|y# z#{*|!}#~o, - bold=\E[1m, rev=\E[7m, rmso=\E[27m, + bold=\E[1m, rev=\E[7m, sgr=\E[0%?%p1%p3%|%t;7%;%?%p6%t;1%;%?%p2%t;4%;m, - sgr0=\E[m, smso=\E[7m, + sgr0=\E[m, use=ecma+standout, pccon+sgr+acs|sgr and default ASCII pseudographics for OpenBSD PC console, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bold=\E[1m, enacs=\E)0, rev=\E[7m, rmacs=\E(B, rmso=\E[27m, + bold=\E[1m, enacs=\E)0, rev=\E[7m, rmacs=\E(B, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e \E(B%;, - sgr0=\E[m\E(B, smacs=\E(0, smso=\E[7m, + sgr0=\E[m\E(B, smacs=\E(0, use=ecma+standout, # underline renders as color pccon+colors|ANSI colors for OpenBSD PC console, bce, ncv#2, op=\E[49;39m, use=klone+color, -# OpenBSD uses wscons, -# + which does not implement DECSCNM or anything comparable, so it does not +# OpenBSD uses wscons, "imported" from NetBSD in 2000. +# + it does not implement DECSCNM or anything comparable, so it does not # support flash. # + it renders underline using color. pccon+base|base capabilities for OpenBSD PC console, am, km, mc5i, msgr, npc, nxon, xenl, xon, cols#80, it#8, lines#24, - bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, - dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED, nel=\EE, - ri=\EM, rmam=\E[?7l, rmul=\E[24m, rs2=\Ec, smam=\E[?7h, - smul=\E[4m, tbc=\E[3g, use=ansi+cpr, use=ansi+csr, - use=ansi+erase, use=ansi+idl, use=ansi+local, + bel=^G, cr=\r, cub1=^H, cud1=\n, dch=\E[%p1%dP, dch1=\E[P, + ech=\E[%p1%dX, el1=\E[1K, ht=^I, hts=\EH, ich=\E[%p1%d@, + ich1=\E[@, ind=\ED, nel=\EE, ri=\EM, rmam=\E[?7l, rs2=\Ec, + smam=\E[?7h, smul=\E[4m, tbc=\E[3g, use=ecma+underline, + use=ansi+cpr, use=ansi+csr, use=ansi+cup, use=ansi+erase, + use=ansi+idl, use=ansi+local, use=xterm+keypad, pccon0-m|OpenBSD PC console without colors & with simple ASCII pseudographics, use=pccon+sgr+acs0, use=pccon+base, use=pccon+keys, @@ -1744,19 +1752,19 @@ pcvtXX|pcvt VT200 emulator (DEC VT220), acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy yzz~~, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED, + dch=\E[%p1%dP, dch1=\E[P, el1=\E[1K, ht=^I, hts=\EH, + ich=\E[%p1%d@, ind=\ED, is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^?, kdch1=\E[3~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, kpp=\E[5~, nel=\EE, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+apparrows, - use=ansi+csr, use=ansi+erase, use=ansi+idl, + smul=\E[4m, tbc=\E[3g, use=ecma+underline, + use=ecma+standout, use=ansi+apparrows, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idl, use=ansi+local, use=decid+cpr, use=ecma+index, use=vt220+cvis, @@ -1807,12 +1815,10 @@ pcvt50w|DEC VT220 emulation with 50 lines and 132 cols, # OpenBSD implements a color variation pcvt25-color|DEC VT220 emulation with 25 lines and color, cols#80, lines#25, - is2=\E[1;25r\E[25;1H, kf1=\EOP, kf10=\E[29~, kf11=\E[23~, - kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, - kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, - kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[17~, - kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, use=pcvtXX, - use=ecma+color, + is2=\E[1;25r\E[25;1H, kf10=\E[29~, kf11=\E[23~, + kf12=\E[24~, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, + kf8=\E[20~, kf9=\E[21~, use=vt100+pf1-pf4, use=pcvtXX, + use=ecma+color, use=vt220+sfkeys, # Terminfo entries to enable the use of the ncurses library in colour on a # NetBSD-arm32 console (only tested on a RiscPC). @@ -1886,10 +1892,9 @@ ofcons|DNARD OpenFirmware console, wsvt25|NetBSD wscons in 25 line DEC VT220 mode, bce, colors#8, lines#25, pairs#64, - is2=\E[r\E[25;1H, kdch1=\E[3~, kend=\E[8~, kf1=\E[11~, - kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, - khome=\E[7~, op=\E[m, rs1=\Ec, setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, use=vt220, + is2=\E[r\E[25;1H, kdch1=\E[3~, kend=\E[8~, khome=\E[7~, + op=\E[m, rs1=\Ec, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + use=xterm+r5+lockeys, use=vt220, wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta, km, use=wsvt25, @@ -1949,17 +1954,17 @@ mgterm|MGL/MGL2 MobileGear Graphic Library, OTbs, OTpt, am, bce, bw, eo, km, msgr, npc, colors#8, cols#80, it#8, lines#18, pairs#64, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[30;1m, ech=\E[%p1%dX, el1=\E[1K, home=\E[H, - hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, - kb2=\E[E, kcbt=\E[Z, kdch1=^?, kend=\E[F, kf1=\E[M, - kf10=\E[V, kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, - kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, - kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rev=\E[7m, - ri=\E[T, rmso=\E[m, rs2=\E[x\E[m\Ec, setb=\E[4%p1%dm, - setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, - use=ansi+arrows, use=ansi+csr, use=ansi+erase, - use=ansi+idl, use=ansi+local, use=ecma+index, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, ech=\E[%p1%dX, + el1=\E[1K, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, + ich1=\E[@, ind=\E[S, kb2=\E[E, kcbt=\E[Z, kdch1=^?, + kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, + kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, + kf8=\E[T, kf9=\E[U, kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E, + op=\E[x, rev=\E[7m, ri=\E[T, rs2=\E[x\E[m\Ec, + setb=\E[4%p1%dm, setf=\E[3%p1%dm, sgr0=\E[m, + vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=ecma+index, #### FreeBSD console entries @@ -1997,27 +2002,27 @@ cons25w|ansiw|ansi80x25-raw|FreeBSD console (25-line raw mode), am, bce, bw, eo, msgr, npc, cols#80, it#8, lines#25, ncv#21, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, cnorm=\E[=0C, - cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=1C, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, ech=\E[%p1%dX, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, ind=\E[S, kb2=\E[E, kcbt=\E[Z, kdch1=^?, - kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, - kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b, kf17=\E[c, - kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, - kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, - kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, - kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, - kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, - kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], - kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, - kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, kich1=\E[L, knp=\E[G, - kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, - rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, + cr=\r, cub1=^H, cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[30;1m, ech=\E[%p1%dX, hpa=\E[%i%p1%d`, ht=^I, + ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, kb2=\E[E, kcbt=\E[Z, + kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, + kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b, + kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, + kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, + kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O, + kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t, + kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, + kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, + kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, + kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, kich1=\E[L, + knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, + ri=\E[T, rs2=\E[x\E[m\Ec, sc=\E7, sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%? %p6%t;1%;m, - sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, use=ansi+arrows, - use=ansi+erase, use=ansi+idl, use=ansi+local, - use=ecma+index, use=klone+color, + sgr0=\E[m, vpa=\E[%i%p1%dd, use=ansi+arrows, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=ecma+index, + use=klone+color, cons25|ansis|ansi80x25|FreeBSD console (25-line ANSI mode), acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l @@ -2028,9 +2033,8 @@ cons25-debian|FreeBSD console with debian backspace (25-line ANSI mode), kbs=^?, kdch1=\E[3~, use=cons25, cons25-m|ansis-mono|ansi80x25-mono|FreeBSD console (25-line mono ANSI mode), colors@, pairs@, - bold@, dim@, op@, rmul=\E[m, setab@, setaf@, - sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m, - smul=\E[4m, use=cons25, + bold@, dim@, op@, setab@, setaf@, + sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m, use=ansi+sgrul, use=cons25, cons30|ansi80x30|FreeBSD console (30-line ANSI mode), lines#30, use=cons25, cons30-m|ansi80x30-mono|FreeBSD console (30-line mono ANSI mode), @@ -2054,10 +2058,10 @@ cons25r|pc3r|ibmpc3r|cons25-koi8-r|FreeBSD console w/koi8-r cyrillic, use=cons25w, cons25r-m|pc3r-m|ibmpc3r-mono|cons25-koi8r-m|FreeBSD console w/koi8-r cyrillic (mono), colors@, pairs@, - op@, rmul=\E[m, setab@, setaf@, + op@, setab@, setaf@, sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 %t;30;1%;%?%p6%t;1%;m, - smul=\E[4m, use=cons25r, + use=ansi+sgrul, use=cons25r, cons50r|cons50-koi8r|FreeBSD console w/koi8-r cyrillic (50 lines), lines#50, use=cons25r, cons50r-m|cons50-koi8r-m|FreeBSD console w/koi8-r cyrillic (50-line mono), @@ -2074,9 +2078,8 @@ cons25l1|cons25-iso8859|FreeBSD console w/iso 8859-1 chars, use=cons25w, cons25l1-m|cons25-iso-m|FreeBSD console w/iso 8859-1 chars (mono), colors@, pairs@, - bold@, dim@, op@, rmul=\E[m, setab@, setaf@, - sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m, - smul=\E[4m, use=cons25l1, + bold@, dim@, op@, setab@, setaf@, + sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m, use=ansi+sgrul, use=cons25l1, cons50l1|cons50-iso8859|FreeBSD console w/iso 8859-1 chars (50 lines), lines#50, use=cons25l1, cons50l1-m|cons50-iso-m|FreeBSD console w/iso 8859-1 chars (50-line mono), @@ -2180,30 +2183,27 @@ teken-2018|teken as of 2018, acsc=0\333a\260f\370g\361h\261j\331k\277l\332m\300n\305q \304t\303u\264v\301w\302x\263y\363z\362~\371, cvvis@, hpa=\E[%i%p1%dG, hts=\EH, kdch1=\E[3~, kent=\r, - kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - rmir=\E[4l, smir=\E[4h, tbc=\E[3g, use=vt220+cvis, - use=cons25, + kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf5=\E[15~, + kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, + kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmir=\E[4l, smir=\E[4h, + tbc=\E[3g, use=vt100+pf1-pf4, use=vt220+cvis, use=cons25, teken-2022|teken as of 2022, am, bce, eo, mir, msgr, npc, NQ, cols#80, it#8, lines#25, ncv#21, U8#1, bold=\E[1m, cr=\r, cub1=^H, dim=\E[30;1m, ech=\E[%p1%dX, ind=\E[S, kent=\r, nel=\E[E, op=\E[x, rev=\E[7m, ri=\E[T, - rmso=\E[27m, rs2=\E[x\E[m\Ec, + rs2=\E[x\E[m\Ec, sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p5%t;30;1%;%?%p6%t;1%;m, - sgr0=\E[m, use=vt220+cvis, use=ecma+index, - use=ansi+arrows, use=ansi+csr, use=ansi+cup, - use=ansi+erase, use=ansi+idc, use=ansi+idl, + sgr0=\E[m, use=ecma+standout, use=vt220+cvis, + use=ecma+index, use=ansi+arrows, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idc, use=ansi+idl, use=ansi+local, use=ansi+rca2, use=ansi+sgrso, use=ansi+tabs, use=klone+color, teken-vt+fkeys|teken's xterm special keys, - kend=\E[F, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H, - use=vt220+pcedit, + kend=\E[F, khome=\E[H, use=vt100+pf1-pf4, + use=vt220+pcedit, use=xterm+r5+fkeys, teken-sc+fkeys|teken's syscons special keys, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, @@ -2243,9 +2243,9 @@ origpc3|origibmpc3|IBM PC 386BSD console, oldpc3|oldibmpc3|old IBM PC BSD/386 console, OTbs, km, lines#25, - bel=^G, bold=\E[=15F, cr=\r, cud1=\n, dim=\E[=8F, dl1=\E[M, - ht=^I, il1=\E[L, ind=\n, kich1=\E[L, kll=\E[F, knp=\E[G, - kpp=\E[I, nel=\r\n, sgr0=\E[=R, use=ansi+arrows, + bel=^G, bold=\E[=15F, cr=\r, cud1=\n, dim=\E[=8F, ht=^I, + ind=\n, kich1=\E[L, kll=\E[F, knp=\E[G, kpp=\E[I, nel=\r\n, + sgr0=\E[=R, use=ansi+arrows, use=ansi+idl1, # Description of BSD/OS console emulator in version 1.1, 2.0, 2.1 # Note, the emulator supports many of the additional console features @@ -2266,14 +2266,13 @@ bsdos-pc-nobold|BSD/OS PC console w/o bold, bsdos-pc-m|bsdos-pc-mono|BSD/OS PC console mono, OTbs, am, eo, km, xon, cols#80, it#8, lines#25, - bel=^G, clear=\Ec, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - ind=\n, kich1=\E[L, kll=\E[F, knp=\E[G, kpp=\E[I, nel=\r\n, - rc=\E8, sc=\E7, + bel=^G, clear=\Ec, cr=\r, cub1=^H, cud1=\n, ed=\E[J, el=\E[K, + ht=^I, ind=\n, kich1=\E[L, kll=\E[F, knp=\E[G, kpp=\E[I, + nel=\r\n, rc=\E8, sc=\E7, sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7 %t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;, - use=ansi+arrows, use=ansi+idl, use=ansi+local, - use=klone+sgr8, + use=ansi+arrows, use=ansi+cup, use=ansi+idl, + use=ansi+local, use=klone+sgr8, # Old names for BSD/OS PC console used in releases before 4.1. pc3|BSD/OS on the PC console, @@ -2438,9 +2437,10 @@ vt52+arrows|cursor keys for VT52, # support: vt100+keypad|DEC VT100 numeric keypad no fkeys, ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn, +vt100+pf1-pf4|DEC VT100 PF1-PF4, + kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, vt100+pfkeys|DEC VT100 numeric keypad (kf1-kf4), - kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - use=vt100+keypad, + kent=\EOM, use=vt100+pf1-pf4, use=vt100+keypad, vt100+fnkeys|DEC VT100 numeric keypad (kf0-kf10), kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, use=vt100+pfkeys, @@ -2555,8 +2555,8 @@ vt100-w-nam|vt100-nam-w|DEC VT100 132 cols (w/advanced video no automargin), # VT100 with no advanced video. vt100-nav|VT100 without advanced video option, xmc#1, - blink@, bold@, rev@, rmso=\E[m, rmul@, sgr@, sgr0@, smso=\E[7m, - smul@, use=vt100, + blink@, bold@, rev@, rmul@, sgr@, sgr0@, smul@, use=ansi+sgrso, + use=vt100, vt100-nav-w|vt100-w-nav|DEC VT100 132 cols 14 lines (no advanced video option), cols#132, lines#14, use=vt100-nav, @@ -2582,7 +2582,7 @@ vt100-s-bot|vt100-bot-s|VT100 for use with bottom sysline, # This entry (or vt102-nsgr) is probably the right thing to use for # these. vt102|DEC VT102, - dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h, + dch1=\E[P, rmir=\E[4l, smir=\E[4h, use=ansi+idl1, use=vt100, vt102-w|DEC VT102 in wide mode, cols#132, @@ -2615,13 +2615,13 @@ vt131|DEC VT131, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, nel=\r\n, rev=\E[7m$<2/>, ri=\EM$<5/>, - rmam=\E[?7h, rmkx=\E[?1l\E>, rmso=\E[m$<2/>, - rmul=\E[m$<2/>, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, nel=\r\n, + rev=\E[7m$<2/>, ri=\EM$<5/>, rmam=\E[?7h, rmkx=\E[?1l\E>, + rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+csr, + use=vt100+pf1-pf4, # vt132 - like vt100 but slower and has ins/del line and such. # I'm told that <smir>/<rmir> are backwards in the terminal from the @@ -2648,21 +2648,19 @@ vt220-old|vt200-old|DEC VT220 in VT100 emulation mode, bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, clear=\E[H\E[2J$<50>, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH$<10>, dch1=\E[P, ed=\E[J$<50>, - el=\E[K$<3>, home=\E[H, ht=^I, - if=/usr/share/tabset/vt100, ind=\ED$<20/>, - is2=\E[1;24r\E[24;1H, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, - kf8=\E[20~, kf9=\E[21~, khome=\E[1~, kich1=\E[2~, - rev=\E[7m$<2>, rf=/usr/share/tabset/vt100, + el=\E[K$<3>, ht=^I, if=/usr/share/tabset/vt100, + ind=\ED$<20/>, is2=\E[1;24r\E[24;1H, kf10=\E[29~, + kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, + khome=\E[1~, rev=\E[7m$<2>, rf=/usr/share/tabset/vt100, ri=\EM$<14/>, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%? %p9%t\E(0%e\E(B%;$<2>, sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h, - smso=\E[7m, smul=\E[4m, use=ansi+arrows, use=ansi+csr, - use=ansi+idl1, use=ansi+local1, use=vt220+pcedit, - use=vt220+cvis, + smul=\E[4m, use=ecma+underline, use=ecma+standout, + use=ansi+arrows, use=ansi+csr, use=ansi+cup, + use=ansi+idl1, use=ansi+local1, use=ansi+sgrso, + use=vt100+pf1-pf4, use=vt220+pcedit, use=vt220+cvis, # Here's a picture of the Sun/PC editing keypad: # +--------+--------+--------+ @@ -2710,20 +2708,19 @@ vt220-base|DEC VT220 as emulated, enacs=\E)0, flash=\E[?5h$<200/>\E[?5l, ht=^I, hts=\EH, ich=\E[%p1%d@, if=/usr/share/tabset/vt100, ind=\ED, is2=\E[?7h\E[>\E[?1l\E F\E[?4l, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, - kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, krdo=\E[29~, lf1=pf1, - lf2=pf2, lf3=pf3, lf4=pf4, nel=\EE, rev=\E[7m, ri=\EM, - rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m, - rmul=\E[24m, rs1=\E[?3l, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf13=\E[25~, + kf14=\E[26~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, + kf20=\E[34~, khlp=\E[28~, krdo=\E[29~, lf1=pf1, lf2=pf2, + lf3=pf3, lf4=pf4, nel=\EE, rev=\E[7m, ri=\EM, rmacs=\E(B$<4>, + rmam=\E[?7l, rmir=\E[4l, rs1=\E[?3l, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%? %p9%t\E(0%e\E(B%;$<2>, sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+csr, - use=ansi+cup, use=ansi+pp, use=ansi+enq, use=ansi+erase, - use=ansi+idl, use=ansi+local, use=vt220+vtedit, + smul=\E[4m, tbc=\E[3g, use=ecma+underline, + use=ecma+standout, use=ansi+csr, use=ansi+cup, + use=ansi+pp, use=ansi+enq, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=vt100+pf1-pf4, use=vt220+vtedit, + use=vt220+ufkeys, vt220|vt200|DEC VT220, use=vt220+cvis, use=vt220-base, @@ -2745,20 +2742,20 @@ vt220-8bit|vt220-8|vt200-8bit|vt200-8|DEC VT220/200 in 8-bit mode, il=\233%p1%dL, il1=\233L, ind=\ED, is2=\233?7h\233>\233?1l\E F\233?4l, kbs=^H, kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, - kdch1=\2333~, kf1=\EOP, kf10=\23321~, kf11=\23323~, - kf12=\23324~, kf13=\23325~, kf14=\23326~, kf17=\23331~, - kf18=\23332~, kf19=\23333~, kf2=\EOQ, kf20=\23334~, - kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~, kf8=\23319~, - kf9=\23320~, kfnd=\2331~, khlp=\23328~, khome=\233H, - kich1=\2332~, knp=\2336~, kpp=\2335~, krdo=\23329~, - kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\233i, - mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8, rev=\2337m, ri=\EM, - rmacs=\E(B, rmam=\233?7l, rmir=\2334l, rmso=\23327m, - rmul=\23324m, rs1=\233?3l, sc=\E7, + kdch1=\2333~, kf10=\23321~, kf11=\23323~, kf12=\23324~, + kf13=\23325~, kf14=\23326~, kf17=\23331~, kf18=\23332~, + kf19=\23333~, kf20=\23334~, kf6=\23317~, kf7=\23318~, + kf8=\23319~, kf9=\23320~, kfnd=\2331~, khlp=\23328~, + khome=\233H, kich1=\2332~, knp=\2336~, kpp=\2335~, + krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3, + lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8, + rev=\2337m, ri=\EM, rmacs=\E(B, rmam=\233?7l, rmir=\2334l, + rmso=\23327m, rmul=\23324m, rs1=\233?3l, sc=\E7, sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m %?%p9%t\E(0%e\E(B%;$<2>, sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, smir=\2334h, - smso=\2337m, smul=\2334m, tbc=\2333g, use=vt220+cvis8, + smso=\2337m, smul=\2334m, tbc=\2333g, use=vt100+pf1-pf4, + use=vt220+cvis8, # vt220d: # This VT220 description regards F6--F10 as the second block of function keys @@ -2768,10 +2765,17 @@ vt220-8bit|vt220-8|vt200-8bit|vt200-8|DEC VT220/200 in 8-bit mode, # See vt220 for an alternate mapping. # vt220d|DEC VT220 in VT100 mode with DEC function key labeling, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, - kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, - kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf5@, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, use=vt220-old, + kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf5@, kf6=\E[17~, + kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, use=vt220+sfkeys, + use=vt220-old, + +# These are often mapped to unshifted/shifted keys on PC-keyboards -TD +vt220+ufkeys|first 8 function-keys for VT220, + kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf5@, kf6=\E[17~, + kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, +vt220+sfkeys|second 8 function-keys for VT220, + kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, + kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, vt220-nam|v200-nam|VT220 in VT100 mode with no auto margins, am@, @@ -2796,18 +2800,18 @@ vt220-nam|v200-nam|VT220 in VT100 mode with no auto margins, vt200-js|vt220-js|DEC VT200 series with jump scroll, am, msgr, cols#80, - bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - home=\E[H, ht=^I, il1=\E[L, ind=\ED, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cuu1=\E[A, + dch1=\E[P, ht=^I, ind=\ED, is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1h\E[?5l\E[?6l\E[?7h\E[?8h\E[ ?25h\E>\E[m, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED, - rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m, + nel=\r\ED, rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, + rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, smdc=, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m, - use=ansi+csr, use=ansi+erase, use=vt220+cvis, + use=ecma+underline, use=ansi+csr, use=ansi+cup, + use=ansi+erase, use=ansi+idl1, use=vt100+pf1-pf4, + use=vt220+cvis, # This was DEC's VT320. Use the purpose-built one below instead #vt320|DEC VT320 in VT100 emulation mode, @@ -2838,27 +2842,23 @@ vt320|vt300|DEC VT320 7 bit terminal, cols#80, lines#24, wsl#80, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, - dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED, + cub1=^H, cud1=\n, dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, + el1=\E[1K, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED, is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - kbs=^?, kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, - kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, - kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, - kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I, - kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, nel=\EE, rev=\E[7m, + kbs=^?, kdch1=\E[3~, kel=\E[4~, kf12=\E[24~, khome=\E[1~, + kich1=\E[2~, knp=\E[6~, knxt=^I, kpp=\E[5~, kprv=\E[Z, + kslt=\E[4~, nel=\EE, rev=\E[7m, rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%? %p9%t\E(0%e\E(B%;$<2>, sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - use=ansi+apparrows, use=ansi+csr, use=ansi+enq, - use=ansi+idl, use=ansi+local, use=dec+pp, use=vt220+cvis, - use=vt220+keypad, use=dec+sl, + smkx=\E[?1h\E=, tbc=\E[3g, use=ansi+apparrows, + use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+erase, + use=ansi+idl, use=ansi+local, use=ansi+sgrso, + use=ansi+sgrul, use=dec+pp, use=dec+sl, use=vt220+cvis, + use=vt220+keypad, use=vt220+sfkeys, use=vt220+ufkeys, vt320-nam|vt300-nam|DEC VT320 7 bit terminal with no am to make SAS happy, am@, @@ -2899,25 +2899,24 @@ vt340|dec-vt340|vt330|dec-vt330|DEC VT340 graphics terminal with 24 line page, cols#80, it#8, lines#24, vt#3, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dsl=\E[2$~\r\E[1$}\E[K\E[$}, - flash=\E[?5h$<200/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, - hts=\EH, ich=\E[%p1%d@, ind=\ED, + dch=\E[%p1%dP, dch1=\E[P, dsl=\E[2$~\r\E[1$}\E[K\E[$}, + flash=\E[?5h$<200/>\E[?5l, fsl=\E[$}, ht=^I, hts=\EH, + ich=\E[%p1%d@, ind=\ED, is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r \E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2, - lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m, + kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, + lf2=pf2, lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m, rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, - rmul=\E[24m, rs1=\E[?3l, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rs1=\E[?3l, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%? %p9%t\E(0%e\E(B%;$<2>, sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[2$~\E[1$}\E[1;%dH, use=ansi+csr, use=ansi+erase, - use=ansi+idl, use=ansi+local, use=vt220+cvis, + smkx=\E[?1h\E=, smul=\E[4m, tbc=\E[3g, + tsl=\E[2$~\E[1$}\E[1;%dH, use=ecma+underline, + use=ecma+standout, use=ansi+csr, use=ansi+cup, + use=ansi+erase, use=ansi+idl, use=ansi+local, + use=vt100+pf1-pf4, use=vt220+cvis, # Left/right margins are supported in xterm since patch #279 (2012/05/10) vt420+lrmm|VT420 left/right margins, @@ -2947,7 +2946,7 @@ vt420+lrmm|VT420 left/right margins, # (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:"; # also, added <rmam>/<smam> based on the init string -- esr) vt400|vt400-24|dec-vt400|DEC VT400 24x80 column autowrap, - am, eslok, mir, msgr, xenl, xon, + am, mir, msgr, xenl, xon, cols#80, it#8, lines#24, vt#3, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J$<10/>, cr=\r, @@ -2957,18 +2956,17 @@ vt400|vt400-24|dec-vt400|DEC VT400 24x80 column autowrap, is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r \E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2, - lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m, + kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, + lf2=pf2, lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m, rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, - rs1=\E<\E[?3l\E[!p\E[?7h, + rmam=\E[?7l, rmkx=\E[?1l\E>, rs1=\E<\E[?3l\E[!p\E[?7h, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%? %p9%t\E(0%e\E(B%;$<2>, sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[2$~\E[1$}\E[1;%dH, use=ansi+csr, use=ansi+cup, - use=ansi+idc, use=ansi+idl, use=ansi+local, use=dec+sl, + smul=\E[4m, tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH, + use=ecma+underline, use=ecma+standout, use=ansi+csr, + use=ansi+cup, use=ansi+idc, use=ansi+idl, use=ansi+local, + use=ansi+sgrso, use=dec+sl, use=vt100+pf1-pf4, use=vt220+cvis, # (vt420: I removed <kf0>, it collided with <kf10>. I also restored @@ -2986,19 +2984,20 @@ vt420|DEC VT420, hts=\EH, ich=\E[%p1%d@, if=/usr/share/tabset/vt300, ind=\ED, is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, - nel=\EE, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300, - ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, + kf10=\E[29~, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, + kf8=\E[20~, kf9=\E[21~, nel=\EE, rev=\E[7m$<2>, + rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B$<4>, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - rmso=\E[27m, rmul=\E[24m, rs3=\E[?67h\E[64;1"p, + rs3=\E[?67h\E[64;1"p, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%? %p9%t\E(0%e\E(B%;$<2>, sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h, - smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - use=ansi+csr, use=ansi+enq, use=ansi+idl, use=ansi+pp, - use=ansi+local, use=dec+sl, use=vt220+cvis, - use=vt420+lrmm, use=vt220+vtedit, + smir=\E[4h, smkx=\E=, tbc=\E[3g, use=ecma+underline, + use=ecma+standout, use=ansi+csr, use=ansi+enq, + use=ansi+idl, use=ansi+pp, use=ansi+local, use=dec+sl, + use=vt100+pf1-pf4, use=vt220+cvis, use=vt420+lrmm, + use=vt220+vtedit, # DEC VT220 and up support DECUDK (user-defined keys). DECUDK (i.e., pfx) # takes two parameters, the key and the string. Translating the key is @@ -3017,24 +3016,24 @@ vt420|DEC VT420, # application has to know it. # vt420pc|DEC VT420 w/PC keyboard, - kdch1=^?, kend=\E[4~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, + kdch1=^?, kend=\E[4~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~, kf16=\E[14;2~, kf17=\E[15;2~, kf18=\E[17;2~, - kf19=\E[18;2~, kf2=\E[12~, kf20=\E[19;2~, kf21=\E[20;2~, + kf19=\E[18;2~, kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[23~, kf26=\E[24~, kf27=\E[25~, kf28=\E[26~, kf29=\E[28~, - kf3=\E[13~, kf30=\E[29~, kf31=\E[31~, kf32=\E[32~, - kf33=\E[33~, kf34=\E[34~, kf35=\E[35~, kf36=\E[36~, - kf37=\E[23;2~, kf38=\E[24;2~, kf39=\E[25;2~, kf4=\E[14~, - kf40=\E[26;2~, kf41=\E[28;2~, kf42=\E[29;2~, - kf43=\E[31;2~, kf44=\E[32;2~, kf45=\E[33;2~, - kf46=\E[34;2~, kf47=\E[35;2~, kf48=\E[36;2~, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H, + kf30=\E[29~, kf31=\E[31~, kf32=\E[32~, kf33=\E[33~, + kf34=\E[34~, kf35=\E[35~, kf36=\E[36~, kf37=\E[23;2~, + kf38=\E[24;2~, kf39=\E[25;2~, kf40=\E[26;2~, + kf41=\E[28;2~, kf42=\E[29;2~, kf43=\E[31;2~, + kf44=\E[32;2~, kf45=\E[33;2~, kf46=\E[34;2~, + kf47=\E[35;2~, kf48=\E[36;2~, kf6=\E[17~, kf7=\E[18~, + kf8=\E[19~, kf9=\E[20~, khome=\E[H, pctrm=USR_TERM:vt420pcdos:, pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%> %t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+ %d/%p2%s\E\\, - use=vt420, + use=xterm+r5+lockeys, use=vt420, vt420pcdos|DEC VT420 w/PC for DOS Merge, lines#25, @@ -3045,12 +3044,8 @@ vt420pcdos|DEC VT420 w/PC for DOS Merge, sgr0=\E[m, smsc=\E[?1;2r\E[34h, use=vt420pc, vt420f|DEC VT420 with VT kbd; VT400 mode; F1-F5 used as Fkeys, - kdch1=^?, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, - kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, - kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[H, lf1=\EOP, lf2=\EOQ, lf3=\EOR, lf4=\EOS, + kdch1=^?, kf10=\E[21~, khome=\E[H, lf1=\EOP, lf2=\EOQ, + lf3=\EOR, lf4=\EOS, use=vt220+sfkeys, use=xterm+r5+fkeys, use=vt420, vt510|DEC VT510, @@ -3076,9 +3071,20 @@ vt510pcdos|DEC VT510 w/PC for DOS Merge, vt520|DEC VT520, use=ansi+rca, use=vt420, use=ansi+tabs, +vt520-w|DEC VT520 in wide mode, + cols#132, use=vt520, + +# See "4.7.5 Visual Attributes Control Functions" and +# "Table 5-15 (Cont.) Visual Character Attribute Values" +# in EK-VT520-RM vt525|DEC VT525, + colors#8, pairs#64, + op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=vt520, +vt525-w|DEC VT525 in wide mode, + cols#132, use=vt525, + # I just got a brand new Boundless VT520 with that company's "ANSI 2011" # Keyboard, which replaces the old LK41R-AA keyboard. # @@ -3125,10 +3131,9 @@ z340-nam|ZSTEM VT340 terminal emulator 132col 42line (no automatic margins), # The missing "=" in smkx is not a typo (here), but an error in tkterm. tt|tkterm|Don Libes' tk text widget terminal emulator, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%p1%d;%p2%dH, cuu1=\E[A, ind=\n, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, - kf9=\EOX, rmkx=\E[?1l\E>, rmso=\E[m, smkx=\E[?1h\E, - smso=\E[7m, + cup=\E[%p1%d;%p2%dH, cuu1=\E[A, ind=\n, kf5=\EOT, kf6=\EOU, + kf7=\EOV, kf8=\EOW, kf9=\EOX, rmkx=\E[?1l\E>, + smkx=\E[?1h\E, use=ansi+sgrso, use=vt100+pf1-pf4, ######## APPLE @@ -3228,7 +3233,7 @@ tt|tkterm|Don Libes' tk text widget terminal emulator, # my faulty memory, and the following online sources and references: # # [1] "Three Scotts and a Duane" by Simson L. Garfinkel -# http://www.nextcomputers.org/NeXTfiles/Articles/NeXTWORLD/93.8/93.8.Dec.Community1.html +# https://web.archive.org/web/20121019083801/http://www.nextcomputers.org/NeXTfiles/Articles/NeXTWORLD/93.8/93.8.Dec.Community1.html # # [2] NeXTSTEP entry from Wikipedia, the free encyclopedia # https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep @@ -3457,14 +3462,11 @@ nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline) # vt52, vt100, vt102 and xterm. nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5, bw@, mir, npc, - flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG, - kdch1=\E[3~, kend=\E[F, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, - kf16=\E[29~, kf17=\E[31~, kf18=\E[22~, kf19=\E[33~, - kf20=\E[34~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, khome=\E[H, knp=\E[6~, kpp=\E[5~, - vpa=\E[%i%p1%dd, kLFT5=\E[5D, kRIT5=\E[5C, use=ansi+idc, - use=xterm+alt47, use=nsterm-c-s-acs, use=vt220+cvis, + flash=\E[?5h$<200/>\E[?5l, kdch1=\E[3~, kend=\E[F, + kf18=\E[22~, kf5=\E[15~, khome=\E[H, knp=\E[6~, kpp=\E[5~, + kLFT5=\E[5D, kRIT5=\E[5C, use=ansi+idc, use=ansi+rca2, + use=vt220+cvis, use=vt220+sfkeys, use=vt220+ufkeys, + use=xterm+alt47, use=nsterm-c-s-acs, # The versions of Terminal.app in Mac OS X version 10.3.x seem to have # the background color erase feature. The newer version 240.2 in Mac OS X @@ -3525,7 +3527,8 @@ nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (b # Earlier reports state that these differences also apply to OS X 10.7 (Lion), # TERM_PROGRAM_VERSION=303 nsterm-build309|Terminal.app in OS X 10.8, - use=xterm+256setaf, use=nsterm-bce, + use=bracketed+paste, use=xterm+256setaf, + use=nsterm-bce, # removed bogus kDC7 -TD nsterm-build326|Terminal.app in OS X 10.9, @@ -3585,8 +3588,9 @@ nsterm-build361|Terminal.app in OS X 10.11, # # Improved rmso/rmul -TD nsterm-build400|Terminal.app in OS X 10.13, - rmso=\E[27m, rmul=\E[24m, use=xterm+sm+1006, - use=ecma+italics, use=nsterm-build361, + use=ecma+underline, use=ecma+standout, + use=xterm+sm+1006, use=ecma+italics, + use=nsterm-build361, nsterm-build440|Terminal.app in MacOS 11.6.8, use=xterm+alt1049, use=nsterm-build400, @@ -3636,29 +3640,79 @@ iTerm.app|iterm|iTerm.app terminal emulator for Mac OS X, wsl#50, blink=\E[5m, bold=\E[1m, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, el1=\E[1K, - flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG, - kLFT=\E[1;2D, kRIT=\E[1;2C, kbs=^?, kcbt=\E[Z, kdch1=\E[3~, - kend=\EOF, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - knp=\E[6~, kpp=\E[5~, op=\E[0m, rev=\E[7m, ri=\EM, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + flash=\E[?5h$<200/>\E[?5l, kLFT=\E[1;2D, kRIT=\E[1;2C, + kbs=^?, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF, knp=\E[6~, + kpp=\E[5~, op=\E[0m, rev=\E[7m, ri=\EM, rmam=\E[?7l, + rmkx=\E[?1l\E>, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%? %p9%t\016%e\017%;, - sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, vpa=\E[%i%p1%dd, kEND5=\E[1;5F, - kHOM5=\E[1;5H, use=ansi+apparrows, use=ansi+csr, - use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl, - use=ansi+local, use=vt100+4bsd, use=vt100+keypad, - use=vt100+pfkeys, use=xterm+alt47, use=xterm+sl-twm, - use=xterm+x11mouse, use=xterm+256setaf, use=vt220+cvis, + sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, + kEND5=\E[1;5F, kHOM5=\E[1;5H, use=ansi+apparrows, + use=ansi+csr, use=ansi+enq, use=ansi+erase, use=ansi+idc, + use=ansi+idl, use=ansi+local, use=ansi+rca2, + use=ansi+sgrso, use=ansi+sgrul, use=vt100+4bsd, + use=vt100+keypad, use=vt100+pfkeys, use=xterm+r5+fkeys, + use=xterm+alt47, use=xterm+sl-twm, use=xterm+x11mouse, + use=xterm+256setaf, use=vt220+cvis, -# iTerm2 3.0.15 +# iTerm2 # # https://iterm2.com/ # https://github.com/gnachman/iTerm2 # ~/Library/Preferences/com.googlecode.iterm2.plist # "iTerm" stalled in 2009. A different set of developers began "iTerm2". # +# iTerm2 3.5.0 +# +# NOTES: +# with esctest: +# 365 tests passed, 196 known bugs, 2 tests fail intermittently +# the known bugs include several of the cursor-movement tests +# the ED, EL tests include those failing intermittently +# DECCOLM, DECERA, DECSED, DECSERA and SPA do not work +# most of the DECRPM, DECRQSS reports fail +# with vttest: +# reports primary DA as VT420 +# VT420 rectangular operations, as well as DECBI/DEVFI work with margins +# SRM does not work +# DECSED, and SPA do not work +# REP and SD work, SL/SR/SU do not work +# with tack: +# status-line does not work +# +# The default settings have blinking-text and keypad-application mode disabled. +# Enabling the latter make it half-working (numlock sends an escape character). +# About half of the modified function-keys are untestable due to preassigned +# features. +# +# iTerm2 3.5.0 comes with a 4-year-old copy of xterm's terminfo (June 2020), +# which is modified, using the ncurses TERMINFO_DIRS variable to substitute +# this locally: +# + xterm-nrc and xterm+pcfN are removed +# + the developer made changes to adapt it to the 16-year-old version of +# ncurses bundled with MacOS, i.e., changing the mouse protocol to the +# legacy X11 format and reducing the number of colors to 32k (in more than +# one place). In the former case, the developer was confused about why that +# was necessary. In the latter, the developer clearly misunderstood how the +# tools work. +# + vt420+lrmm is modified, removing smglr and corrupting mgc (again, developer +# confusion). +# + the developer added a couple of features, misnaming them as "xterm" blocks: +# + a copy of kitty+setal renamed to xterm+setulc (and Setulc) is added, but +# the feature is first mentioned in iTerm2 changes in May 2020, while +# it is first mention in kitty changes in December 2016. +# + Smulx is added +# +# iTerm2 3.4.0 +# +# NOTES: +# with esctest: +# 293 tests pass, 270 tests fail +# with tack: +# minor improvements which do not alter the terminfo +# +# iTerm2 3.0.15 +# # NOTES: # with vttest: # reports primary DA as VT100 with AVO: \E[?1;2c @@ -3692,21 +3746,24 @@ iTerm2.app|iterm2|terminal emulator for Mac OS X, kf19=\E[18;2~, kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, kind=\E[1;2B, kri=\E[1;2A, nel=\EE, op=\E[39;49m, - rmso=\E[27m, rmul=\E[24m, rs2=\E[!p\E[?3;4l\E[4l\E>\E[?1000l, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? %p5%t;2%;m%?%p9%t\016%e\017%;, - kDN3=\E\E[B, kDN4=\E[1;10B, kDN5=\E[1;5B, kDN6=\E[1;6B, - kEND3=\E[1;9F, kEND4=\E[1;10F, kEND6=\E[1;6F, - kEND7=\E[1;13F, kEND8=\E[1;14F, kHOM3=\E[1;9H, - kHOM4=\E[1;10H, kHOM6=\E[1;6H, kHOM7=\E[1;13H, - kHOM8=\E[1;14H, kLFT3=\E\E[D, kLFT4=\E[1;10D, - kLFT5=\E[1;5D, kLFT6=\E[1;6D, kNXT3=\E\E[6~, - kPRV3=\E\E[5~, kRIT3=\E\E[C, kRIT4=\E[1;10C, - kRIT5=\E[1;5C, kRIT6=\E[1;6C, kUP3=\E\E[A, kUP4=\E[1;10A, - kUP5=\E[1;5A, kUP6=\E[1;6A, use=ecma+index, + Smulx=\E[4:%p1%dm, kDN3=\E\E[B, kDN4=\E[1;10B, + kDN5=\E[1;5B, kDN6=\E[1;6B, kEND3=\E[1;9F, + kEND4=\E[1;10F, kEND6=\E[1;6F, kEND7=\E[1;13F, + kEND8=\E[1;14F, kHOM3=\E[1;9H, kHOM4=\E[1;10H, + kHOM6=\E[1;6H, kHOM7=\E[1;13H, kHOM8=\E[1;14H, + kLFT3=\E\E[D, kLFT4=\E[1;10D, kLFT5=\E[1;5D, + kLFT6=\E[1;6D, kNXT3=\E\E[6~, kPRV3=\E\E[5~, + kRIT3=\E\E[C, kRIT4=\E[1;10C, kRIT5=\E[1;5C, + kRIT6=\E[1;6C, kUP3=\E\E[A, kUP4=\E[1;10A, kUP5=\E[1;5A, + kUP6=\E[1;6A, rv=\E\\[>64;[1-6][0-9];0c, smxx=\E[9m, + xr=\EP>\\|iTerm2 ([1-9][.0-9])\E\\\\, + use=ecma+underline, use=ecma+standout, use=ecma+index, + use=report+version, use=report+da2, use=xterm+alt+title, use=ecma+italics, use=iterm, - use=bracketed+paste, + use=bracketed+paste, use=kitty+setal, # xnuppc - Darwin PowerPC Console (a.k.a. "darwin") # @@ -3806,15 +3863,15 @@ iTerm2.app|iterm2|terminal emulator for Mac OS X, xnuppc+basic|Darwin PowerPC console basic capabilities, am, bce, mir, xenl, NQ, it#8, - bold=\E[1m, cr=\r, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - dsl=\E]2;\007, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\n, - kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, + bold=\E[1m, cr=\r, dsl=\E]2;\007, el1=\E[1K, ht=^I, hts=\EH, + ind=\n, kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, + kcuu1=\EOA, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, tbc=\E[3g, - use=ansi+csr, use=ansi+erase, use=ansi+local, - use=ansi+sgrso, use=ansi+sgrul, use=vt100+keypad, + use=ansi+csr, use=ansi+cup, use=ansi+erase, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, + use=vt100+keypad, xnuppc+c|Darwin PowerPC console ANSI color support, ncv#32, use=klone+color, @@ -3993,7 +4050,7 @@ crt|crt-vt220|CRT 2.3 emulating VT220, # TN3270, TVI910, TVI925, Wyse 50/60, and ANSI. # Changes: # Added ANSI sc/rc and REP in 2019/12/17 -# Added TVI910/ TVI925 in 2019/11/20 +# Added TVI910/ TVI925 in 2019/11/20 # # Default: # Emulate "Xterm", using "ANSI with 256color" @@ -4058,8 +4115,8 @@ scrt|securecrt|SecureCRT emulating xterm-256color, # TERM=xterm # # vttest: -# DA1: \E[?62;1;2;6;7;8;9;15;22c (VT200 with DRCS, UDK, NRCS) -# DA2: \E[>1;10;0c +# DA1: \E[?62;1;2;6;7;8;9;15;22c (VT200 with DRCS, UDK, NRCS) +# DA2: \E[>1;10;0c # However: # + NRCS tests do not work # + DECUDK test fails @@ -4151,8 +4208,8 @@ putty|PuTTY terminal emulator, am, bce, bw, ccc, mir, msgr, xenl, xon, XT, it#8, ncv#22, U8#1, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, cr=\r, cub1=^H, cud1=\ED, cup=\E[%i%p1%d;%p2%dH, - cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, + bel=^G, cr=\r, cub1=^H, cud1=\ED, cuu1=\EM, dch=\E[%p1%dP, + dch1=\E[P, dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G \342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e %p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G @@ -4160,26 +4217,26 @@ putty|PuTTY terminal emulator, %e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E %%G\340\202\242\E%%@%e%p1%c%;, ech=\E[%p1%dX, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, - ind=\n, + flash=\E[?5h$<100/>\E[?5l, ind=\n, initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/ %02x%p4%{255}%*%{1000}%/%02x, is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R, kbs=^?, kcbt=\E[Z, khome=\E[1~, kind=\E[B, kri=\E[A, kspd=^Z, nel=\r\n, oc=\E]R, op=\E[39;49m, ri=\EM, rmacs=^O, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, - rmul=\E[24m, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 %;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, vpa=\E[%i%p1%dd, E3=\E[3J, - use=ansi+apparrows, use=ansi+csr, use=ansi+erase, - use=ansi+idl, use=ansi+local, use=ansi+tabs, - use=ansi+rep, use=bracketed+paste, use=ecma+index, - use=ecma+strikeout, use=klone+color, use=klone+sgr, - use=putty+cursor, use=putty+fnkeys, use=vt220+pcedit, + smkx=\E[?1h\E=, E3=\E[3J, rv=\E\\[>0;136;0c, + use=ecma+underline, use=ecma+standout, + use=ansi+apparrows, use=ansi+csr, use=ansi+cup, + use=ansi+erase, use=ansi+idl, use=ansi+local, + use=ansi+tabs, use=ansi+rep, use=bracketed+paste, + use=ecma+index, use=ansi+rca2, use=ecma+strikeout, + use=klone+color, use=klone+sgr, use=putty+cursor, + use=putty+fnkeys, use=report+da2, use=vt220+pcedit, use=xterm+alt1049, use=vt102+enq, use=xterm+sm+1006, use=xterm+sl, use=vt100+fnkeys, use=putty+keypad, use=vt220+cvis, @@ -4226,19 +4283,14 @@ putty+fnkeys|fn-keys for PuTTY, use=putty+fnkeys+esc, putty+fnkeys+esc|ESC[n~ fn-keys for PuTTY, - kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, - kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, + use=vt220+sfkeys, use=xterm+r5+fkeys, putty+fnkeys+linux|Linux fn-keys for PuTTY, kf1=\E[[A, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, use=putty+fnkeys+esc, putty+fnkeys+xterm|Xterm R6 fn-keys for PuTTY, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - use=putty+fnkeys+esc, + use=vt100+pf1-pf4, use=putty+fnkeys+esc, putty+fnkeys+vt400|VT400 fn-keys for PuTTY, use=putty+fnkeys+esc, @@ -4246,9 +4298,9 @@ putty+fnkeys+vt400|VT400 fn-keys for PuTTY, # Shifted F1 is F11. F13-F20 inherit from the defaults, and the last distinct # key is F20. putty+fnkeys+vt100|VT100+ fn-keys for PuTTY, - kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EO[, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, - kf9=\EOX, use=putty+fnkeys+esc, + kf10=\EOY, kf11=\EOZ, kf12=\EO[, kf5=\EOT, kf6=\EOU, + kf7=\EOV, kf8=\EOW, kf9=\EOX, use=vt100+pf1-pf4, + use=putty+fnkeys+esc, # Unlike xterm-sco, this leaves kmous ambiguous with kf1. # @@ -4259,8 +4311,7 @@ putty+fnkeys+vt100|VT100+ fn-keys for PuTTY, # F37-F48 - control/shift # putty+fnkeys+sco|SCO fn-keys for PuTTY, - kbeg=\E[E, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, + kbeg=\E[E, kdch1=^?, kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, @@ -4269,8 +4320,8 @@ putty+fnkeys+sco|SCO fn-keys for PuTTY, kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, - kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, - kich1=\E[L, knp=\E[G, kpp=\E[I, + kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, kich1=\E[L, + knp=\E[G, kpp=\E[I, use=vt100+noapp, #### mintty # https://github.com/mintty/mintty @@ -4312,11 +4363,16 @@ mintty+common|shared capabilities for mintty, rsupm=\E[75m, smm@, smpch=\E[11m, sshm=\E[1:2m, ssubm=\E[74m, ssupm=\E[73m, Rmol=\E[55m, Smol=\E[53m, Smulx=\E[4:%p1%dm, blink2=\E[6m, norm=\E[22m, - opaq=\E[28m, smul2=\E[21m, use=linux+kbs, use=ansi+rep, - use=ecma+strikeout, use=ecma+index, use=vt420+lrmm, - use=xterm+focus, use=xterm+sm+1006, use=xterm+pcfkeys, - use=xterm+tmux, use=ecma+italics, use=xterm-basic, - use=bracketed+paste, use=report+version, + opaq=\E[28m, rv=\E\\[>77;[0-9];0c, smul2=\E[21m, + xr=\EP>\\|mintty ([1-9][.0-9]+)\E\\\\, use=linux+kbs, + use=ansi+rep, use=ecma+strikeout, use=ecma+index, + use=mintty+keypad, use=vt420+lrmm, use=xterm+focus, + use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux, + use=ecma+italics, use=xterm-basic, use=bracketed+paste, + use=report+version, +mintty+keypad|mintty special numeric keypad, + kbeg=\EOE, kpADD=\EOk, kpDIV=\EOo, kpMUL=\EOj, kpSUB=\EOm, + # 2019-06-09: These capabilities are commented-out for compatibility with # existing releases 5.9-6.1, and may be considered for inclusion after the # release of ncurses 6.2: @@ -4377,7 +4433,7 @@ mintty+common|shared capabilities for mintty, # "resize -s"), though it does not pass SIGWINCH to the application if the # user resizes the window with the mouse. teraterm2.3|Tera Term Pro 2.3, - km, + km, npc, ncv#43, vt@, acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u @@ -4385,16 +4441,13 @@ teraterm2.3|Tera Term Pro 2.3, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG, kf1=\E[11~, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, - kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, - kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, - kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, op=\E[100m, rev=\E[7m, ri=\EM, - rmso=\E[27m, rmul=\E[24m, sgr0=\E[0m\017, smso=\E[7m, - smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+idl, - use=vt220+vtedit, use=vt100+enq, use=klone+color, - use=vt100, use=vt220+cvis, + flash=\E[?5h$<100/>\E[?5l, kf10=\E[21~, kf11=\E[23~, + kf12=\E[24~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, + kf9=\E[20~, op=\E[100m, rev=\E[7m, ri=\EM, sgr0=\E[0m\017, + smul=\E[4m, use=ecma+underline, use=ecma+standout, + use=ansi+idl, use=ansi+rca2, use=vt100+enq, + use=klone+color, use=vt220+cvis, use=vt220+vtedit, + use=vt220+sfkeys, use=xterm+r5+lockeys, use=vt100, # Version 4.59 has regular VT100 line-drawing (so it is no longer necessary # to choose a Windows OEM font). @@ -4409,7 +4462,7 @@ teraterm2.3|Tera Term Pro 2.3, # - it recognizes the dtterm window controls for reporting size in # characters and pixels. # - it passes SIGWINCH. -teraterm4.59|Tera Term Pro 4.59, +teraterm4.59|Tera Term 4.59, bce, xenl@, ncv#41, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, @@ -4439,13 +4492,48 @@ teraterm4.59|Tera Term Pro 4.59, # + recognizes xterm's original direct-colors sequences, but result is # poor. # + no UTF-8 apparent when UTF-8 is set, with font Lucida Control -teraterm4.97|Tera Term Pro 4.97, +teraterm4.97|Tera Term 4.97, XT, use=ecma+color, use=xterm+sm+1006, use=teraterm4.59, teraterm-256color|TeraTerm with xterm 256-colors, use=xterm+256setaf, use=teraterm, +teraterm5.0|Tera Term 5.0, + xenl, + rv=\E\\[>32;331;0c, use=bracketed+paste, use=dec+sl, + use=xterm+keypad, use=report+da2, use=teraterm4.97, teraterm|Tera Term, - use=teraterm4.97, + use=teraterm5.0, + +#### RLogin +# RLogin 2.30.4 +# https://github.com/kmiya-culti/RLogin +rlogin-color, + OTbs, OTpt, am, bce, km, mir, msgr, npc, xenl, + OTkn#12, colors#0x100, cols#80, lines#24, pairs#0x10000, + OTrs=\E[!p\E[?3;4l\E[4l\E>\E]104\007, bel=^G, + bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J, + cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, + cud1=\n, dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, + el=\E[K, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, + ich=\E[%p1%d@, ind=\n, + is2=\E[!p\E[?3;4l\E[4l\E>\E]104\007, kbeg=\EOE, + kcbt=\E[Z, kend=\EOF, kf5=\E[15~, kll=\EOF, kmous=\E[M, + kslt=\EOF, meml=\El, memu=\Em, op=\E[39;49m, rc=\E8, ri=\EM, + rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, + rmso=\E[27m, rmul=\E[24m, rs1=\Ec, sc=\E7, + setab=\E[48;5;%p1%dm, setaf=\E[38;5;%p1%dm, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%; + %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, + sgr0=\E[m, smam=\E[?7h, smcup=\E[?1049h, smir=\E[4h, + smkx=\E[?1h\E=, rv=\E\\[>65;331;0c, + xr=\EP>\\|RLogin\\(([1-9][.0-9]+)\\)\E\\\\, + use=ansi+apparrows, use=ansi+cup, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca2, + use=ansi+sgrdim, use=bracketed+paste, use=ecma+index, + use=ecma+italics, use=ecma+strikeout, use=vt420+lrmm, + use=decid+cpr, use=report+da2, use=report+version, + use=vt100+pf1-pf4, use=vt220+pcedit, use=vt220+ufkeys, + use=xterm+acs, #### Command prompt @@ -4525,8 +4613,8 @@ ms-vt-utf8|vt-utf8|UTF-8 flavor of VT100+, # # The cnorm/civis definitions added in 2015 are unrelated to any standard. ms-vt100-16color|VT-UTF-8 and VT100+, - civis=\E[?h, cnorm=\E[?l, rmso=\E[27m, rmul=\E[24m, - use=ibm+16color, use=ms-vt100+, + civis=\E[?h, cnorm=\E[?l, use=ecma+underline, + use=ecma+standout, use=ibm+16color, use=ms-vt100+, # Based on # https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences @@ -4582,11 +4670,45 @@ winconsole|Windows 10 new console, use=ansi+local, use=ecma+sgr, use=ecma+color, use=vt220+cvis, use=vt220+pcedit, use=xterm+nopcfkeys, -# Windows Terminal (Preview) +# Windows Terminal # https://github.com/microsoft/terminal # +# Version 1.21.2911.0 +# 2024-10-17 +# +# - The "About" dialog has a pointer to the release notes, but that turns out +# to be for all branches. This particular version (unlike those previously +# tested) happens to be a non-preview version. +# - Windows Terminal #2958 has relevant discussion. +# +# tack: +# - keypad escapes still do not work +# - meta mode does not work +# - when running tests, the screen maximized and did not resume normal size +# +# vttest: +# - identifies as a VT100-level terminal supporting Greek and Turkish (not +# applicable to a VT100), horizontal scrolling () and DRCS (seems to work) +# - left/right margins work +# - DECSCUSR is okay except for mode 1 +# - SL/SR fail +# - does not support XTVERSION +# - some mouse controls work, but not highlight tracking and X10 compatibility +# - mouse focus events appear - but not in the test-screen (like VTE). +# - cursor position after alternate screen is correct for 1049, not otherwise +# - window reporting does not work +# +# wraptest: +# - DECRC does not restore wrap +# +# other: +# - change history says it supports bracketed paste +# - Greek and Turkish character sets work with GL, not GR +# - source code says it implements OSC 52, as well as 12, 112, but not 104. +# # Windows 10 22H2 (also Windows 11) # Version 1.16.10261.0 +# 2020-01-25 # # - Windows Terminal #1553: "Feature Request: Mouse/Touch/Pointer Bindings # (like middle-click paste, right-click context menu, etc.)", compare to @@ -4597,6 +4719,7 @@ winconsole|Windows 10 new console, # # Windows 10 21H1 # Version 1.9.1942.0 +# 2021-07-13 # # This has longstanding issues with CR/LF mapping, e.g., # - first reported by Juergen Pfeifer August 13, 2020, with workaround @@ -4646,6 +4769,7 @@ winconsole|Windows 10 new console, # # Windows 10 1903 # Version 0.2.1831.0 +# 2019-07-02 # # The task manager shows this as "OpenConsole.exe", which differs # from the "Windows Command Processor" used for the command-prompt. @@ -4682,13 +4806,19 @@ winconsole|Windows 10 new console, # - color palette can be altered, but OSC 104 for resetting does not work # - crashed with a script used for testing NRCS. # - does not recognize either xterm+direct or xterm+indirect escapes. -ms-terminal|Windows10 terminal, +ms-terminal|Windows terminal, + use=xterm+256color, use=ms+terminal, +ms-terminal-direct|Windows terminal with direct-colors, + use=xterm+direct, use=ms+terminal, +ms+terminal|building block for Windows terminal, npc, - cud1=\E[B, kcbt=\E[Z, rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@, - Cr@, Ms@, use=linux+kbs, use=xterm+256color, - use=xterm+pcfkeys, use=ansi+rep, use=xterm+sm+1006, - use=ecma+index, use=ecma+italics, use=ecma+strikeout, - use=xterm-basic, use=xterm+tmux, + cud1=\E[B, kbeg=\EOE, kcbt=\E[Z, oc@, rmkx=\E[?1l, rmm@, + smkx=\E[?1h, smm@, rv=\E\\[>0;10;1c, use=linux+kbs, + use=bracketed+paste, use=xterm+pcfkeys, use=ansi+rep, + use=xterm+sm+1006, use=ecma+index, use=ecma+italics, + use=ecma+strikeout, use=report+da2, use=vt420+lrmm, + use=xterm-basic, use=xterm+focus, use=xterm+tmux, + use=xterm+sm+1003, #### Visual Studio # Visual Studio Code 1.45.0 uses xterm.js 12.8.1 (see https://xtermjs.org/). @@ -4737,10 +4867,11 @@ ms-terminal|Windows10 terminal, # - color-palette cannot be changed vscode|xterm.js|Visual Studio Code terminal using xterm.js, npc, - kcbt=\E[Z, rmkx=\E[?1l, smkx=\E[?1h, use=linux+kbs, - use=xterm+256setaf, use=ecma+index, use=xterm+focus, - use=xterm+sm+1006, use=xterm+pcfkeys, use=ecma+italics, - use=xterm-basic, use=bracketed+paste, + kcbt=\E[Z, rmkx=\E[?1l, smkx=\E[?1h, rv=\E\\[>0;276;0c, + use=linux+kbs, use=report+da2, use=xterm+256setaf, + use=ecma+index, use=xterm+focus, use=xterm+sm+1006, + use=xterm+pcfkeys, use=ecma+italics, use=xterm-basic, + use=bracketed+paste, vscode-direct|Visual Studio Code with direct-colors, use=xterm+indirect, use=vscode, @@ -4766,14 +4897,13 @@ x10term|vs100-x10|xterm terminal emulator (X10 window system), OTbs, am, km, mir, msgr, xenl, xon, cols#80, it#8, lines#65, bold=\E[1m, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, ind=\n, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmam=\E[?7l, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, - smso=\E[7m, smul=\E[4m, use=ansi+idl, + cub1=^H, cud1=\n, cuf1=\E[C, cuu1=\E[A, dch=\E[%p1%dP, + dch1=\E[P, ed=\E[J, el=\E[K, ht=^I, ind=\n, + is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, rev=\E[7m, ri=\EM, rmam=\E[?7l, + rmir=\E[4l, rmkx=\E[?1l\E>, sgr0=\E[m, smam=\E[?7h, + smir=\E[4h, smkx=\E[?1h\E=, use=ansi+cup, use=ansi+idl, + use=ansi+sgrso, use=ansi+sgrul, use=vt100+pf1-pf4, # csl is extension which clears the status line x10term+sl|status-line for X10 xterm, @@ -4789,20 +4919,25 @@ xterm-r5|xterm R5 version, OTbs, am, km, msgr, xenl, cols#80, it#8, lines#24, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - hts=\EH, ind=\n, kdl1=\E[31~, kel=\E[8~, kf0=\EOq, - kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, - kil1=\E[30~, kmous=\E[M, rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, + ed=\E[J, el=\E[K, ht=^I, hts=\EH, ind=\n, kdl1=\E[31~, + kel=\E[8~, kf0=\EOq, khome=\E[1~, kil1=\E[30~, kmous=\E[M, + rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H, sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 %;m, - sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, use=xterm+kbs, use=ansi+apparrows, - use=ansi+csr, use=ansi+idc, use=ansi+idl, use=ansi+local, - use=vt220+pcedit, use=vt100+enq, + sgr0=\E[m, smkx=\E[?1h\E=, tbc=\E[3g, use=xterm+kbs, + use=ansi+apparrows, use=ansi+csr, use=ansi+cup, + use=ansi+idc, use=ansi+idl, use=ansi+local, + use=ansi+sgrso, use=ansi+sgrul, use=vt220+pcedit, + use=vt100+enq, use=xterm+r5+fkeys, + +# X11R5 used function-keys based on, but different from VT220, assigning keys +# F1-R5 (unlike VT220), and limiting to F12 (perhaps influenced by other +# keyboards). +xterm+r5+fkeys|VT220-like function keys in X11R5 xterm, + use=xterm+r5+lockeys, use=vt220+ufkeys, +xterm+r5+lockeys|XTerm "local" keys in vt220 scheme, + kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, # Compatible with the R6 xterm # (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed) @@ -4814,22 +4949,18 @@ xterm-r6|xterm X11R6 version, cols#80, it#8, lines#24, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, ed=\E[J, el=\E[K, enacs=\E)0, home=\E[H, ht=^I, - hts=\EH, ind=\n, + dch=\E[%p1%dP, dch1=\E[P, enacs=\E)0, ht=^I, hts=\EH, ind=\n, is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\E[11~, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, - kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, - kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, - kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, kmous=\E[M, meml=\El, memu=\Em, - rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmkx=\E[?1l\E>, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kmous=\E[M, + meml=\El, memu=\Em, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l, + rmkx=\E[?1l\E>, rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sgr0=\E[m, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g, - use=xterm+alt47, use=ansi+csr, use=ansi+idl, - use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, - use=vt220+vtedit, use=xterm+kbs, use=vt100+enq, + use=xterm+alt47, use=ansi+csr, use=ansi+cup, + use=ansi+erase, use=ansi+idl, use=ansi+local, + use=ansi+sgrso, use=ansi+sgrul, use=vt220+vtedit, + use=xterm+kbs, use=vt100+enq, use=vt220+sfkeys, + use=xterm+r5+fkeys, xterm-old|antique xterm version, use=xterm-r6, @@ -4849,18 +4980,12 @@ xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System), cols#80, lines#24, ncv@, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, - home=\E[H, hpa=\E[%i%p1%dG, ind=\n, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, + flash=\E[?5h$<100/>\E[?5l, ind=\n, is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, - kbeg=\EOE, kbs=^?, kdch1=^?, kend=\EOF, kf1=\E[11~, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, - kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, - kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, - kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kmous=\E[M, kslt=\E[4~, - meml=\El, memu=\Em, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, - rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=^O, + kbeg=\EOE, kbs=^?, kdch1=^?, kend=\EOF, kfnd=\E[1~, + kmous=\E[M, kslt=\E[4~, meml=\El, memu=\Em, rev=\E[7m, + ri=\EM, rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rs1=^O, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} %=%t3%e%p1%d%;m, @@ -4869,17 +4994,18 @@ xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System), sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 %;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, - smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, - use=ansi+apparrows, use=ansi+csr, use=ansi+idc, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, - use=xterm+alt47, use=xterm+kbs, use=vt100+enq, + smul=\E[4m, use=ecma+underline, use=ecma+standout, + use=ansi+apparrows, use=ansi+csr, use=ansi+cup, + use=ansi+idc, use=ansi+idl, use=ansi+inittabs, + use=ansi+local, use=ansi+rca2, use=xterm+alt47, + use=xterm+kbs, use=vt100+enq, use=xterm+r5+fkeys, use=ecma+color, use=vt220+cvis, use=vt220+keypad, - use=vt220+pcedit, + use=vt220+pcedit, use=vt220+sfkeys, # This is the stock xterm entry supplied with XFree86 3.3, which uses VT100 # codes for F1-F4 except while in VT220 mode. xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System), - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-xf86-v32, + use=vt100+pf1-pf4, use=xterm-xf86-v32, # This version was released in XFree86 3.3.3 (November 1998). # Besides providing printer support, it exploits a new feature that allows @@ -4935,7 +5061,7 @@ vt220+cvis8|8-bit DECTCEM VT220 cursor-visibility, att610+cvis0|AT&T 610 cursor-visibility, civis=\E[?25l, cnorm=\E[?12l\E[?25h, att610+cvis|AT&T 610 cursor-visibility with blink, - civis=\E[?25l, cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, + cvvis=\E[?12;25h, use=att610+cvis0, # This version was released in XFree86 4.4. xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System), @@ -4952,8 +5078,8 @@ xterm+nofkeys|building block for xterm fkey-variants, use=xterm+keypad, use=xterm-basic, xterm-p370|xterm patch #370, - rv=\E\\[41;[1-6][0-9][0-9];0c, - xr=\EP>\\|XTerm\\([1-9][0-9]+\\)\E\\\\, + rv=\E\\[>41;[1-6][0-9][0-9];0c, + xr=\EP>\\|XTerm\\(([1-9][0-9]+)\\)\E\\\\, use=ecma+index, use=ansi+rep, use=ecma+strikeout, use=xterm+pcfkeys, use=xterm+nofkeys, use=bracketed+paste, use=report+version, @@ -4974,7 +5100,7 @@ xterm+kbs|fragment for backspace key, kbs=^H, # Use this fragment for terminals that always use DEL for "backspace". -linux+kbs|fragment for "backspace" key, +linux+kbs|Linux fragment for "backspace" key, kbs=^?, # # This fragment describes as much of XFree86 xterm's "pc-style" function @@ -5005,25 +5131,20 @@ xterm+pcfkeys|xterm fragment for PC-style fkeys, # kf21 control f1 = \E[42~ # kf31 shift control f1 = \E[52~ xterm+nopcfkeys|fragment without PC-style fkeys, - kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, - kf20=\E[34~, kf21=\E[42~, kf22=\E[43~, kf23=\E[44~, - kf24=\E[45~, kf25=\E[46~, kf26=\E[47~, kf27=\E[48~, - kf28=\E[49~, kf29=\E[50~, kf3=\E[13~, kf30=\E[51~, - kf31=\E[52~, kf32=\E[53~, kf33=\E[54~, kf34=\E[55~, - kf35=\E[56~, kf36=\E[57~, kf37=\E[58~, kf38=\E[59~, - kf39=\E[60~, kf4=\E[14~, kf40=\E[61~, kf41=\E[62~, - kf42=\E[63~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, + kf21=\E[42~, kf22=\E[43~, kf23=\E[44~, kf24=\E[45~, + kf25=\E[46~, kf26=\E[47~, kf27=\E[48~, kf28=\E[49~, + kf29=\E[50~, kf30=\E[51~, kf31=\E[52~, kf32=\E[53~, + kf33=\E[54~, kf34=\E[55~, kf35=\E[56~, kf36=\E[57~, + kf37=\E[58~, kf38=\E[59~, kf39=\E[60~, kf40=\E[61~, + kf41=\E[62~, kf42=\E[63~, use=vt220+sfkeys, + use=xterm+r5+fkeys, vt100+noapp|fragment with cursor keys in normal mode, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, use=vt100+noapp+pc, -xterm+noapp|fragment with cursor keys in normal mode, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, - khome=\E[H, +xterm+noapp|alias for vt100+noapp, + use=vt100+noapp, xterm+app|fragment with cursor keys in application mode, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, @@ -5106,41 +5227,39 @@ xterm+pcc0|fragment with modifyCursorKeys:0, # Here are corresponding fragments from xterm patch #216: # xterm+pcf0|fragment with modifyFunctionKeys:0, - kf1=\EOP, kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S, - kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, + kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S, + kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q, - kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf3=\EOR, - kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~, - kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~, - kf36=\E[24;5~, kf37=\EO6P, kf38=\EO6Q, kf39=\EO6R, - kf4=\EOS, kf40=\EO6S, kf41=\E[15;6~, kf42=\E[17;6~, - kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~, - kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~, kf49=\EO3P, - kf50=\EO3Q, kf51=\EO3R, kf52=\EO3S, kf53=\E[15;3~, - kf54=\E[17;3~, kf55=\E[18;3~, kf56=\E[19;3~, - kf57=\E[20;3~, kf58=\E[21;3~, kf59=\E[23;3~, - kf60=\E[24;3~, kf61=\EO4P, kf62=\EO4Q, kf63=\EO4R, - use=xterm+nopcfkeys, -# -xterm+pcf2|fragment with modifyFunctionKeys:2, - kf1=\EOP, kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, - kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~, - kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~, - kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, - kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S, - kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, kf31=\E[18;5~, - kf32=\E[19;5~, kf33=\E[20;5~, kf34=\E[21;5~, - kf35=\E[23;5~, kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, - kf39=\E[1;6R, kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, + kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf30=\E[17;5~, + kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~, + kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf37=\EO6P, + kf38=\EO6Q, kf39=\EO6R, kf40=\EO6S, kf41=\E[15;6~, kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~, - kf48=\E[24;6~, kf49=\E[1;3P, kf50=\E[1;3Q, kf51=\E[1;3R, - kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~, + kf48=\E[24;6~, kf49=\EO3P, kf50=\EO3Q, kf51=\EO3R, + kf52=\EO3S, kf53=\E[15;3~, kf54=\E[17;3~, kf55=\E[18;3~, + kf56=\E[19;3~, kf57=\E[20;3~, kf58=\E[21;3~, + kf59=\E[23;3~, kf60=\E[24;3~, kf61=\EO4P, kf62=\EO4Q, + kf63=\EO4R, use=vt100+pf1-pf4, use=xterm+nopcfkeys, +# +xterm+pcf2|fragment with modifyFunctionKeys:2, + kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, + kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, + kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~, + kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, + kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf30=\E[17;5~, + kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~, + kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, + kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf40=\E[1;6S, + kf41=\E[15;6~, kf42=\E[17;6~, kf43=\E[18;6~, + kf44=\E[19;6~, kf45=\E[20;6~, kf46=\E[21;6~, + kf47=\E[23;6~, kf48=\E[24;6~, kf49=\E[1;3P, kf50=\E[1;3Q, + kf51=\E[1;3R, kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~, kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~, kf58=\E[21;3~, kf59=\E[23;3~, kf60=\E[24;3~, kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, - use=xterm+nopcfkeys, + use=vt100+pf1-pf4, use=xterm+nopcfkeys, # # Chunks from xterm #230: xterm+pce2|fragment with modifyCursorKeys:2 editing-keys, @@ -5160,8 +5279,7 @@ xterm+edit|fragment for 6-key editing-keypad, use=xterm+pc+edit, use=vt220+pcedit, xterm+decedit|fragment for vt220 6-key editing-keypad, - kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - use=xterm+vt+edit, + use=vt220+vtedit, use=xterm+vt+edit, xterm+pc+edit|fragment for pc-style editing keypad, kend=\E[4~, khome=\E[1~, @@ -5251,14 +5369,13 @@ xterm-basic|modern xterm terminal emulator - common, OTbs, am, bce, mir, msgr, xenl, AX, XT, colors#8, cols#80, lines#24, pairs#64, bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, + ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, ich=\E[%p1%d@, ind=\n, is2=\E[!p\E[?3;4l\E[4l\E>, kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, ri=\EM, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, - rmul=\E[24m, rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rs1=\Ec, + rs2=\E[!p\E[?3;4l\E[4l\E>, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} %=%t3%e%p1%d%;m, setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} @@ -5266,9 +5383,10 @@ xterm-basic|modern xterm terminal emulator - common, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%; %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, sgr0=\E(B\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, - vpa=\E[%i%p1%dd, E3=\E[3J, use=ansi+csr, use=ansi+enq, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, - use=ansi+pp, use=ansi+sgrbold, use=xterm+kbs, + E3=\E[3J, use=ecma+underline, use=ecma+standout, + use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+pp, + use=ansi+rca2, use=ansi+sgrbold, use=xterm+kbs, use=xterm+alt+title, use=att610+cvis, use=xterm+acs, use=xterm+meta, @@ -5338,6 +5456,10 @@ xterm+256setaf|xterm 256-color (set-only), ;%p1%d%;m, setb@, setf@, +xterm+256setaf2|xterm 256-color (set-only with colon), + ccc@, + initc@, use=xterm+256setaf, + # 88-colors is a compile-time feature of XFree86 xterm beginning with # xterm patch #115 (1999/9/18) -TD # @@ -5609,14 +5731,11 @@ xterm-sco|xterm with SCO function keys, # xterm-vt220|xterm emulating VT220, npc, - kcbt=\E[Z, kend=\E[4~, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, - kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, - kf20=\E[34~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kmous=\E[M, nel=\EE, + kcbt=\E[Z, kend=\E[4~, khome=\E[1~, kmous=\E[M, nel=\EE, use=xterm+app, use=xterm+edit, use=vt220+keypad, use=ecma+italics, use=ecma+index, use=ansi+rep, - use=ecma+strikeout, use=xterm+focus, use=xterm+sm+1006, + use=ecma+strikeout, use=vt220+sfkeys, + use=xterm+r5+fkeys, use=xterm+focus, use=xterm+sm+1006, use=xterm+tmux, use=xterm+keypad, use=xterm-basic, xterm-vt52|xterm emulating DEC VT52, @@ -5652,7 +5771,7 @@ xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode, # c) fsl ends the escape sequence begun by tsl. Printable characters between # those (probably) will appear in the window title. Nonprintable characters # may cause the escape sequence to end with an error. -# d) the BEL (^G or \007) used in the original title-as-statusline came from +# d) the BEL (^G or \007) used in the original title-as-statusline came from # David J. MacKenzie's "pseudo-color" entry in 20 Apr 1995. At that time # xterm used BEL as the string-terminator rather than ST (\E\\). Either # BEL or ST has worked since xterm patch #28 in 1996, but most uses of @@ -5742,6 +5861,8 @@ bracketed+paste|xterm bracketed paste, # The response is a DSR sequence identifying the version: DCS > | text ST # For example: # ^[P>|XTerm(354)^[\ +# tack expects this string to be a regular expression, so some characters such +# as "|" are escaped. report+version|Report xterm name and version (XTVERSION), XR=\E[>0q, xr=\EP>\\|[ -~]+\E\\\\, use=report+da2, @@ -5750,8 +5871,10 @@ report+version|Report xterm name and version (XTVERSION), # - the second as the patch number for xterm, and # - the third parameter as zero. # Other terminals may provide useful responses, though few are documented. +# Some are hardcoded to match some (usually old) version of xterm. For the +# others, rv is a regular expression which tack can match. report+da2|report secondary device attributes (DA2), - RV=\E[>c, rv=\E\\[[0-9]+;[0-9]+;[0-9]+c, + RV=\E[>c, rv=\E\\[>[0-9]+;[0-9]+;[0-9]+c, #### XTERM Mouse # The xterm mouse protocol is used by other terminal emulators. @@ -5975,10 +6098,10 @@ xterm-pcolor|xterm with color used for highlights and status line, # http://nion.modprobe.de/blog/archives/569-colored-manpages.html # (blog posting by Nico Golde, June 24 2007) # archive: -# https://web-beta.archive.org/web/20070921042430/http://nion.modprobe.de/mostlike.txt +# https://web.archive.org/web/20070921042430/http://nion.modprobe.de/mostlike.txt # The comment hints where it started, but there are differences: # Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor -mostlike|manpages with color looking like most, +mostlike|man pager with color looking like most, OTbs@, bold=\E[1m\E[31m, is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H, @@ -5997,23 +6120,21 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X, cols#80, it#8, lines#65, ncv@, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, - el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I, - ich=\E[%p1%d@, ind=\n, is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, - kend=\E[8~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, + dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)0, ht=^I, ich=\E[%p1%d@, ind=\n, + is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kend=\E[8~, khome=\E[7~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, - rmcup=\E>\E[?41;1r, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, + rmcup=\E>\E[?41;1r, rmir=\E[4l, rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<, sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 %;m%?%p9%t\016%e\017%;, sgr0=\E[0m\017, smacs=^N, smam=\E[?7h, - smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m, - smul=\E[4m, use=ansi+apparrows, use=ansi+csr, - use=ansi+idl, use=ansi+local, use=decid+cpr, - use=ecma+color, use=vt220+keypad, + smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smul=\E[4m, + use=ecma+underline, use=ecma+standout, + use=xterm+r5+fkeys, use=ansi+apparrows, use=ansi+csr, + use=ansi+cup, use=ansi+idl, use=ansi+local, + use=decid+cpr, use=ecma+color, use=vt220+keypad, # The IRAF source has a terminfo using "xterm-r5", but line-drawing does not # work in that case. This entry uses xterm+acs, to work around that problem. @@ -6087,8 +6208,8 @@ xterms-sun|small (80x24) xterm with sunFunctionKeys true, # this describes the alpha-version of GNOME terminal shipped with Redhat 6.0 gnome-rh62|GNOME terminal, bce, - kdch1=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - use=linux+kbs, use=xterm-color, + kdch1=^?, use=linux+kbs, use=vt100+pf1-pf4, + use=xterm-color, # GNOME Terminal 1.4.0.4 (Redhat 7.2) # @@ -6110,11 +6231,11 @@ gnome-rh62|GNOME terminal, # it hangs in tack after running function-keys test. gnome-rh72|GNOME Terminal in RedHat 7, bce, km@, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmam=\E[?7l, + rmam=\E[?7l, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e \017%;, - sgr0=\E[0m\017, smam=\E[?7h, tbc@, use=vt220+cvis, - use=linux+kbs, use=xterm-color, + sgr0=\E[0m\017, smam=\E[?7h, tbc@, use=linux+kbs, + use=vt100+pf1-pf4, use=vt220+cvis, use=xterm-color, # GNOME Terminal 2.0.1 (Redhat 8.0) # @@ -6139,9 +6260,9 @@ gnome-rh80|GNOME Terminal in RedHat 8, # bce and msgr are repaired. gnome-rh90|GNOME Terminal in RedHat 9, bce, msgr, XT, - hpa=\E[%i%p1%dG, kLFT=\EO2D, kRIT=\EO2C, kb2=\E[E, - kcbt=\E[Z, tbc=\E[3g, vpa=\E[%i%p1%dd, use=xterm+pcf0, - use=xterm+pcfkeys, use=gnome-rh80, + kLFT=\EO2D, kRIT=\EO2C, kb2=\E[E, kcbt=\E[Z, tbc=\E[3g, + use=ansi+rca2, use=xterm+pcf0, use=xterm+pcfkeys, + use=gnome-rh80, # GNOME Terminal 2.14.2 (Fedora Core 5) # Ed Catmur notes that gnome-terminal has recognized soft-reset since May 2002. @@ -6184,9 +6305,10 @@ gnome-2008|GNOME Terminal snapshot 2.22.3, # Testing with tack shows that flash does not/has not worked -TD vte-2012|VTE 0.34.1, ncv#16, - dim=\E[2m, flash@, invis=\E[8m, rmso=\E[27m, rmul=\E[24m, + dim=\E[2m, flash@, invis=\E[8m, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3 %|%t;7%;m%?%p9%t\016%e\017%;, + use=ecma+underline, use=ecma+standout, use=ecma+italics, use=vte-2008, # Version 3.6.1 sets TERM to xterm-256color (still hardcoded), which has # 61 differences from a correct entry for gnome terminal. @@ -6278,8 +6400,12 @@ vte-2018|VTE 0.51.2, # - AT&T cursor-blinking # - meta mode, as documented in terminfo(5) # - xterm's extension to clear scrollback +vte-2022|VTE aka GNOME Terminal, + xr=\EP>\\|VTE\\(([0-9])\\)\E\\\\, use=report+version, + use=report+da2, use=vte-2018, + vte|VTE aka GNOME Terminal, - use=vte-2018, + use=vte-2022, vte-256color|VTE with xterm 256-colors, use=xterm+256color, use=vte, @@ -6342,22 +6468,21 @@ termite|VTE-based terminal, acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy yzz{{||}}~~, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H, - hpa=\E[%i%p1%dG, ind=\n, invis=\E[8m, - is2=\E[!p\E[?3;4l\E[4l\E>, kb2=\EOE, kbs=^?, kcbt=\E[Z, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, + flash=\E[?5h$<100/>\E[?5l, ind=\n, invis=\E[8m, + is2=\E[!p\E[?3;4l\E[4l\E>, kb2=\EOE, kcbt=\E[Z, kent=\EOM, kmous=\E[M, rev=\E[7m, ri=\EM, rmacs=\E(B, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, - rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, + rmam=\E[?7l, rmkx=\E[?1l\E>, rs1=\Ec, + rs2=\E[!p\E[?3;4l\E[4l\E>, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%| %t;7%;%?%p7%t;8%;m, sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=, - smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+csr, - use=ansi+enq, use=ansi+idc, use=ansi+idl, - use=ansi+inittabs, use=ecma+index, use=ecma+italics, - use=ansi+local, use=xterm+alt1049, use=xterm+256color, - use=ecma+color, use=vt220+cvis, use=xterm+pcfkeys, - use=xterm+sl-twm, + use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+idc, + use=ansi+idl, use=ansi+inittabs, use=ansi+local, + use=ansi+rca2, use=ecma+index, use=ecma+italics, + use=ecma+underline, use=ecma+standout, use=linux+kbs, + use=xterm+alt1049, use=xterm+256color, use=ecma+color, + use=vt220+cvis, use=xterm+pcfkeys, use=xterm+sl-twm, #### Other GNOME # Multi-GNOME-Terminal 1.6.2 @@ -6431,20 +6556,21 @@ kvt|KDE terminal, konsole-base|KDE console window (common), bce, km@, npc, XT, ncv@, - ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, - hpa=\E[%i%p1%dG, kend=\E[4~, kf1@, kf10@, kf11@, kf12@, kf13@, - kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2@, kf20@, kf3@, kf4@, - kf5@, kf6@, kf7@, kf8@, kf9@, kfnd@, khome=\E[1~, kslt@, - rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, + ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kf1@, kf10@, + kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2@, + kf20@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, kfnd@, kslt@, + rmam=\E[?7l, rs1=\Ec, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd, + sgr0=\E[0m\017, smam=\E[?7h, rv=\E\\[>1;115;0c, + xr=\EP>\\|Konsole ([1-9][.0-9])\E\\\\, + use=ecma+underline, use=ecma+standout, use=ansi+rca2, use=ansi+sgrdim, use=ecma+index, use=xterm+focus, use=xterm+sm+1006, use=ecma+strikeout, use=ecma+italics, use=ecma+color, use=xterm-r6, use=vt220+cvis, use=bracketed+paste, - use=report+version, + use=report+version, use=xterm+pc+edit, # The keytab feature was introduced in 0.9.12 (February 2000) with "linux" and # "vt100" key-table files along with a compiled-in default key-table. @@ -6530,11 +6656,10 @@ konsole+pcfkeys|konsole subset of xterm+pcfkeys, # it is still useful for deriving the other entries, since the developer # provided function-keys based on xterm. konsole-vt100|KDE console window with VT100 (sic) keyboard, - kend=\E[F, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, - kf2=\E[12~, kf20@, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H, - use=konsole-base, + kend=\E[F, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13@, + kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf20@, kf6=\E[17~, + kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H, + use=xterm+r5+lockeys, use=konsole-base, # Obsolete: vt420pc.keytab was added in June 2000, dropped from the install in # September 2008 and removed in June 2016. The developer who removed it stated @@ -6599,6 +6724,8 @@ mlterm3|multi lingual terminal emulator 3.x, is2=\E[!p\E[?3;4l\E>, rs2=\E[!p\E[?3;4l\E>, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;%? %p7%t;8%;m%?%p9%t\E(0%e\E(B%;, + rv=\E\\[>24;279;0c, + xr=\EP>\\|mlterm\\([0-9][.0-9](-.*)?\\)?\E\\\\, use=ansi+enq, use=ansi+rep, use=ecma+italics, use=ecma+strikeout, use=xterm+app, use=xterm+pcf2, use=xterm+pcc2, use=xterm+pce2, use=xterm+meta, @@ -6630,25 +6757,24 @@ mlterm2|multi lingual terminal emulator 2.x, colors#8, cols#80, lines#24, pairs#64, acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=, - home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\n, + dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + el1=\E[1K, enacs=, ich=\E[%p1%d@, ind=\n, is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^?, kcbt=\E[Z, kend=\EOF, kent=\EOM, kind=\EO1;2B, kmous=\E[M, kri=\EO1;2A, mc0=\E[i, nel=\EE, op=\E[39;49m, rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, + rmkx=\E[?1l\E>, rs1=\Ec, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e \E(B%;, sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u8=\E[?1;2c, - vpa=\E[%i%p1%dd, use=ansi+apparrows, use=ansi+csr, - use=ansi+enq, use=ansi+idl, use=ansi+inittabs, - use=ansi+local, use=vt220+vtedit, use=xterm+alt1049, - use=ecma+index, use=mlterm+pcfkeys, use=vt220+cvis, - use=xterm+r6f2, + smkx=\E[?1h\E=, u8=\E[?1;2c, use=ecma+underline, + use=ecma+standout, use=ansi+apparrows, use=ansi+csr, + use=ansi+cup, use=ansi+enq, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca2, + use=vt220+vtedit, use=xterm+alt1049, use=ecma+index, + use=mlterm+pcfkeys, use=vt220+cvis, use=xterm+r6f2, # The insert/delete/home/end keys do not respond to modifiers because mlterm # looks in its termcap to decide which string to send. If it used terminfo @@ -6697,17 +6823,18 @@ rxvt-basic|rxvt terminal base (X Window System), is1=\E[?47l\E=\E[?1l, is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kcbt=\E[Z, kmous=\E[M, rev=\E[7m, ri=\EM, rmir=\E[4l, - rmkx=\E>, rmso=\E[27m, rmul=\E[24m, + rmkx=\E>, rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[? 25h, s0ds=\E(B, s1ds=\E(0, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%? %p9%t\016%e\017%;, - sgr0=\E[0m\017, smir=\E[4h, smkx=\E=, smso=\E[7m, - smul=\E[4m, use=ansi+csr, use=ansi+idl, use=ansi+local, - use=xterm+alt47, use=vt100+enq, use=vt100+4bsd, - use=rxvt+pcfkeys, use=vt220+cvis, use=vt220+keypad, + sgr0=\E[0m\017, smir=\E[4h, smkx=\E=, smul=\E[4m, + use=ecma+underline, use=ecma+standout, use=ansi+csr, + use=ansi+idl, use=ansi+local, use=xterm+alt47, + use=vt100+enq, use=vt100+4bsd, use=rxvt+pcfkeys, + use=vt220+cvis, use=vt220+keypad, # Key Codes from rxvt reference: # @@ -6791,8 +6918,7 @@ rxvt-basic|rxvt terminal base (X Window System), # Removed kDN6, etc (control+shift) since rxvt does not implement this -TD rxvt+pcfkeys|rxvt fragment for PC-style fkeys, kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d, - kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kel=\E[8\^, kend=\E[8~, + kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kel=\E[8\^, kend=\E[8~, kf21=\E[23$, kf22=\E[24$, kf23=\E[11\^, kf24=\E[12\^, kf25=\E[13\^, kf26=\E[14\^, kf27=\E[15\^, kf28=\E[17\^, kf29=\E[18\^, kf30=\E[19\^, kf31=\E[20\^, kf32=\E[21\^, @@ -6804,10 +6930,9 @@ rxvt+pcfkeys|rxvt fragment for PC-style fkeys, kHOM5=\E[7\^, kHOM6=\E[7@, kIC5=\E[2\^, kIC6=\E[2@, kLFT5=\EOd, kNXT5=\E[6\^, kNXT6=\E[6@, kPRV5=\E[5\^, kPRV6=\E[5@, kRIT5=\EOc, kUP=\E[a, kUP5=\EOa, - use=vt220+vtedit, use=xterm+nopcfkeys, + use=vt100+noapp, use=vt220+vtedit, use=xterm+nopcfkeys, # rxvt was originally "xvt", first announced in April 1993: -# http://www.krsaborio.net/linux-desktops/research/1993/0416.html #------------------------------------------------------------------------------ # Article: 567 of comp.os.linux.announce # Path: pavo.csi.cam.ac.uk!warwick!uknet!pipex!uunet!zaphod.mps.ohio-state.edu! @@ -6857,8 +6982,8 @@ rxvt+pcfkeys|rxvt fragment for PC-style fkeys, # with the default background color. rxvt|rxvt-color|rxvt terminal emulator (X Window System), ncv@, - hpa=\E[%i%p1%dG, kf0=\E[21~, sgr0=\E[m\017, - vpa=\E[%i%p1%dd, use=rxvt-basic, use=ecma+color, + kf0=\E[21~, sgr0=\E[m\017, use=ansi+rca2, use=rxvt-basic, + use=ecma+color, rxvt-256color|rxvt 2.7.9 with xterm 256-colors, use=xterm+256color, use=rxvt, rxvt-88color|rxvt 2.7.9 with xterm 88-colors, @@ -6932,22 +7057,21 @@ Eterm|Eterm-color|Eterm with xterm-style color support (X Window System), blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - hpa=\E[%i%p1%dG, ich=\E[%p1%d@, is1=\E[?47l\E>\E[?1l, + ich=\E[%p1%d@, is1=\E[?47l\E>\E[?1l, is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kNXT@, kPRV@, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, kbeg=\EOu, kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, mc4=\E[4i, mc5=\E[5i, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmir=\E[4l, rmkx=, - rmso=\E[27m, rmul=\E[24m, rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[? 25h, sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 %;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, smkx=, smso=\E[7m, - smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+csr, use=ansi+idl, - use=ansi+local, use=xterm+alt47, use=vt100+enq, - use=rxvt+pcfkeys, use=ecma+color, use=vt100+4bsd, - use=vt220+cvis, + sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, smkx=, smul=\E[4m, + use=ecma+underline, use=ecma+standout, use=ansi+csr, + use=ansi+idl, use=ansi+local, use=ansi+rca2, + use=xterm+alt47, use=vt100+enq, use=rxvt+pcfkeys, + use=ecma+color, use=vt100+4bsd, use=vt220+cvis, Eterm-256color|Eterm with xterm 256-colors, use=xterm+256color, use=Eterm, @@ -6959,7 +7083,7 @@ Eterm-88color|Eterm with 88 colors, # Based on rxvt 2.4.8, it has a few differences in key bindings aterm|AfterStep terminal, XT, - kbs=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt, + kbs=^?, use=vt100+pf1-pf4, use=rxvt, #### XITERM # xiterm 0.5-5.2 @@ -7009,7 +7133,7 @@ hpterm-color|HP X11 terminal emulator with color, # This article does not cover the HP 46020A keyboard that is used by the Model # 217 and 237 computers. For information on this keyboard read the article, # "The Series 300 ITE as System Console" found in the manual, HP-UX Concepts -# and Tutorials, Vol. 7. +# and Tutorials, Vol. 7. # # Possibly: # http://bitsavers.trailing-edge.com/pdf/hp/9000_hpux/1986/97089-90042_198608_HP-UX_Concepts_and_Tutorials.pdf @@ -7093,10 +7217,9 @@ emu-220|Emu-220 (vt200-7bit mode), cols#80, it#8, lines#24, vt#200, acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, blink=\E[0;5m, bold=\E[0;1m, clear=\E[2J\E[H, cr=\r, - cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch=\E[%p1%dP, - dch1=\E[1P, dl=\E[%p1%dM, dl1=\E[1M, ed=\E[0J, el=\E[0K, - el1=\E[1K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, + cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C, cuu1=\E[1A, + dch=\E[%p1%dP, dch1=\E[1P, dl=\E[%p1%dM, dl1=\E[1M, + ed=\E[0J, el=\E[0K, el1=\E[1K, enacs=\E)0, ht=^I, hts=\EH, if=/usr/share/tabset/vt300, il=\E[%p1%dL, il1=\E[1L, ind=\ED, is2=\E>\E[?1l\E[?3l\E[4l\E[?7h, kbs=^H, kcmd=\E[29~, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, @@ -7113,7 +7236,8 @@ emu-220|Emu-220 (vt200-7bit mode), 2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smcup=\E[?1l\E=, smkx=\E=, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, use=ansi+csr, - use=ansi+local, use=vt220+vtedit, use=vt220+cvis, + use=ansi+cup, use=ansi+local, use=vt220+vtedit, + use=vt220+cvis, #### MVTERM # A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI, @@ -7133,13 +7257,13 @@ mvterm|vv100|SwitchTerm aka mvTERM, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K, ich=\E[%p1%d@, ich1=\E[@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, op=\E[100m, rev=\E[7m, ri=\EM, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rmkx=\E[?1l\E>, rmso=\E[m, rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 %;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - use=ansi+csr, use=ansi+idl, use=ansi+local, + sgr0=\E[m\017, smkx=\E[?1h\E=, smso=\E[7m, use=ansi+csr, + use=ansi+idl, use=ansi+local, use=ansi+sgrul, use=xterm+alt47, use=vt100+fnkeys, use=vt100+4bsd, use=x10term+sl, @@ -7152,15 +7276,15 @@ mterm-ansi|ANSI emulation, am, bw, mir, msgr, it#8, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, - dim=\E[2m, ech=\E[%p1%dX, home=\E[H, hpa=\E[%i%p1%d`, - ht=^I, ich1=, ind=\E[S, is2=\E)0\017, kbs=^H, nel=\EE, ri=\E[T, - rmacs=^O, rmso=\E[27m, rmul=\E[24m, + bel=^G, cr=\r, dch=\E[%p1%dP, dim=\E[2m, ech=\E[%p1%dX, + hpa=\E[%i%p1%d`, ht=^I, ich1=, ind=\E[S, is2=\E)0\017, + kbs=^H, nel=\EE, ri=\E[T, rmacs=^O, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, vpa=\E[%i%p1%dd, use=ansi+erase, - use=ansi+idc1, use=ansi+idl, use=ansi+local, - use=ansi+sgrbold, use=ecma+index, + sgr0=\E[m\017, smacs=^N, vpa=\E[%i%p1%dd, + use=ecma+underline, use=ecma+standout, use=ansi+cup, + use=ansi+erase, use=ansi+idc1, use=ansi+idl, + use=ansi+local, use=ansi+sgrbold, use=ecma+index, # mterm normally sets $TERM to "mterm" mterm|mouse-sun|Der Mouse term, @@ -7177,25 +7301,20 @@ decansi|ANSI emulation with DEC compatibility hacks, am, mir, msgr, xenl, colors#8, it#8, pairs#64, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, - dim=\E[2m, ech=\E[%p1%dX, enacs=\E(B\E)0, home=\E[H, - hpa=\E[%i%p1%d`, ht=^I, ich1=, ind=\E[S, is2=\E)0\E[r\017, - kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, - kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, nel=\EE, - op=\E[0m, ri=\E[T, rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, - rmso=\E[27m, rmul=\E[24m, setab=\E[4%p1%dm, + bel=^G, cr=\r, dch=\E[%p1%dP, dim=\E[2m, ech=\E[%p1%dX, + enacs=\E(B\E)0, hpa=\E[%i%p1%d`, ht=^I, ich1=, ind=\E[S, + is2=\E)0\E[r\017, kbs=^H, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, nel=\EE, op=\E[0m, ri=\E[T, rmacs=^O, + rmam=\E[?7l, rmkx=\E[?1l\E>, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, - vpa=\E[%i%p1%dd, use=ansi+cpr, use=ansi+csr, - use=ansi+erase, use=ansi+idc1, use=ansi+idl, - use=ansi+local, use=ansi+sgrbold, use=vt220+vtedit, - use=ecma+index, use=vt220+cvis, + vpa=\E[%i%p1%dd, use=ecma+underline, use=ecma+standout, + use=ansi+cpr, use=ansi+csr, use=ansi+cup, use=ansi+erase, + use=ansi+idc1, use=ansi+idl, use=ansi+local, + use=ansi+sgrbold, use=vt220+vtedit, use=ecma+index, + use=vt220+cvis, use=vt220+sfkeys, use=xterm+r5+fkeys, #### VWM # http://vwm.sourceforge.net/ @@ -7207,20 +7326,18 @@ vwmterm|VWM terminal, am, bce, ccc, mir, msgr, npc, xenl, xon, colors#8, pairs#64, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, - cvvis=\E[?25h, dim=\E[2m, home=\E[H, il1=\E[L, ind=\n, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, - kf11=\E[22~, kf12=\E[23~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, - kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[1~, knp=\E[6~, kpp=\E[5~, rmacs=\E[10m, + bel=^G, bold=\E[1m, cr=\r, cub1=^H, cvvis=\E[?25h, dim=\E[2m, + il1=\E[L, ind=\n, kdch1=\E[3~, kend=\E[4~, kf11=\E[22~, + kf12=\E[23~, khome=\E[1~, knp=\E[6~, kpp=\E[5~, rmam=\E[?7l, rs1=\E[H\E[J\E[m\Ec, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr=\E[0;10%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h, smso=\E[3m, - smul=\E[4m, use=ansi+erase, use=ansi+local, use=ansi+sgr, - use=vt220+cvis, use=xterm+alt1049, + sgr0=\E[0;10m, smam=\E[?7h, smso=\E[3m, smul=\E[4m, + use=ansi+cup, use=ansi+erase, use=ansi+local, + use=ansi+sgr, use=klone+acs, use=linux+lockeys, + use=vt100+noapp, use=vt220+cvis, use=vt220+ufkeys, + use=xterm+alt1049, #### MGR # @@ -7251,16 +7368,35 @@ mgr-sun|Mgr window with Sun keyboard, kopn=\E[198z, kpp=\E[216z, kund=\E[195z, use=mgr, mgr-linux|Mgr window with Linux keyboard, ka1=\E[H, ka3=\E[5~, kb2=\E[G, kc1=\E[Y, kc3=\E[6~, - kdch1=\E[3~, kend=\E[4~, kf0=\E[[J, kf1=\E[[A, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, - kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[1~, knp=\E[6~, kpp=\E[5~, use=mgr, + kdch1=\E[3~, kf0=\E[[J, knp=\E[6~, kpp=\E[5~, + use=linux+lockeys, use=vt220+ufkeys, use=xterm+pc+edit, + use=mgr, #### SIMPLETERM # st.suckless.org st|stterm|aka simpleterm, - use=st-0.8, + use=st-0.8.5, + +# Reviewed 0.9.2 (Debian testing package "stterm"): +# Inspected source, saw nothing to change in terminfo. +# +# Reviewed 0.8.5 (Debian stable package "stterm"): +# In tack, +# sends nothing for control- and alt-modifiers to function-keys +# does not support application-mode for numeric keypad +# In vttest, +# identifies as a VT102 +# SRM, DECTCEM and ECH work, but not DECSCA +# incomplete DECSCUSR, shapes work but no blinking cursor +# SD and SL work, but not SL or SR +# supports normal, button-event and any-event mouse +# focus events are unreliable +# Other: +# supports xterm OSC 12, but not 112, so Cs applies but not Cr +# OSC allows ST \E\\ in addition to \007 +st-0.8.5|simpleterm 0.8.5, + Cs=\E]12;%p1%s\007, use=ansi+rep, use=st-0.8, # Reviewed 0.8.2: # In tack, @@ -7335,18 +7471,17 @@ st-0.6|simpleterm 0.6, clear=\E[H\E[2J, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[?5h$<100/>\E[?5l, hpa=\E[%i%p1%dG, - ich=\E[%p1%d@, is2=\E[4l\E>\E[?1034l, kDC=\E[3;2~, - kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D, - kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\E[1~, - ka3=\E[5~, kb2=\EOu, kbs=^?, kc1=\E[4~, kc3=\E[6~, kcbt=\E[Z, - kclr=\E[3;5~, kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F, - khome=\E[1~, kil1=\E[2;5~, kind=\E[1;2B, kmous=\E[M, - kri=\E[1;2A, krmir=\E[2;2~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, + flash=\E[?5h$<100/>\E[?5l, ich=\E[%p1%d@, + is2=\E[4l\E>\E[?1034l, kDC=\E[3;2~, kEND=\E[1;2F, + kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D, kNXT=\E[6;2~, + kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\E[1~, ka3=\E[5~, kb2=\EOu, + kbs=^?, kc1=\E[4~, kc3=\E[6~, kcbt=\E[Z, kclr=\E[3;5~, + kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F, khome=\E[1~, + kil1=\E[2;5~, kind=\E[1;2B, kmous=\E[M, kri=\E[1;2A, + krmir=\E[2;2~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, op=\E[39;49m, ri=\EM, rmacs=\E(B, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, - rs2=\E[4l\E>\E[?1034l, setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, + rmkx=\E[?1l\E>, rs1=\Ec, rs2=\E[4l\E>\E[?1034l, + setab=\E[4%p1%dm, setaf=\E[3%p1%dm, setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} %=%t3%e%p1%d%;m, setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} @@ -7354,14 +7489,14 @@ st-0.6|simpleterm 0.6, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%| %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m, smacs=\E(0, smir=\E[4h, smkx=\E[?1h\E=, u8=\E[?1;2c, - vpa=\E[%i%p1%dd, Se=\E[2 q, Ss=\E[%p1%d q, - use=ansi+apparrows, use=ansi+csr, use=ansi+enq, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, - use=ansi+sgrbold, use=vt100+4bsd, use=vt100+pfkeys, - use=vt220+pcedit, use=ecma+index, use=xterm+alt1049, - use=vt220+cvis, use=xterm+sl, use=ecma+italics, - use=ecma+strikeout, use=bracketed+paste, - use=xterm+pcf2, + Se=\E[2 q, Ss=\E[%p1%d q, use=ecma+underline, + use=ecma+standout, use=ansi+apparrows, use=ansi+csr, + use=ansi+enq, use=ansi+idl, use=ansi+inittabs, + use=ansi+local, use=ansi+rca2, use=ansi+sgrbold, + use=vt100+4bsd, use=vt100+pfkeys, use=vt220+pcedit, + use=ecma+index, use=xterm+alt1049, use=vt220+cvis, + use=xterm+sl, use=ecma+italics, use=ecma+strikeout, + use=bracketed+paste, use=xterm+pcf2, # # st-0.1.1 # @@ -7386,19 +7521,16 @@ simpleterm|old-st|simpleterm 0.1.1, cols#80, it#8, lines#24, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch1=\E[P, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%dG, - ht=^I, ich=\E[%p1%d@, ind=\n, kbs=^?, kdch1=\E[3~, - kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[1~, knp=\E[6~, kpp=\E[5~, rev=\E[7m, rmso=\E[m, - rmul=\E[m, + cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, ed=\E[J, el=\E[K, + hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ind=\n, kbs=^?, + kdch1=\E[3~, kend=\E[4~, khome=\E[1~, knp=\E[6~, kpp=\E[5~, + rev=\E[7m, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%| %t;7%;m, - sgr0=\E[0m, smso=\E[7m, smul=\E[4m, use=ansi+arrows, - use=ansi+csr, use=ansi+idl, use=vt220+cvis, - use=ecma+index, use=klone+color, use=xterm+acs, + sgr0=\E[0m, use=ansi+arrows, use=ansi+csr, use=ansi+cup, + use=ansi+idl, use=ansi+sgrso, use=ansi+sgrul, + use=vt220+cvis, use=ecma+index, use=klone+color, + use=vt100+pf1-pf4, use=xterm+r5+fkeys, use=xterm+acs, st-16color|stterm-16color|simpleterm with 16-colors, use=ibm+16color, use=st, @@ -7490,25 +7622,24 @@ terminator|Terminator no line wrap, cols#80, it#8, lines#24, lm#0, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=^G, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ed=\E[J, el=\E[K, + el1=\E[1K, enacs=\E(B\E)0, flash=^G, ht=^I, hts=\EH, ind=\n, is1=\E[?47l\E=\E[?1l, is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^?, - kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, rev=\E[7m, - ri=\EM, rmacs=\E(B, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, + khome=\E[1~, rev=\E[7m, ri=\EM, rmacs=\E(B, rmir=\E[4l, rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, s0ds=\E(B, s1ds=\E(0, sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p1%p3%|%t;7 %;m%?%p9%t\E(0%e\E(B%;, - sgr0=\E[m\E(B, smacs=\E(0, smir=\E[4h, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=ansi+arrows, - use=ansi+csr, use=ansi+enq, use=ansi+idl, use=ansi+local, - use=vt220+pcedit, use=ecma+italics, use=ecma+index, + sgr0=\E[m\E(B, smacs=\E(0, smir=\E[4h, smul=\E[4m, + tbc=\E[3g, use=ecma+underline, use=ecma+standout, + use=ansi+arrows, use=ansi+csr, use=ansi+cup, + use=ansi+enq, use=ansi+idl, use=ansi+local, + use=ansi+rca2, use=bracketed+paste, use=ecma+italics, + use=ecma+index, use=vt100+pf1-pf4, use=vt220+cvis, + use=vt220+pcedit, use=xterm+r5+fkeys, use=xterm+256setaf, use=xterm+sl-twm, - use=xterm+alt1049, use=vt220+cvis, use=bracketed+paste, + use=xterm+alt1049, #### TERMINOLOGY # https://www.enlightenment.org/about-terminology @@ -7573,8 +7704,9 @@ terminology-0.6.1|EFL-based terminal emulator (0.6.1), kLFT3=\E[1;3D, kLFT4=\E[1;4D, kLFT5=\E[1;5D, kLFT6=\E[1;6D, kLFT7=\E[1;7D, kRIT3=\E[1;3C, kRIT4=\E[1;4C, kRIT5=\E[1;5C, kRIT6=\E[1;6C, - kRIT7=\E[1;7C, kUP=\E[1;2A, use=ansi+enq, use=xterm+pcf0, - use=vt100, use=xterm+256setaf, + kRIT7=\E[1;7C, kUP=\E[1;2A, use=ansi+enq, + use=bracketed+paste, use=xterm+pcf0, use=vt100, + use=xterm+256setaf, # 2017-11-11: # Tested terminology 1.0.0 @@ -7607,7 +7739,7 @@ terminology-1.0.0|EFL-based terminal emulator (1.0.0), # italics and crossed-out text work # no meta mode # vttest - -# DA1 says this is a VT420 with with 132 columns, NRCS, horizontal scrolling +# DA1 says this is a VT420 with 132 columns, NRCS, horizontal scrolling # DA2 says this is a VT510, version 33.7 # NRCS does not work, program hangs in the locking shift test. # some of the VT420 rectangle operations work @@ -7690,7 +7822,8 @@ alacritty-direct|alacritty with direct color indexing, alacritty+common|base fragment for alacritty, km@, npc, kb2=\EOE, kcbt=\E[Z, kent=\EOM, Se=\E[0 q, - Smulx=\E[4:%p1%dm, use=ecma+index, use=xterm+focus, + Smulx=\E[4:%p1%dm, rv=\E\\[>0;25[0-9][0-9];1c, + use=ecma+index, use=report+da2, use=xterm+focus, use=xterm+sm+1006, use=xterm-basic, use=xterm+app, use=ansi+rep, use=xterm+tmux, use=ecma+strikeout, use=xterm+sl-twm, use=ecma+italics, use=xterm+pce2, @@ -7700,7 +7833,7 @@ alacritty+common|base fragment for alacritty, # derived from alacritty rio|fork of alacritty, use=alacritty, -rio-direct|fork of alacritty, +rio-direct|rio with direct-colors, use=alacritty-direct, #### Kitty @@ -7825,22 +7958,24 @@ kitty+common|KovId's TTY common properties, acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy yzz{{||}}~~, bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, - ich=\E[%p1%d@, ind=\n, kBEG=\E[1;2E, kbeg=\EOE, kbs=^?, - kcbt=\E[Z, op=\E[39;49m, rev=\E[7m, ri=\EM, rmacs=\E(B, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l, rmso=\E[27m, - rmul=\E[24m, rs1=\E]\E\\\Ec, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, + ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, + ich=\E[%p1%d@, ind=\n, kBEG=\E[1;2E, kbeg=\EOE, kcbt=\E[Z, + op=\E[39;49m, rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, + rmir=\E[4l, rmkx=\E[?1l, rs1=\E]\E\\\Ec, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%; %?%p1%p3%|%t;7%;m, sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, - Smulx=\E[4:%p1%dm, use=ansi+csr, use=ansi+enq, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, + smkx=\E[?1h, Smulx=\E[4:%p1%dm, + rv=\E\\[>1;4[0-9][0-9][0-9];41c, + xr=\EP>\\|kitty\\([0-9]+\\.[0-9]+\\.[0-9]+\\)\E\\ + \\, + use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca2, use=ansi+rep, use=xterm+focus, use=xterm+sm+1006, - use=ecma+index, use=xterm+pcfkeys, use=xterm+sl-twm, - use=ecma+strikeout, use=ecma+italics, + use=ecma+index, use=ecma+strikeout, use=ecma+italics, + use=ecma+standout, use=ecma+underline, use=linux+kbs, + use=report+da2, use=xterm+pcfkeys, use=xterm+sl-twm, use=xterm+alt1049, use=att610+cvis, use=xterm+tmux, use=bracketed+paste, use=report+version, @@ -7852,7 +7987,15 @@ kitty+setal|set underline colors (nonstandard), #### Foot # https://codeberg.org/dnkl/foot/ -# Version 1.8.2 +# Version 1.18.1 2024/08/17 +# +# vttest: +# device attributes list 28=rectangular editing +# supports rectangle operations, but problems with left/right margins +# reports window-size, but not icon or window label +# numeric keypad has no application-mode +# +# Version 1.8.2 2021/07/31 # # This identifies as a VT220 with 4=sixel and 22=color, however: # tack: @@ -7871,7 +8014,7 @@ kitty+setal|set underline colors (nonstandard), # otherwise few reports, except cursor-position and mouse and some dtterm # VT520 cursor-movement works, except for left/right margins # supports xterm/DECSCUSR, though default case in vttest does not blink -# Send: <27> [ 0 <32> q +# Send: <27> [ 0 <32> q # Text: The cursor should be a blinking rectangle # partial support for xterm mouse any-event mode and button-event mode: # + does not report focus-in/focus-out @@ -7889,20 +8032,24 @@ foot+base|foot base fragment, bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\E]555\E\\, ind=\n, is2=\E[!p\E[4l\E>, kbs=^?, - kcbt=\E[Z, oc=\E]104\E\\, op=\E[39;49m, ri=\EM, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, + kcbt=\E[Z, nel=\EE, oc=\E]104\E\\, op=\E[39;49m, ri=\EM, + rmam=\E[?7l, rmkx=\E[?1l\E>, rmm=\E[?1036h\E[?1034l, rs1=\Ec, rs2=\E[!p\E[4l\E>, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%; %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, - sgr0=\E(B\E[m, smam=\E[?7h, smkx=\E[?1h\E=, E3=\E[3J, - use=att610+cvis, use=ansi+csr, use=ansi+cup, - use=ansi+enq, use=ansi+local, use=ansi+idc, use=ansi+idl, - use=ansi+rca2, use=ansi+rep, use=ansi+tabs, - use=ansi+sgrbold, use=ecma+index, use=ecma+italics, - use=ecma+strikeout, use=xterm+acs, use=xterm+alt+title, - use=xterm+pcfkeys, use=xterm+sm+1006, use=xterm+tmux2, - use=xterm+sl-alt, use=bracketed+paste, - use=report+version, use=xterm+focus, + sgr0=\E(B\E[m, smam=\E[?7h, smkx=\E[?1h\E=, + smm=\E[?1036l\E[?1034h, E3=\E[3J, Smulx=\E[4:%p1%dm, + rv=\E\\[>1;[0-9];0c, + xr=\EP>\\|foot\\([0-9][.0-9](-.*)?\\)?\E\\\\, + use=ecma+underline, use=ecma+standout, use=att610+cvis, + use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+local, + use=ansi+idc, use=ansi+idl, use=ansi+rca2, use=ansi+rep, + use=ansi+tabs, use=ansi+sgrbold, use=ecma+index, + use=ecma+italics, use=ecma+strikeout, use=kitty+setal, + use=xterm+acs, use=xterm+alt+title, use=xterm+pcfkeys, + use=xterm+sm+1006, use=xterm+tmux2, use=xterm+sl-alt, + use=bracketed+paste, use=report+version, + use=xterm+focus, ######## WEB CLIENTS @@ -7918,6 +8065,30 @@ foot+base|foot base fragment, # it can connect to, and display in, a web browser, or as a standalone Qt # application. Either way, it displays in the current desktop session. # +# Testing AppImage for 3.2.0, on Fedora 40: +# + appears to implement erase-display by painting a double-line on the screen, +# doesn't use full screen for ded though it sort-of works for vi. +# + sets TERMINFO in its shell (imitating iTerm2), and TERM=domterm-xterm which +# doesn't work when doing sudo. According to the git log, that was April 1, +# 2023. The VTE developers copied the feature (i.e., a partially workable +# private terminal database) in February 2024. +# + the canonical name for the terminal description is still "domterm", and +# presumably the "domterm-xterm" alias is a workaround for hardcoded scripts +# that look for "xterm". +# + almost all of the differences between ncurses's "domterm" and DomTerm's +# are additions, but (read further) most are untestable due to breakage in +# the program. +# + DomTerm's updated terminal description says it implements italics, but +# + hangs in tack when doing blink (just before testing italics) +# + vttest, ncurses test-program also fare badly, e.g., due to improper line +# wrapping and/or inability to consistently clear the screen. +# +# The review of DomTerm 3.2.0 was prompted by noticing this page +# https://domterm.org/Wire-byte-protocol.html +# which goes on at length for extensions which collide with a commonly-used +# control for restoring a saved cursor position: +# CSI u Restore cursor (SCORC, also ANSI.SYS). +# # Testing current code (2019/07/06) with Fedora 30: # tack # no flash @@ -7956,13 +8127,87 @@ domterm|DomTerm web client, bel@, blink@, dim@, invis@, kcbt=\E[Z, ritm@, rmkx=\E[?1l, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%| %t;7%;m, - sitm@, smkx=\E[?1h, use=linux+kbs, use=xterm+256setaf, - use=ecma+index, use=xterm+focus, use=xterm+sm+1006, - use=xterm+pcfkeys, use=xterm-basic, - use=bracketed+paste, + sitm@, smkx=\E[?1h, rv=\E\\[>990;[0-9];0c, + xr=\EP>\\|DomTerm\\([0-9][.0-9]\\)?\E\\\\, + use=bracketed+paste, use=linux+kbs, use=xterm+256setaf, + use=ecma+index, use=report+da2, use=report+version, + use=xterm+focus, use=xterm+sm+1006, use=xterm+pcfkeys, + use=xterm-basic, ######## Miscellaneous +#### pangoterm +# https://www.leonerd.org.uk/code/pangoterm/ +# https://github.com/bfredl/pangoterm +# https://github.com/neovim/libvterm +# +# which says: +# "A GTK/Pango-based terminal that uses libvterm to provide terminal +# emulation." +# +# This probably has few users, because it cannot put the cursor reliably in the +# right place (i.e., it appears several columns to the right). It is included +# here because it implements what Evans refers to as "fixterms" but sets TERM +# to "xterm". +# +# vttest: +# - no 80/132 column mode +# - no blink mode +# - no protected modes +# - fails wrapping tests +# - no VT52 +# - responds to ENQ with illegal character +# - no SRM +# - no origin mode +# - identifies as VT100 with AVO +# - responds to secondary DA as \E[>0;100;0c +# - responds to DECREQTPARM with illegal character +# - no application-keypad +# - has application cursor-keys +# - backspace key sends DEL, does not support toggle for BS +# - keyboard does not provide LF +# - has DECTCEM and ECH +# - has REP, SD and SL +# - has CBT, CHT, CNL, CPL +# - has ISO 6429 colors +# - BCE tests partially work (text is cleared incorrectly) +# - lacks any other VT220 or higher features. +# - xterm mouse except for modes 9 and 1001 +# wraptest: +# - 6/25 differences from xterm +# tack: +# - no dim mode +# - no invisible mode +# - has italics +# - has strike-out mode +pangoterm|terminal using libvterm, + am, bce, mir, msgr, npc, xenl, AX, XT, + colors#8, cols#80, lines#24, pairs#64, + bel=^G, blink@, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, + dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, ich=\E[%p1%d@, + ind=\n, invis@, is2=\E[!p, kbs=^?, kcbt=\E[Z, nel=\EE, + op=\E[39;49m, ri=\EM, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l, + rs1=\Ec, rs2=\E[!p, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%| + %t;7%;m, + sgr0=\E(B\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h, + rv=\E\\[>0;100;0c, use=ecma+underline, + use=ecma+standout, use=ecma+index, use=ansi+rep, + use=ecma+strikeout, use=xterm+pcfkeys, + use=bracketed+paste, use=vt420+lrmm, use=xterm+focus, + use=xterm+sm+1006, use=ecma+italics, use=ansi+csr, + use=ansi+cup, use=ansi+enq, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca2, + use=ansi+sgrbold, use=xterm+alt+title, use=att610+cvis, + use=xterm+acs, + +pangoterm-256color|pangoterm with 256-colors, + use=xterm+256setaf2, use=pangoterm, + +pangoterm-direct|pangoterm with direct-colors, + use=xterm+direct, use=pangoterm, + #### WezTerm # https://wezfurlong.org/wezterm/ # https://github.com/wez/wezterm @@ -7971,6 +8216,27 @@ domterm|DomTerm web client, # "wezterm is a terminal emulator with support for modern features # such as fonts with ligatures, hyperlinks, tabs and multiple windows." # +# The documentation bears mention. It refers to the "ANSI" standard and +# https://wezfurlong.org/wezterm/what-is-a-terminal.html#ansi-and-ecma-48 +# X3.64 (withdrawn long ago). A related website +# https://github.com/wez/ecma48 +# states that ECMA-48 was issued in 1979 and not revised since. Actually that +# was the second revision; the fifth revision in 1991 is current. The source +# code refers to the second revision in a half-dozen places. Further, there +# are three times as many references to Wikipedia as to xterm's documentation. +# The git commit comments in several instances hint at an incomplete reading +# of the relevant standards. +# +# wezterm-20240203-110809-5046fc22 tested with MacOS +# General: +# + initial screensize is now 80x24 +# tack: +# + no change +# wraptest: +# + erasures (EL, ED, DCH, ICH, ESC) do not cancel wrap +# vttest: +# + some of the problems with debris have been fixed +# # wezterm-20230712_072601_f4abf8fd-1.fedora38.x86_64 # tested with MacOS and Fedora 38/39. # @@ -7995,7 +8261,7 @@ domterm|DomTerm web client, # + poor (doesn't copy anyone, most of the results are wrong) # vttest: # + DA is VT5xx with sixel, selective erase, user windows, color -# + DA2 is VT220 version 277 +# + DA2 is VT220 version 277, perhaps a reference to xterm #277 # + only the VT100 character set works, contrary to DA/DA2. # + no NRCS, either # + double-sized character work, with some debris @@ -8017,9 +8283,28 @@ domterm|DomTerm web client, # + implements xterm normal, any-event and button-event mouse, none of the rest # + reports window size, none of the other window reports wezterm|Wez's Terminal Emulator, - km@, xenl@, - cvvis@, rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@, - use=xterm-256color, + am, bce, km, mir, msgr, npc, xenl, + bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, ech=\E[%p1%dX, + el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, ind=\n, + is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^?, kcbt=\E[Z, kend=\EOF, + op=\E[39;49m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, + rs1=\Ec\E]104\007, rs2=\E[!p\E[?3;4l\E[4l\E>, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%; + %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, + sgr0=\E(B\E[m, smam=\E[?7h, smkx=\E[?1h\E=, Smol=\E[53m, + Smulx=\E[4:%p1%dm, rv=\E\\[>1;277;0c, + xr=\EP>\\|WezTerm ([0-9]+)(-[[:xdigit:]]+)+\E\\\\, + use=ecma+underline, use=ecma+standout, + use=ansi+apparrows, use=ansi+csr, use=ansi+cup, + use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca2, + use=ansi+rep, use=ansi+sgrdim, use=bracketed+paste, + use=ecma+index, use=ecma+italics, use=ecma+strikeout, + use=report+da2, use=report+version, use=vt220+cvis, + use=xterm+256color2, use=xterm+acs, + use=xterm+alt+title, use=xterm+focus, use=xterm+pcc2, + use=xterm+pce2, use=xterm+pcf2, use=xterm+sl-alt, + use=xterm+sm+1006, use=xterm+tmux, #### Contour # https://github.com/contour-terminal/contour @@ -8034,6 +8319,21 @@ wezterm|Wez's Terminal Emulator, # - cannot run, because the package is not signed. # # Fedora rawhide +# contour-terminal-0.6.1.7494-2.fc42.x86_64 +# - most core dumps are finally gone, works when 3D acceleration is disabled. +# - fails mir and related "in" tests in tack. +# - function-keys do not match developer's version. +# - sitm/ritm (italics) still do not work. +# - private mode 12 (cursor) does not work. +# - source code references Unicode values to a page which has none: +# https://vt100.net/docs/vt102-ug/chapter5.html#T5-13 +# (actual source for this information is xterm) +# - identifies as a VT525 with sixel graphics, UDK, rectangle editing and color. +# - adds a control sequence to retrieve contents of entire screen. +# - dumps core in vttest for rectangle editing +# - UDK feature does not work +# - fails vttest for REP, SL, SR, CBT, CHT, VPR +# - sixel feature needs some work (most of my testcases do not work) -TD # contour-terminal-0.3.12.262-6.fc39.x86_64 # - dumps core, cannot test # @@ -8075,32 +8375,198 @@ wezterm|Wez's Terminal Emulator, # # Developer's terminfo (compiled-in) uses some extensions. contour|contour-latest|Contour Terminal Emulator, - am, bce, eslok, hs, km, mc5i, mir, msgr, npc, xenl, xvpa, + am, bce, mc5i, msgr, npc, xenl, xvpa, AX, XT, cols#80, lines#24, pairs#0x7fff, - bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, - dim=\E[2m, dsl=\E[$~, ech=\E[%p1%dX, el1=\E[1K, - flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, hpa=\E[%i%p1%dG, - ind=\n, indn=\E[%p1%dS, invis=\E[8m, ka1=, ka3=, kbs=^?, kc1=, - kc3=, kcbt=\E[Z, kend=\EOF, khlp=, kmous=\E[M, kund=, - oc=\E]104\E\\, op=\E[39;49m, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmam=\E[?7l, rmkx=\E[?1l, rmso=\E[27m, - rmul=\E[24m, rs1=\E]\E\\\Ec, - sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%| - %t;7%;%?%p4%t;5%;%?%p7%t;8%;m, - sgr0=\E(B\E[m, smam=\E[?7h, smkx=\E[?1h, smso=\E[7m, - smul=\E[4m, tsl=\E[2$~\E[1$}\E[H\E[2J, vpa=\E[%i%p1%dd, + bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, dim=\E[2m, + ech=\E[%p1%dX, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, + ind=\n, ka1=, ka3=, kbs=^?, kc1=, kc3=, kcbt=\E[Z, kend=\EOF, + kf13=\E[O2P, kf14=\E[O2Q, kf15=\E[O2R, kf16=\E[O2S, + kf25=\E[O5P, kf26=\E[O5Q, kf27=\E[O5R, kf28=\E[O5S, + kf37=\E[O6P, kf38=\E[O6Q, kf39=\E[O6R, kf40=\E[O6S, + kf49=\E[O3P, kf50=\E[O3Q, kf51=\E[O3R, kf52=\E[O3S, + kf61=\E[O4P, kf62=\E[O4Q, kf63=\E[O4R, khlp=, kmous=\E[M, + kund=, oc=\E]104\E\\, op=\E[39;49m, ri=\EM, rmam=\E[?7l, + rmkx=\E[?1l, rs1=\E]\E\\\Ec, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%; + %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, + sgr0=\E(B\E[m, smam=\E[?7h, smkx=\E[?1h, Cs=\E]12;%p1%s\E\\, E3=\E[3J, Rmol=\E[55m, Se=\E[ q, Smol=\E[53m, Smulx=\E[4:%p1%dm, Ss=\E[%p1%d q, + xr=\EP>\\|contour ([0-9]\\.[0-9]\\.[0-9])\E\\\\, + use=ecma+underline, use=ecma+standout, use=ansi+apparrows, use=ansi+cup, use=ansi+csr, - use=ansi+erase, use=ansi+idc, use=ansi+idl, - use=ansi+inittabs, use=ansi+local, use=ansi+rep, - use=att610+cvis, use=ecma+italics, use=ecma+strikeout, + use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca2, + use=ansi+sgrbold, use=bracketed+paste, use=dec+sl, + use=ecma+index, use=vt220+cvis, use=ecma+strikeout, use=xterm+256color, use=xterm+acs, use=xterm+alt1049, use=xterm+pcc2, use=xterm+pce2, use=xterm+pcf2, + use=report+version, contour-direct|Contour terminal with direct colors, use=xterm+direct, use=contour, +#### Ghostty +# https://github.com/ghostty-org/ghostty +# +# Its readme and man page begin with a lot of hype, concluding with +# +# While aiming for this ambitious goal, our first step is to make Ghostty +# one of the best fully standards compliant terminal emulator, remaining +# compatible with all existing shells and software while supporting all +# of the latest terminal innovations in the ecosystem. You can use +# Ghostty as a drop-in replacement for your existing terminal emulator. +# +# However, it uses xterm as a standard: +# +# We believe Ghostty is one of the most compliant terminal emulators +# available. Terminal behavior is partially a de jure standard (i.e. +# [ECMA-48](https://ecma-international.org/publications-and-standards/stand> +# but mostly a de facto standard as defined by popular terminal emulators +# worldwide. Ghostty takes the approach that our behavior is defined by +# (1) standards, if available, (2) xterm, if the feature exists, (3) +# other popular terminals, in that order. This defines what the Ghostty +# project views as a "standard." +# +# while xterm uses ECMA-48 and DEC 070 along with related documentation such as +# the DEC terminal reference manuals. xterm's documentation does not attempt +# to duplicate those sources of information, so that developers should rely +# upon both xterm's documentation and the published standards. +# +# Comments in ghostty's source code and commits demonstrate that the developers +# study xterm's source code closer than xterm's documentation. The quote above +# is the only mention of ECMA-48. +# +# ghostty 1.1.0 tested with Arch Linux: +# ------------- +# The issue with vttest is repaired. Other issues remain. The reader may not +# have noticed, but the ghostty developers disallow direct bug reports. +# Quoting the developers: +# +# https://github.com/ghostty-org/ghostty/issues/3558 +# Users are not allowed to create Issues directly in this repository - we +# ask that you create a Discussion first. +# ... +# Any Discussion which clearly identifies a problem in Ghostty and can be +# confirmed or reproduced will be converted to an Issue by a maintainer, +# so as a user finding a valid problem you don't do any extra work +# anyway. Thank you. +# +# As a direct consequence, details and attribution in those "Discussion" notes +# may be omitted, as in this instance. +# +# https://web.archive.org/web/20250124124041/https://github.com/ghostty-org/ghostty/issues/2542 +# ghostty #2542 Publish ghostty terminfo to ncurses terminal database +# Opened October 30, 2024, this terminal description is mentioned December 31. +# +# https://web.archive.org/web/20250115170223/https://github.com/ghostty-org/ghostty/issues/4523 +# ghostty #4523 Renderers (Metal and OpenGL) should clip terminal if terminal +# grid size mismatches physical window +# Opened January 3, 2025, with a note +# The only known way to trigger this is DECCOLM, so it's low priority +# since almost nothing uses this. But notably vtetest uses this and it +# makes it appear like we perform much worse than we do. +# +# Issue #4523 does not mention the bug report (nor, as in some other instances +# refer obliquely to a discussion on "Discord"). vttest sends a DECCOLM to +# ensure that the screen is not in 132-column mode. That is the case for the +# testing reported. If ghostty were implementing DECCOLM correctly, it would +# not have decided that the screensize changed. The fix in #4523 is a +# workaround masking other potential issues. +# +# By the way, that should be "vttest" (there is no such program as "vtetest"). +# +# ghostty 1.0.0 tested with Arch Linux: +# ------------- +# tack: +# - does not implement blinking text +# - does not implement meta mode (kmm). +# - implements VT100-style alternate character set +# - testing video-attributes unexpectedly clears the display before acsc +# - italics and strike-out work +# - function-keys mostly match; however because this client (unlike X11 +# clients) does not work with a remote display, some (such as control/alt key +# combinations, and the shifted editing keys) are untestable because +# - numeric keypad does not send VT100-style escapes +# wraptest: +# - matches xterm +# vttest: +# - ghostty hangs in more than one menu, making it impossible to test more than +# a small part of the program. In particular, these are untestable: +# 1. Test of cursor movements +# 2. Test of screen features +# 4. Test of double-sized characters +# - ghostty has tabs (imitating gnome-terminal); when closing a tab with a +# running process (e.g., a hung vttest), ghostty does not prompt about the +# process to be killed. +# - identifies as a "VT220 with color": +# <27> [ ? 6 2 ; 2 2 c +# - although claiming to be a VT220, it does not support NRCS. Actually, it +# fails the VT100 character set test as well. This is a complete failure: +# 3. Test of character sets +# - it does not hang in this menu entry: +# 8. Test of VT102 features (Insert/Delete Char/Line) +# although because it does not implement double-sized characters, most of +# that test counts as a failure. +# - implements VT220 DECTCEM and ECH, but not SRM or DECSCA +# - implements VT420 left/right margins +# - does not implement VT420 rectangle operations +# - does not implement 8-bit controls +# - does implement ISO-6429 cursor-movement +# - supports BCE partially: ED/EL work, but not ECH and indexing. +# - does not support blinking text +# - responds to XTVERSION +# - responds to DECRPM controls, though many are "unknown" +# - does not respond to most DECRQSS except for SGR, DECSCUSR, DECSTBM +# - implements most of xterm mouse protocol except for +# - Mouse Highlight Tracking +# - DEC Locator Events +# - some window reporting works: +# 14 - size of text area in pixels +# 16 - size of character in pixels +# 18 - size of window in chars +# 21 - report window label +# - window-modifying does not work +# - cursor position is incorrect after switching to/from alternate screen +# +# The developers set "Tc" in their terminal description to hint that it +# supports direct-colors, but the feature did not work with this version -TD +ghostty|Ghostty terminal emulator, + am, bce, km, mc5i, mir, msgr, npc, xenl, AX, XT, + cols#80, lines#24, pairs#0x7fff, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, + bel=^G, bold=\E[1m, clear=\E[H\E[2J, + cnorm=\E[?12l\E[?25h, cr=\r, cub1=^H, cud1=\n, + cvvis=\E[?12;25h, dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K, + flash=\E[?5h$<100/>\E[?5l, ind=\n, invis=\E[8m, kbs=^?, + kcbt=\E[Z, kend=\EOF, kent=\EOM, op=\E[39;49m, rev=\E[7m, + ri=\EM, rmam=\E[?7l, rmcup=\E[?1049l, rmkx=\E[?1l\E>, + rmso=\E[27m, rmul=\E[24m, rs1=\E]\E\\\Ec, + setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48; + 5;%p1%d%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5 + ;%p1%d%;m, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%| + %t;7%;%?%p5%t;2%;%?%p7%t;8%;m, + sgr0=\E(B\E[m, smam=\E[?7h, smcup=\E[?1049h, + smkx=\E[?1h\E=, E3=\E[3J, Ms=\E]52;%p1%s;%p2%s\007, + Se=\E[2 q, Smulx=\E[4:%p1%dm, Ss=\E[%p1%d q, + rv=\E\\[>[0-9];[0-9];[0-9]c, + xr=\EP>\\|ghostty %[0-9.]([[:print:]])*\E\\\\, + use=linux+kbs, use=ansi+apparrows, use=ansi+csr, + use=ansi+cup, use=ansi+enq, use=ansi+erase, use=ansi+idc, + use=ansi+idl, use=ansi+inittabs, use=ansi+local, + use=ansi+rca2, use=ansi+rep, use=ansi+sgrso, + use=ansi+sgrul, use=ansi+tabs, use=ecma+index, + use=ecma+italics, use=ecma+strikeout, + use=report+version, use=vt220+cvis, + use=xterm+256color2, use=xterm+acs, + use=xterm+alt+title, use=bracketed+paste, + use=kitty+setal, use=vt420+lrmm, use=xterm+focus, + use=xterm+pce2, use=xterm+pcc2, use=xterm+pcf2, + use=xterm+sm+1006, use=xterm+sl-twm, + ######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS # @@ -8133,24 +8599,23 @@ eterm|GNU Emacs term.el terminal emulation, am, mir, xenl, cols#80, lines#24, bel=^G, bold=\E[1m, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, - cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ind=\n, - rev=\E[7m, rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smir=\E[4h, smso=\E[7m, smul=\E[4m, use=ansi+cpr, - use=ansi+erase, use=ansi+idl, use=ansi+local, - use=xterm+alt47, + cud1=\n, dch=\E[%p1%dP, dch1=\E[P, el1=\E[1K, ht=^I, + ich=\E[%p1%d@, ind=\n, rev=\E[7m, rmir=\E[4l, sgr0=\E[m, + smir=\E[4h, use=ansi+cpr, use=ansi+cup, use=ansi+erase, + use=ansi+idl, use=ansi+local, use=ansi+sgrso, + use=ansi+sgrul, use=xterm+alt47, # The codes supported by the term.el terminal emulation in GNU Emacs 22.2 eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96, msgr, colors#8, pairs#64, - kbs=^?, khome=\E[1~, op=\E[39;49m, ri=\EM, rmso=\E[27m, - rmul=\E[24m, rs1=\Ec, setab=\E[%p1%'('%+%dm, - setaf=\E[%p1%{30}%+%dm, + kbs=^?, khome=\E[1~, op=\E[39;49m, ri=\EM, rs1=\Ec, + setab=\E[%p1%'('%+%dm, setaf=\E[%p1%{30}%+%dm, sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%? %p7%t;8%;m, - sgr0=\E[m, use=ansi+apparrows, use=ansi+csr, - use=ansi+sgr, use=vt220+pcedit, use=eterm, + sgr0=\E[m, use=ecma+underline, use=ecma+standout, + use=ansi+apparrows, use=ansi+csr, use=ansi+sgr, + use=vt220+pcedit, use=eterm, # shell.el can "do" color, though not nearly as well. # @@ -8168,9 +8633,8 @@ eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96, dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes, am, hc, it#8, ncv#13, - bold=\E[1m, cud1=\n, ht=^I, ind=\n, op=\E[39;49m, - rmul=\E[24m, sgr0=\E[m, smul=\E[4m, use=ecma+italics, - use=klone+color, + bold=\E[1m, cud1=\n, ht=^I, ind=\n, op=\E[39;49m, sgr0=\E[m, + use=ecma+underline, use=ecma+italics, use=klone+color, #### Screen @@ -8249,25 +8713,23 @@ screen-base|VT 100/ANSI X3.64 virtual terminal (base), ncv@, U8#1, acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy yzz{{||}}~~, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - cnorm=\E[34h\E[?25h, cub1=^H, cud1=\n, + blink=\E[5m, bold=\E[1m, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, el1=\E[1K, flash=\Eg, - hpa=\E[%i%p1%dG, ich=\E[%p1%d@, indn=\E[%p1%dS, is2=\E)0, - kbs=^?, kcbt=\E[Z, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, + ich=\E[%p1%d@, indn=\E[%p1%dS, is2=\E)0, kbs=^?, kcbt=\E[Z, khome=\E[1~, kmous=\E[M, nel=\EE, rev=\E[7m, ri=\EM, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m, + rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, rs2=\Ec\E[?1000l\E[?25h, sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t; 5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[3m, - smul=\E[4m, vpa=\E[%i%p1%dd, E0=\E(B, S0=\E(%p1%c, + E0=\E(B, S0=\E(%p1%c, use=ecma+underline, use=ansi+apparrows, use=ansi+csr, use=ansi+erase, use=ansi+idl, use=ansi+inittabs, use=ansi+local, - use=xterm+kbs, use=vt220+pcedit, use=xterm+alt1049, - use=ecma+color, use=vt100+enq, use=vt100+4bsd, + use=ansi+rca2, use=bracketed+paste, use=ecma+color, + use=vt100+pf1-pf4, use=vt220+pcedit, use=xterm+alt1049, + use=xterm+kbs, use=vt100+enq, use=vt100+4bsd, + use=xterm+r5+fkeys, use=wyse+cvis, screen|VT 100/ANSI X3.64 virtual terminal, use=screen4, @@ -8335,7 +8797,7 @@ screen.mlterm-256color|GNU Screen with mlterm using 256 colors, # ====================================================================== -# Read the fine manpage: +# Read the fine man page: # When screen tries to figure out a terminal name for # itself, it first looks for an entry named "screen.<term>", # where <term> is the contents of your $TERM variable. If @@ -8343,12 +8805,11 @@ screen.mlterm-256color|GNU Screen with mlterm using 256 colors, # if the terminal is wide (132 cols or more)). If even this # entry cannot be found, "vt100" is used as a substitute. # -# Notwithstanding the manpage, screen uses its own notion of the termcap +# Notwithstanding the man page, screen uses its own notion of the termcap # and some keys from "screen.<term>" are ignored. Here is an entry which # covers those (tested with screen 4.00.02) -TD screen+fkeys|function-keys according to screen, - kend=\E[4~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kfnd@, - khome=\E[1~, kslt@, + kend=\E[4~, kfnd@, khome=\E[1~, kslt@, use=vt100+pf1-pf4, # See explanation before "screen" entry. Cancel italics so that applications # do not assume screen supports the feature. Add this tweak to entries which @@ -8474,23 +8935,22 @@ screen2|VT 100/ANSI X3.64 virtual terminal (old 2.x), ed=\E[J, el=\E[K, ich1=, ind=\n, kbs=^H, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, nel=\r\n, rc=\E8, ri=\EM, rmso=\E[23m, - rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smso=\E[3m, - smul=\E[4m, use=ansi+idc, use=ansi+idl, - use=ansi+inittabs, use=ansi+local, use=vt52+arrows, + rs1=\Ec, sc=\E7, sgr0=\E[m, smso=\E[3m, use=ecma+underline, + use=ansi+idc, use=ansi+idl, use=ansi+inittabs, + use=ansi+local, use=vt52+arrows, # (screen3: removed unknown ":xv:LP:G0:" -- esr) screen3|VT 100/ANSI X3.64 virtual terminal (old 3.x), km, mir, msgr, cols#80, lines#24, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch=\E[%p1%dP, - dch1=\E[P, home=\E[H, ich=\E[%p1%d@, ind=\n, is2=\E)0, - kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rev=\E[7m, - ri=\EM, rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, - rs1=\Ec, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m, - smul=\E[4m, use=ansi+csr, use=ansi+erase, use=ansi+idl, - use=ansi+inittabs, use=ansi+local, + cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, ich=\E[%p1%d@, ind=\n, + is2=\E)0, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, + kcuu1=\EOA, nel=\EE, rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E>, + rmso=\E[23m, rs1=\Ec, sgr0=\E[m, smir=\E[4h, smkx=\E=, + smso=\E[3m, use=ecma+underline, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=vt100+pf1-pf4, # screen 4.0 was released 2003-07-21, and as of March 2019, its terminfo file # was last updated in 2009 to include 256-color support. The most recent @@ -8498,23 +8958,20 @@ screen3|VT 100/ANSI X3.64 virtual terminal (old 3.x), screen4|VT 100/ANSI X3.64 virtual terminal (4.x), use=ecma+index, use=screen-base, -# As of December 2022, screen 5.0 has not been released. -# -# However, +# screen 5.0 was released in August 2024. As of May 2025, few systems use it. # # https://savannah.gnu.org/bugs/?36676 # -# mentions a change to implement italics which should be in a version 5, -# (implemented 2016-11-05, but merged 2017-07-09). That does away with the -# longstanding use of SGR 3 for standout, and interprets it as italics. +# mentions a change to implement italics (implemented 2016-11-05, merged +# 2017-07-09), this may do away with the longstanding use of SGR 3 for +# standout, interpreting it as italics. # -# The same development branch has some support for direct-colors, but none -# of this has been documented. -screen5|VT 100/ANSI X3.64 virtual terminal (someday), - rmso=\E[27m, +# This version has limited support for direct-colors, but does not use the +# outer terminal's $TERM in deciding if or how to apply this. +screen5|VT 100/ANSI X3.64 virtual terminal (5.x), sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? %p5%t;2%;m%?%p9%t\016%e\017%;, - smso=\E[7m, use=ecma+italics, use=ecma+index, + use=ecma+standout, use=ecma+italics, use=ecma+index, use=screen-base, #### Tmux @@ -8528,10 +8985,10 @@ screen5|VT 100/ANSI X3.64 virtual terminal (someday), # various entries such as screen.xterm-new provide a way to more closely # match the terminal. tmux|tmux terminal multiplexer, - invis=\E[8m, rmso=\E[27m, + invis=\E[8m, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - smso=\E[7m, E3=\E[3J, Smulx=\E[4:%p1%dm, + E3=\E[3J, Smulx=\E[4:%p1%dm, use=ecma+standout, use=ecma+italics, use=ecma+strikeout, use=xterm+edit, use=xterm+pcfkeys, use=xterm+sl, use=xterm+tmux, use=screen, use=bracketed+paste, use=report+version, @@ -8551,7 +9008,7 @@ tmux-direct|tmux with direct-color indexing, # "xterm-256color" (hard-coded), which in its pretense that it is xterm, is # several years out of date. # -# There is little documentation; the existing manpages amount to a quarter of +# There is little documentation; the existing man pages amount to a quarter of # the length of mosh.org's heavily promotional website. This entry is based # on testing, and reading the source-code. For the latter, analysis is aided # by the developer's extensive use of hard-coded strings. @@ -8616,31 +9073,26 @@ dvtm|dynamic virtual terminal manager, ncv@, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, el1=\E[1K, - hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@, - is1=\E[?47l\E=\E[?1l, + ich=\E[%p1%d@, ich1=\E[@, is1=\E[?47l\E=\E[?1l, is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d, kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kel=\E[8\^, - kend=\E[8~, kent=\EOM, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf21=\E[23$, - kf22=\E[24$, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[7~, kind=\E[a, kmous=\E[M, kri=\E[b, rev=\E[7m, - ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, + kend=\E[8~, kent=\EOM, kf0=\E[21~, kf21=\E[23$, + kf22=\E[24$, khome=\E[7~, kind=\E[a, kmous=\E[M, kri=\E[b, + rev=\E[7m, ri=\EM, rmir=\E[4l, rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[? 25h, s0ds=\E(B, s1ds=\E(0, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%? %p9%t\016%e\017%;, - sgr0=\E[m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m, - vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr, - use=ansi+idl, use=ansi+local, use=xterm+alt47, - use=vt220+vtedit, use=vt220+cvis, use=ecma+color, - use=ecma+italics, use=vt100+4bsd, + sgr0=\E[m\017, smir=\E[4h, use=ecma+underline, + use=ecma+standout, use=ansi+arrows, use=ansi+csr, + use=ansi+idl, use=ansi+local, use=ansi+rca2, + use=xterm+alt47, use=vt220+vtedit, use=vt220+cvis, + use=ecma+color, use=ecma+italics, use=vt100+4bsd, + use=vt220+sfkeys, use=xterm+r5+fkeys, dvtm-256color|dynamic virtual terminal manager with 256 colors, colors#0x100, pairs#0x10000, @@ -8689,10 +9141,9 @@ dvtm-256color|dynamic virtual terminal manager with 256 colors, ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in VT220-8 mode, am, km, mir, msgr, xenl, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, - dch1=\E[P, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, if=/usr/share/tabset/vt100, + cub1=^H, cud1=\n, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K, + el1=\E[1K, enacs=\E)0, flash=\E[?5h$<100/>\E[?5l, ht=^I, + hts=\EH, ich=\E[%p1%d@, if=/usr/share/tabset/vt100, ind=\n$<150*>, is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~, @@ -8701,15 +9152,15 @@ ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in VT220-8 mode, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~, khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM, - rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l, rmso=\E[27m, - rmul=\E[24m, + rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%? %p9%t\E(0%e\E(B%;, sgr0=\E[m\E(B, smam=\E[?7h, smcup=\E7, smir=\E[4h, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, u8=\E[?62;1;6c, - use=ansi+arrows, use=ansi+csr, use=ansi+idl, - use=ansi+local, use=vt220+cvis, use=xterm+acs, + tbc=\E[3g, u8=\E[?62;1;6c, use=ecma+underline, + use=ecma+standout, use=ansi+arrows, use=ansi+csr, + use=ansi+idl, use=ansi+local, use=ansi+cup, + use=vt220+cvis, use=xterm+acs, use=vt100+pf1-pf4, use=xterm+sl, use=ansi+enq, ncsa|NCSA Telnet 2.7 for Macintosh in VT220-8 mode (color), @@ -8727,11 +9178,10 @@ ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in VT220-8 mode (no status line), # some keyboards and many applications require these as F1-F4. # ncsa-vt220|NCSA Telnet using VT220-compatible function keys, - kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, - kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, use=ncsa, + kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, + kf14=\E[26~, kf15=\E[28~, kf6=\E[17~, kf7=\E[18~, + kf8=\E[19~, kf9=\E[20~, use=vt100+pf1-pf4, use=ncsa, + use=vt220+sfkeys, #### Pilot Pro Palm-Top # @@ -8768,9 +9218,8 @@ elks-vt52|ELKS VT52 console, home=\EH, use=elks-glasstty, elks-ansi|ELKS ANSI console, - clear=\E[H\E[2J, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - el=\E[K, home=\E[H, use=ansi+local1, use=ansi+sgrso, - use=elks-glasstty, + clear=\E[H\E[2J, el=\E[K, use=ansi+cup, use=ansi+local1, + use=ansi+sgrso, use=elks-glasstty, # As a matter of fact, ELKS 0.0.83 on PCs defaults to ANSI emulation # instead of VT52, but the "elks" entry still refers to the latter. @@ -8795,10 +9244,9 @@ pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation, am, xon, cols#80, lines#25, bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, nel=\r\n, - rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m, - use=ansi+arrows, + cuu1=\E[A, dch1=\E[P, el=\E[K, ht=^I, ich1=\E[@, nel=\r\n, + rev=\E[7m, sgr0=\E[m, use=ansi+arrows, use=ansi+cup, + use=ansi+idl1, use=ansi+sgrso, #### Sun consoles # @@ -8810,9 +9258,9 @@ oldsun|Sun Microsystems Workstation console, bel=^G, clear=^L, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\n, is1=\E[1r, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, khome=\E[H, rmso=\E[m, sgr0=\E[m, - smso=\E[7m, use=ansi+idl, use=ansi+local1, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, sgr0=\E[m, + use=ansi+idl, use=ansi+local1, use=ansi+sgrso, + use=vt100+pf1-pf4, # From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995 # <lines> capability later corrected by J.T. Conklin <jtc@cygnus.com> @@ -8828,10 +9276,9 @@ sun-il|Sun Microsystems console with working insert-line, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, khome=\E[214z, kich1=\E[247z, knp=\E[222z, kopt=\E[194z, kpp=\E[216z, - kres=\E[193z, kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@, - rs2=\E[s, sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m, - smso=\E[7m, u8=\E[1t, u9=\E[11t, use=ansi+arrows, - use=ansi+idl, + kres=\E[193z, kund=\E[195z, rev=\E[7m, rmul@, rs2=\E[s, + sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m, u8=\E[1t, + u9=\E[11t, use=ansi+arrows, use=ansi+idl, use=ansi+sgrso, # On some versions of CGSIX framebuffer firmware (SparcStation 5), <il1>/<il> # flake out on the last line. Unfortunately, without them the terminal has no @@ -8850,8 +9297,8 @@ sun-cgsix|sun-ss5|Sun SparcStation 5 console, # incomplete manual page. Presumably the intent was to document features of # shelltool not in wscons: # -# https://manpages.ubuntu.com/manpages/bionic/en/man1/shelltool.1.html -# https://manpages.ubuntu.com/manpages/bionic/en/man1/cmdtool.1.html +# https://web.archive.org/web/20230608051050/manpages.ubuntu.com/manpages/bionic/en/man1/shelltool.1.html +# https://web.archive.org/web/20220520165933/manpages.ubuntu.com/manpages/bionic/en/man1/cmdtool.1.html # # The wscons manual page and the XView source show that it had no feature that # could be used in ncurses u6/u7/u8/u9 extensions. Interesting, the XView @@ -8882,9 +9329,8 @@ sun-17|Sun 17-line window, sun-12|Sun 12-line window, cols#80, lines#12, use=sun, sun-1|Sun 1-line window for sysline, - eslok, hs, - cols#80, lines#1, - dsl=^L, fsl=\E[K, tsl=\r, use=sun, + lines#1, + dsl=^L, fsl=\E[K, tsl=\r, use=sun, use=dec+sl, sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character, ich1@, rmir@, smir@, use=sun, sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history, @@ -8895,11 +9341,11 @@ sun-type4|Sun Workstation console with type 4 keyboard, kcuu1=\E[215z, use=sun-il, # Most of the current references to sun-color are from users wondering why this -# is the default on install. Details from reading the wscons manpage, adding +# is the default on install. Details from reading the wscons man page, adding # cub, etc., here (rather than in the base sun-il entry) since it is not clear # when those were added -TD (2005-05-28) # -# According to wscons manpage, color is supported only on IA systems. +# According to wscons man page, color is supported only on IA systems. # Sun's terminfo entry documents bold and smul/rmul capabilities, but wscons # does not list these. It also sets ncv#3, however that corresponds to # underline and standout. @@ -8922,7 +9368,43 @@ sun-color|Sun Microsystems Workstation console with color support (IA systems), setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6} %=%t3%e%p1%d%;m, sgr=\E[0%?%p6%t;1%;%?%p1%p3%|%t;7%;m, use=ansi+local, - use=sun, use=klone+color, + use=ansi+rca, use=ansi+tabs, use=ecma+index, use=sun, + use=klone+color, + +# These date from March 2017: +# https://www.illumos.org/issues/10360 terminfo: sun-color has 256 colors +# https://www.illumos.org/issues/10359 terminfo: add underline for sun-color +# +# https://www.illumos.org/issues/14919 tem: implement xenl +# https://illumos.topicbox.com/groups/developer/T58d08b48578a674d-M491357a8bb9a7d39b114097f +# +# The developer chose to modify the existing "sun-color" (changing the number +# of colors and color-pairs without adjusting setaf and setab) rather than +# following the advice given in review to add a new terminal description. As a +# result, some ncurses applications will render color incorrectly, while a few +# hard-coded applications may work as intended. +# +# These variants are based on reading the source code. +# https://github.com/illumos/illumos-gate/blob/loader/usr/src/boot/sys/boot/common/tem.c +illumos|Illumos framebuffer console, + xenl, + blink=\E[5m, dim=\E[2m, rmam=\E[?7l, + sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%? + %p4%t;5%;m, + sgr0=\E[0m, smam=\E[?7h, use=ecma+underline, + use=ecma+standout, use=vt220+cvis, use=sun-color, + use=ansi+apparrows, +# +# Referring to these as "sun-" is misleading, but close to the intent of the +# developer -TD +sun-16color|Illumos framebuffer console with 16 colors, + use=ibm+16color, use=illumos, + +sun-256color|Illumos framebuffer console with 256 colors, + use=xterm+256setaf, use=illumos, + +sun-direct|Illumos framebuffer console with direct-color, + use=xterm+indirect, use=illumos, #### Iris consoles # @@ -8995,9 +9477,9 @@ next|NeXT console, am, xt, cols#80, it#8, lines#24, bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, - rmso=\E[4;1m, sgr0=\E[m, smso=\E[4;2m, + cuu1=\E[A, el=\E[K, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, + nel=\r\n, rmso=\E[4;1m, sgr0=\E[m, smso=\E[4;2m, + use=ansi+cup, nextshell|NeXT Shell application, am, cols#80, @@ -9012,17 +9494,15 @@ news-unk|Sony NEWS VT100 emulator common entry, OTbs, OTpt, am, xenl, cols#80, OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, - cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - if=/usr/share/tabset/vt100, + cr=\r, cub1=^H, cud1=\n, ht=^I, if=/usr/share/tabset/vt100, is2=\E[?7h\E[?1h\E[?3l\E7\E8, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, - kf8=\EOW, kf9=\EOX, rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf3=\EOR, + kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, rev=\E[7m, + ri=\EM, rmkx=\E[?1l\E>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sgr0=\E[m, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr, - use=ansi+idl, + smkx=\E[?1h\E=, use=ansi+csr, use=ansi+cup, + use=ansi+erase, use=ansi+idl, use=ansi+local1, + use=ansi+sgrul, use=ansi+sgrso, use=vt100+pf1-pf4, # # (news-29: this had :TY=ascii: --esr) news-29|Sony NEWS VT100 emulator with 29 lines, @@ -9061,14 +9541,13 @@ news-old-unk|old Sony NEWS VT100 emulator common entry, OTbs, OTpt, am, xenl, cols#80, vt#3, OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, - cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - if=/usr/share/tabset/vt100, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, + cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cuu1=\E[A, ed=\E[J, + el=\E[K, ht=^I, if=/usr/share/tabset/vt100, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rev=\E[7m, + ri=\EM, rmkx=\E[?1l\E>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr, + smkx=\E[?1h\E=, use=ansi+csr, use=ansi+cup, + use=ansi+sgrso, use=ansi+sgrul, use=vt100+pf1-pf4, # # (nwp512: this had :DE=^H:, which I think means <OTbs> --esr) nwp512|news|nwp514|news40|vt100-bm|nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|old Sony VT100 emulator 40 lines, @@ -9121,14 +9600,14 @@ nwp511|nwp-511|nwp-511 VT100, OTbs, OTpt, am, xenl, cols#80, lines#24, clear=\E[;H\E[2J$<20/>, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A$<2/>, dl1=\E[M, ed=\E[J$<30/>, el=\E[K$<3/>, + cuu1=\E[A$<2/>, ed=\E[J$<30/>, el=\E[K$<3/>, flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l, - il1=\E[L, is2=\E[?5l\E[?1l\E>\E[?7h\E[?8h, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\E#W, khome=\E[H, - ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>, + is2=\E[?5l\E[?1l\E>\E[?7h\E[?8h, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf5=\EOT, kf6=\E#W, + khome=\E[H, ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h, smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+local1, + use=ansi+idl1, use=vt100+pf1-pf4, # (news517: this had :TY=sjis:. --esr) nwp517|nwp-517|nwp-517 VT200 80 cols 30 rows, cols#80, lines#30, @@ -9137,12 +9616,11 @@ nwp517|nwp-517|nwp-517 VT200 80 cols 30 rows, tsl=\E[1$}\E[;%df, use=dec+sl, use=vt220-base, # (news517-w: this had :TY=sjis:. --esr) nwp517-w|nwp-517-w|nwp-517 VT200 132 cols 50 rows, - eslok, hs, cols#132, lines#50, - OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$}, + OTi2=\E[2$~\n, dsl=\E[1$~, is2=\E7\E[r\E8\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, - tsl=\E[1$}\E[;%df, use=vt220-base, + tsl=\E[1$}\E[;%df, use=dec+sl, use=vt220-base, #### Common Desktop Environment # @@ -9153,26 +9631,21 @@ dtterm|CDE desktop terminal, am, mir, msgr, xenl, xon, cols#80, it#8, lines#24, lm#0, ncv@, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h$<200>\E[?5l, home=\E[H, ht=^I, hts=\EH, + bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, dch=\E[%p1%dP, + dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K, + enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED, is2=\E F\E>\E[?1l\E[?7h\E[?45l, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, - kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, nel=\EE, ri=\EM, rmacs=^O, rmam=\E[?7l, - rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m, + rmir=\E[4l, rmso=\E[22;27m, sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 %t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, - smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ansi+csr, - use=ansi+erase, use=ansi+idl, use=ansi+local, - use=ansi+sgr, use=decid+cpr, use=vt220+vtedit, - use=vt220+cvis, use=ecma+color, + smso=\E[2;7m, tbc=\E[3g, use=ecma+underline, + use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=ansi+sgr, use=decid+cpr, + use=ecma+color, use=vt220+cvis, use=vt220+sfkeys, + use=vt220+vtedit, use=xterm+r5+fkeys, ######## Non-Unix Consoles # @@ -9215,12 +9688,12 @@ ansi-color-3-emx|ANSI.SYS color 3, mono-emx|stupid monochrome ANSI terminal with only one kind of emphasis, am, cols#80, it#8, lines#24, - clear=\E[H\E[2J$<50>, cup=\E[%i%p1%d;%p2%dH, el=\E[K, - home=\E[H, ht=^I, kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, - kcuf1=\0M, kcuu1=\0H, kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, - kf4=\0>, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, kf9=\0C, - khome=\0G, kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=\r\n, - rev=\E[7m, sgr0=\E[0m, use=ansi+local1, + clear=\E[H\E[2J$<50>, el=\E[K, ht=^I, kb2=\E[G, kbs=^H, + kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, kf0=\0D, kf1=\0;, + kf2=\0<, kf3=\0=, kf4=\0>, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, + kf9=\0C, khome=\0G, kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, + nel=\r\n, rev=\E[7m, sgr0=\E[0m, use=ansi+local1, + use=ansi+cup, #### Cygwin @@ -9290,23 +9763,19 @@ cygwinB19|ANSI emulation for cygwin32, cygwin|ANSI emulation for Cygwin, am, hs, mir, msgr, xon, colors#8, it#8, pairs#64, - bel=^G, bold=\E[1m, cr=\r, cub=\E[%p1%dD, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, el1=\E[1K, fsl=^G, home=\E[H, ht=^I, - ind=\n, invis=\E[8m, kb2=\E[G, kf1=\E[[A, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, - kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[1~, kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8, - rev=\E[7m, ri=\EM, rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, - rs1=\Ec\E]R, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + bel=^G, bold=\E[1m, cr=\r, cub1=^H, el1=\E[1K, fsl=^G, ht=^I, + ind=\n, invis=\E[8m, kb2=\E[G, khome=\E[1~, kspd=^Z, + nel=\r\n, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, + rmpch=\E[10m, rs1=\Ec\E]R, sc=\E7, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7 %t;8%;%?%p9%t;11%;m, - sgr0=\E[0;10m, smpch=\E[11m, smso=\E[7m, smul=\E[4m, - tsl=\E];, use=ansi+arrows, use=ansi+erase, use=ansi+idc, - use=ansi+idl, use=ansi+local, use=ansi+rca2, - use=vt220+pcedit, use=vt102+enq, use=klone+acs, - use=xterm+alt47, + sgr0=\E[0;10m, smpch=\E[11m, tsl=\E];, + use=ecma+underline, use=ecma+standout, use=ansi+arrows, + use=ansi+cup, use=ansi+erase, use=ansi+idc, use=ansi+idl, + use=ansi+local, use=ansi+rca2, use=vt220+pcedit, + use=vt102+enq, use=klone+acs, use=linux+lockeys, + use=vt220+sfkeys, use=vt220+ufkeys, use=xterm+alt47, # I've supplied this so that you can help test new values and add other # features. Cheers, earnie_boyd@yahoo.com. @@ -9316,23 +9785,19 @@ cygwin|ANSI emulation for Cygwin, # this list, but DOES cause problems so it has been removed cygwinDBG|Debug Version for Cygwin, am, eo, mir, msgr, xon, - cols#80, lines#24, ncv#3, - bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, el1=\E[1K, - flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, - ind=\n, kNXT=\E[6$, kPRV=\E[5$, kb2=\E[G, kcbt=\E[Z, - kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, - kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kspd=^Z, + cols#80, lines#24, + bel=^G, cr=\r, dim=\E[2m, el1=\E[1K, + flash=\E[?5h$<200/>\E[?5l, ind=\n, kNXT=\E[6$, + kPRV=\E[5$, kb2=\E[G, kcbt=\E[Z, khome=\E[1~, kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8, ri=\EM, rs1=\Ec\E]R, sc=\E7, sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, - sgr0=\E[0;10m, vpa=\E[%i%p1%dd, use=ansi+arrows, + sgr0=\E[0;10m, use=ansi+arrows, use=ansi+cup, use=ansi+erase, use=ansi+idc, use=ansi+idl, - use=ansi+inittabs, use=ansi+local, use=ansi+sgrbold, - use=klone+acs, use=klone+color, use=vt220+pcedit, - use=vt220+cvis, use=vt102+enq, + use=ansi+inittabs, use=ansi+local, use=ansi+rca2, + use=ansi+sgrbold, use=klone+acs, use=klone+color, + use=linux+lockeys, use=vt102+enq, use=vt220+pcedit, + use=vt220+cvis, use=vt220+sfkeys, use=vt220+ufkeys, #### DJGPP @@ -9342,6 +9807,7 @@ cygwinDBG|Debug Version for Cygwin, # Oddly enough, while several combinations of modifiers are tabulated, there is # none for shifted cursor keys. # +# kf1-kf12: # F1 \E[[A # F2 \E[[B # F3 \E[[C @@ -9366,6 +9832,7 @@ cygwinDBG|Debug Version for Cygwin, # Right Arrow \E[C # Up Arrow \E[A # +# kf13-kf24: # Shift-F1 \E[25~ # Shift-F2 \E[26~ # Shift-F3 \E[27~ @@ -9379,6 +9846,7 @@ cygwinDBG|Debug Version for Cygwin, # Shift-F11 \E[35~ # Shift-F12 \E[36~ # +# kf25-kf36: # Ctrl-F1 \E[47~ # Ctrl-F2 \E[48~ # Ctrl-F3 \E[49~ @@ -9403,6 +9871,7 @@ cygwinDBG|Debug Version for Cygwin, # Ctrl-Right Arrow \E[40~ # Ctrl-Up Arrow \E[37~ # +# kf37-kf48: # Alt-F1 \E[59~ # Alt-F2 \E[60~ # Alt-F3 \E[61~ @@ -9416,6 +9885,7 @@ cygwinDBG|Debug Version for Cygwin, # Alt-F11 \E[79~ # Alt-F12 \E[80~ # +# ignore (conflicting): # Alt-Delete \E[65~ # Alt-Down Arrow \E[60~ # Alt-End \E[66~ @@ -9454,27 +9924,42 @@ cygwinDBG|Debug Version for Cygwin, # Alt-X \E[104~ # Alt-Y \E[105~ # Alt-Z \E[106~ -djgpp|ANSI emulation for DJGPP alpha, +djgpp|ANSI emulation for DJGPP 2.05, am, bce, msgr, xhp, xon, xt, colors#8, it#8, pairs#64, acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v \301w\302x\263y\363z\362{\343|\330}\234~\376, bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[1v, cnorm=\E[v, cr=\r, - cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[2v, - dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, ind=\E[S, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[1~, nel=\r\n, op=\E[37;40m, ri=\E[T, rmso=\E[m, + cub1=^H, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, + ech=\E[%p1%dX, el1=\E[1K, ht=^I, ich=\E[%p1%d@, ich1=\E[@, + ind=\E[S, kf13=\E[25~, kf14=\E[26~, kf15=\E[27~, + kf16=\E[28~, kf17=\E[29~, kf18=\E[30~, kf19=\E[31~, + kf20=\E[32~, kf21=\E[33~, kf22=\E[34~, kf23=\E[35~, + kf24=\E[36~, kf25=\E[47~, kf26=\E[48~, kf27=\E[49~, + kf28=\E[50~, kf29=\E[51~, kf30=\E[52~, kf31=\E[53~, + kf32=\E[54~, kf33=\E[55~, kf34=\E[56~, kf35=\E[57~, + kf36=\E[58~, kf37=\E[59~, kf38=\E[60~, kf39=\E[61~, + kf40=\E[62~, kf41=\E[63~, kf42=\E[64~, kf43=\E[65~, + kf44=\E[66~, kf45=\E[67~, kf46=\E[68~, kf48=\E[80~, + kf6=\E[17~, khome=\E[1~, nel=\r\n, op=\E[37;40m, ri=\E[T, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%e;25%;%? %p6%t;1%;%?%p7%t;8%;m, - sgr0=\E[m, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, - use=ansi+arrows, use=ansi+erase, use=ansi+idl, - use=ansi+local, use=ansi+sgr, use=vt220+pcedit, - use=ecma+index, + sgr0=\E[m, smul=\E[4m, alt_A=\E[82~, alt_B=\E[82~, + alt_C=\E[83~, alt_D=\E[84~, alt_E=\E[85~, alt_F=\E[86~, + alt_G=\E[87~, alt_H=\E[88~, alt_I=\E[89~, alt_J=\E[90~, + alt_K=\E[91~, alt_L=\E[92~, alt_M=\E[93~, alt_N=\E[94~, + alt_O=\E[95~, alt_P=\E[96~, alt_Q=\E[97~, alt_R=\E[98~, + alt_S=\E[99~, alt_T=\E[100~, alt_U=\E[101~, + alt_V=\E[102~, alt_W=\E[103~, alt_X=\E[104~, + alt_Y=\E[105~, alt_Z=\E[106~, kDC5=\E[43~, kDN5=\E[38~, + kEND5=\E[44~, kHOM5=\E[41~, kIC5=\E[42~, kLFT5=\E[39~, + kNXT5=\E[46~, kPRV5=\E[45~, kRIT5=\E[40~, kUP5=\E[37~, + use=ansi+arrows, use=ansi+cup, use=ansi+erase, + use=ansi+idl, use=ansi+local, use=ansi+rca2, + use=ansi+sgr, use=ansi+sgrso, use=ecma+index, + use=linux+lockeys, use=vt220+pcedit, use=vt220+ufkeys, djgpp203|entry for DJGPP 2.03, OTbs, am, @@ -9486,17 +9971,15 @@ djgpp204|entry for DJGPP 2.04, OTbs, am, AX, colors#8, cols#80, it#8, lines#25, ncv#3, pairs#64, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v, - clear=\E[H\E[2J, cnorm=\E[v, cr=\r, - cup=\E[%i%p1%d;%p2%dH, cvvis=\E[2v, dch=\E[%p1%dP, - dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m, - kf0=\E[21~, kf1=\E[[A, kf10=\E[21~, kf2=\E[[B, kf3=\E[[C, - kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, - kf9=\E[20~, khome=\E[1~, kll=\E[4~, nel=\r\n, rev=\E[7m, - ri=\E[T, rmso=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr0=\E[m, smso=\E[7m, smul=\E[4m, use=ansi+arrows, - use=ansi+idl, use=ansi+local, use=vt220+pcedit, - use=ecma+index, + clear=\E[H\E[2J, cnorm=\E[v, cr=\r, cvvis=\E[2v, + dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m, + kf0=\E[21~, kf10=\E[21~, kf6=\E[17~, kf7=\E[18~, + kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kll=\E[4~, nel=\r\n, + rev=\E[7m, ri=\E[T, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + sgr0=\E[m, smul=\E[4m, use=ansi+arrows, use=ansi+cup, + use=ansi+idl, use=ansi+local, use=ansi+sgrso, + use=linux+lockeys, use=vt220+pcedit, use=ecma+index, #### U/Win @@ -9510,16 +9993,15 @@ uwin|U/Win 3.2 console, \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u \264v\301w\302x\263y\363z\362{\343|\330}\234~\376, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dim=\E[2m, - ech=\E[%p1%dX, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, - kdch1=^?, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, - kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, - kf7=\EOV, kf8=\EOW, kf9=\EOX, kich1=\E[@, nel=\r\n, - op=\E[39;49m, rc=\E8, rev=\E[7m, rmacs=\E[10m, - rmpch=\E[10m, rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7, - sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=ansi+arrows, use=ansi+cpr, - use=ansi+erase, use=ansi+idc, use=klone+color, + cuf1=\E[C, cuu1=\E[A, dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K, + ht=^I, hts=\EH, kdch1=^?, kend=\E[Y, kf10=\EOY, kf11=\EOZ, + kf12=\EOA, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, + kich1=\E[@, nel=\r\n, op=\E[39;49m, rc=\E8, rev=\E[7m, + rmacs=\E[10m, rmpch=\E[10m, rs1=\Ec\E]R, sc=\E7, + sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, tbc=\E[3g, + use=ecma+standout, use=ansi+arrows, use=ansi+cpr, + use=ansi+cup, use=ansi+erase, use=ansi+idc, + use=ansi+sgrul, use=klone+color, use=vt100+pf1-pf4, use=vt220+cvis, #### Microsoft (miscellaneous) @@ -9558,10 +10040,11 @@ ansi-nt|psx_ansi|Microsoft Windows NT console POSIX ANSI mode, am, bw, msgr, cols#80, it#8, lines#25, bel=^G, clear=\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[V, - kcuf1=\E[C, kcuu1=\E[A, nel=\r\E[S, rc=\E[u, rev=\E[7m, - ri=\E[T, rmso=\E[m, sc=\E[s, sgr0=\E[0m, smso=\E[7m, + cuu1=\E[A, ed=\E[J, el=\E[K, ht=^I, ind=\E[S, kbs=^H, + kcub1=\E[D, kcud1=\E[V, kcuf1=\E[C, kcuu1=\E[A, nel=\r\E[S, + rc=\E[u, rev=\E[7m, ri=\E[T, sc=\E[s, sgr0=\E[0m, + use=ansi+cup, use=ansi+sgrso, + # From: jew@venus.sunquest.com # Date: 19 Feb 93 23:41:07 GMT # Here's a combination of ansi and vt100 termcap @@ -9576,12 +10059,12 @@ pcmw|PC running Microsoft Works, cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I, hts=\EH$<2/>, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED$<5/>, - rc=\E8, rev=\E[7m$<2/>, rf=/usr/share/tabset/vt100, - ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>, + nel=\r\ED$<5/>, rc=\E8, rev=\E[7m$<2/>, + rf=/usr/share/tabset/vt100, ri=\EM$<5/>, + rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, sgr0=\E[m$<2/>, smso=\E[7m$<2/>, smul=\E[4m$<2/>, - tbc=\E[3g$<2/>, + tbc=\E[3g$<2/>, use=vt100+pf1-pf4, # From: Federico Bianchi # This is the entry for the OpenNT terminal. @@ -9611,28 +10094,27 @@ interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with colo acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v \301w\302x\263y\363z\362{\343|\330}\234~\376, - bel=^G, bold=\E[1m, clear=\E[2J, cr=\r, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - ind=\E[S, kLFT=\EF\^, kRIT=\EF$, kcbt=\E[Z, kdch1=^?, - kend=\E[U, kf0=\EFA, kf1=\EF1, kf10=\EFA, kf11=\EFB, - kf12=\EFC, kf13=\EFD, kf14=\EFE, kf15=\EFF, kf16=\EFG, - kf17=\EFH, kf18=\EFI, kf19=\EFJ, kf2=\EF2, kf20=\EFK, - kf21=\EFL, kf22=\EFM, kf23=\EFN, kf24=\EFO, kf25=\EFP, - kf26=\EFQ, kf27=\EFR, kf28=\EFS, kf29=\EFT, kf3=\EF3, - kf30=\EFU, kf31=\EFV, kf32=\EFW, kf33=\EFX, kf34=\EFY, - kf35=\EFZ, kf36=\EFa, kf37=\EFb, kf38=\EFc, kf39=\EFd, - kf4=\EF4, kf40=\EFe, kf41=\EFf, kf42=\EFg, kf43=\EFh, - kf44=\EFi, kf45=\EFj, kf46=\EFk, kf47=\EFm, kf48=\EFn, - kf49=\EFo, kf5=\EF5, kf50=\EFp, kf51=\EFq, kf52=\EFr, - kf53=\EFs, kf54=\EFt, kf55=\EFu, kf56=\EFv, kf57=\EFw, - kf58=\EFx, kf59=\EFy, kf6=\EF6, kf60=\EFz, kf7=\EF7, - kf8=\EF8, kf9=\EF9, kich1=\E[L, kind=\EF+, kll=\E[U, - knp=\E[T, kpp=\E[S, kri=\EF-, ll=\E[U, nel=\r\n, op=\E[m, - rc=\E[u, rev=\E[7m, ri=\E[T, rmcup=\E[2b\E[u\r\E[K, - rmso=\E[m, rmul=\E[m, rs1=\Ec, sc=\E[s, sgr0=\E[0m, - smcup=\E[s\E[1b, smso=\E[7m, smul=\E[4m, use=ansi+arrows, - use=ansi+idl, use=ansi+local, use=ecma+index, - use=klone+color, + bel=^G, bold=\E[1m, clear=\E[2J, cr=\r, cud1=\n, ed=\E[J, + el=\E[K, ht=^I, ind=\E[S, kLFT=\EF\^, kRIT=\EF$, kcbt=\E[Z, + kdch1=^?, kend=\E[U, kf0=\EFA, kf1=\EF1, kf10=\EFA, + kf11=\EFB, kf12=\EFC, kf13=\EFD, kf14=\EFE, kf15=\EFF, + kf16=\EFG, kf17=\EFH, kf18=\EFI, kf19=\EFJ, kf2=\EF2, + kf20=\EFK, kf21=\EFL, kf22=\EFM, kf23=\EFN, kf24=\EFO, + kf25=\EFP, kf26=\EFQ, kf27=\EFR, kf28=\EFS, kf29=\EFT, + kf3=\EF3, kf30=\EFU, kf31=\EFV, kf32=\EFW, kf33=\EFX, + kf34=\EFY, kf35=\EFZ, kf36=\EFa, kf37=\EFb, kf38=\EFc, + kf39=\EFd, kf4=\EF4, kf40=\EFe, kf41=\EFf, kf42=\EFg, + kf43=\EFh, kf44=\EFi, kf45=\EFj, kf46=\EFk, kf47=\EFm, + kf48=\EFn, kf49=\EFo, kf5=\EF5, kf50=\EFp, kf51=\EFq, + kf52=\EFr, kf53=\EFs, kf54=\EFt, kf55=\EFu, kf56=\EFv, + kf57=\EFw, kf58=\EFx, kf59=\EFy, kf6=\EF6, kf60=\EFz, + kf7=\EF7, kf8=\EF8, kf9=\EF9, kich1=\E[L, kind=\EF+, + kll=\E[U, knp=\E[T, kpp=\E[S, kri=\EF-, ll=\E[U, nel=\r\n, + op=\E[m, rc=\E[u, rev=\E[7m, ri=\E[T, + rmcup=\E[2b\E[u\r\E[K, rs1=\Ec, sc=\E[s, sgr0=\E[0m, + smcup=\E[s\E[1b, use=ansi+arrows, use=ansi+cup, + use=ansi+idl, use=ansi+local, use=ansi+sgrso, + use=ansi+sgrul, use=ecma+index, use=klone+color, opennt-35|ntconsole-35|OpenNT-term35 compatible with color, lines#35, use=opennt, @@ -9710,9 +10192,8 @@ opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color, altos2|alt2|altos-2|Altos II, cols#80, it#8, lines#24, xmc#0, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[1B, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, - if=/usr/share/tabset/vt100, il1=\E[L, ind=\n, + cuu1=\E[1A, dch1=\E[P, ed=\E[J, el=\E[K, ht=^I, ich1=\E[@, + if=/usr/share/tabset/vt100, ind=\n, is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r, kEOL=^An\r, kcbt=^AK\r, kclr=^AL\r, kdch1=^AM\r, kel=^AN\r, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r, @@ -9720,8 +10201,9 @@ altos2|alt2|altos-2|Altos II, kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r, kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=\E[f, kil1=^AJ\r, kind=^AO\r, - nel=\r\n, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smam=\E[?7h, smso=\E[7m, smul=\E[4m, use=ansi+arrows, + nel=\r\n, rmam=\E[?7l, sgr0=\E[m, smam=\E[?7h, + use=ansi+arrows, use=ansi+cup, use=ansi+idl1, + use=ansi+sgrso, use=ansi+sgrul, # (altos3: had extension capabilities # :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ @@ -9833,7 +10315,7 @@ hp262x|HP 262x terminals, # Due to severe 2621 braindamage, the only way to get the arrow keys to # transmit anything at all is to turn on the function key labels # with <smkx>, and even then the user has to hold down shift! -# The default 2621 turns off the labels except when it has to to +# The default 2621 turns off the labels except when it has to, to # enable the function keys. If your installation prefers labels # on all the time, or off all the time (at the "expense" of the # function keys), use 2621-nl or 2621-wl. @@ -10205,18 +10687,18 @@ hpansi|hp700|Hewlett Packard 700/44 in HP-PCterm mode, cols#80, lines#25, acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x \263, - bel=^G, cbt=\E[Z, clear=\E[2J\E[H, cr=\r, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n, + bel=^G, cbt=\E[Z, clear=\E[2J\E[H, cr=\r, dch1=\E[P, ed=\E[J, + el=\E[K, ht=^I, ich1=\E[@, ind=\n, is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\, kcbt=\E[Z, kend=\E[4~, kf1=\E[17~, kf10=\E[28~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khome=\E[1~, knp=\E[6~, kpp=\E[5~, rmam=\E[?7l, rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\, - rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, - smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, smso=\E[7m, - smul=\E[4m, xoffc=g, xonc=e, use=ansi+arrows, - use=ansi+local1, use=vt220+cvis, + sgr0=\E[m, smam=\E[?7h, + smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, xoffc=g, + xonc=e, use=ansi+arrows, use=ansi+cup, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, use=ansi+sgrul, + use=vt220+cvis, # # (hp2392: copied <rmir> here from hpex -- esr) hp2392|239x series, @@ -10414,14 +10896,13 @@ gator-t|HP 9000 model 237 emulating extra-tall AAA, gator|HP 9000 model 237 emulating AAA, bw, km, mir, ul, cols#128, it#8, lines#47, - bel=^G, cbt=\E[Z, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch=\E[%p1%dP$<4/>, - dch1=\E[P, dl=\E[%p1%dM$<1*/>, dl1=\E[M, home=\E[H, + bel=^G, cbt=\E[Z, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cuu1=\EM, + dch=\E[%p1%dP$<4/>, dch1=\E[P, dl=\E[%p1%dM$<1*/>, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@$<4/>, ich1=\E[@, - il=\E[%p1%dL$<1*/>, il1=\E[L, kbs=^H, kcub1=^H, kcud1=\n, - nel=\r\n, rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m, - rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, - use=ansi+erase, + il=\E[%p1%dL$<1*/>, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, + rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, sgr0=\E[m, + use=ansi+cup, use=ansi+erase, use=ansi+idl1, + use=ansi+sgrso, use=ansi+sgrul, gator-52|HP 9000 model 237 emulating VT52, cols#128, lines#47, use=vt52-basic, @@ -10446,9 +10927,8 @@ dku7003-dumb|Honeywell Bull DKU 7003 dumb mode, dku7003|Honeywell Bull DKU 7003 all features described, msgr, xmc#1, - blink=\E[5m, bold=\E[7m, dim=\E[2m, rev=\E[7m, rmso=\E[m, - rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, - use=dku7003-dumb, + blink=\E[5m, bold=\E[7m, dim=\E[2m, rev=\E[7m, sgr0=\E[m, + use=ansi+sgrso, use=ansi+sgrul, use=dku7003-dumb, #### Lear-Siegler (LSI adm) # @@ -10833,11 +11313,11 @@ pt100|pt200|wren|fenix|Prime pt100/pt200, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl1=\E[M, ed=\E[J\E[r, el=\E[K\E[t, flash=\E$$<200/>\E$P, home=\E$B, ht=^I, il1=\E[L\E[t, ind=\n, khome=\E$A, nel=\r\n, rmcup=, - rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, + rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, sgr0=\E[m, smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12 l\E[1Q, - smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m, - use=ansi+arrows, use=ansi+local, + smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, use=ansi+arrows, + use=ansi+local, use=ansi+sgrul, pt100w|pt200w|wrenw|fenixw|Prime pt100/pt200 in 132-column mode, cols#132, @@ -10917,15 +11397,14 @@ qvt103|Qume qvt 103, cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>, cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - rev=\E[7m$<2>, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E[?1l\E>, - rmso=\E[m$<2>, rmul=\E[m$<2>, + kcuu1=\EOA, rev=\E[7m$<2>, ri=\EM$<5>, rmam=\E[?7l, + rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 %;m$<2>, sgr0=\E[m$<2>, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ansi+csr, - use=ansi+local, + use=ansi+local, use=vt100+pf1-pf4, qvt103-w|Qume qvt103 132 cols, cols#132, lines#24, @@ -11967,16 +12446,15 @@ tvi970|TeleVideo 970, cols#80, it#8, lines#24, acsc=, cbt=\E[Z, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\ED, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df, - cuu1=\EM, cvvis=\E[1Q, dch1=\E[P, dl1=\E[M, dsl=\Eg\Ef\r, - ed=\E[J, el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, il1=\E[L, + cuu1=\EM, cvvis=\E[1Q, dch1=\E[P, dsl=\Eg\Ef\r, ed=\E[J, + el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H, ht=^I, is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J, kf1=\E?a, kf2=\E?b, kf3=\E?c, kf4=\E?d, kf5=\E?e, kf6=\E?f, kf7=\E?g, kf8=\E?h, kf9=\E?i, ri=\EM, rmacs=\E(B, - rmam=\E[?7h, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smacs=\E(B, smam=\E[?7l, - smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m, - smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+arrows, + rmam=\E[?7h, rmcup=, rmir=\E[4l, sgr0=\E[m, smacs=\E(B, + smam=\E[?7l, smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, + use=ansi+arrows, use=ansi+idl1, use=ansi+rca2, + use=ansi+sgrso, use=ansi+sgrul, tvi970-vb|TeleVideo 970 with visual bell, flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l, @@ -12136,15 +12614,15 @@ vi300|Visual 300 ANSI x3.64, am, bw, mir, xenl, cols#80, lines#24, bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\n, + dch1=\E[P$<40>, ed=\E[J, el=\E[K, ht=^I, ind=\n, is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[1Q\E[0;1(D\E[8s, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E_A\E\\, kf2=\E_B\E\\, kf3=\E_C\E\\, kf4=\E_D\E\\, kf5=\E_E\E\\, kf6=\E_F\E\\, kf7=\E_G\E\\, kf8=\E_H\E\\, kf9=\E_I\E\\, khome=\E[H, ri=\EM, rmam=\E[?7l, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h, - smso=\E[1m, smul=\E[4m, use=ansi+local1, + rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smso=\E[1m, + use=ansi+cup, use=ansi+idl1, use=ansi+local1, + use=ansi+sgrul, # some of the vi300s have older firmware that has the command # sequence for setting editing extent reversed. @@ -12188,9 +12666,9 @@ vi603|visual603|Visual 603, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, ind=\ED, is1=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r, rev=\E[7m, - ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, - sgr0=\E[m\017$<2>, smir=\E[4h, smso=\E[7m, smul=\E[4m, - tsl=\EP2~, use=ansi+idl1, use=decid+cpr, use=vt100+4bsd, + ri=\EM, rmir=\E[4l, sgr0=\E[m\017$<2>, smir=\E[4h, + tsl=\EP2~, use=ecma+underline, use=ecma+standout, + use=ansi+idl1, use=decid+cpr, use=vt100+4bsd, #### Wyse (wy) # @@ -12636,33 +13114,36 @@ wy99-ansi|Wyse WY-99GT in ANSI mode (int'l PC keyboard), am, km, mir, msgr, xenl, cols#80, it#8, lines#25, vt#3, acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~, - bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J$<200>, - cnorm=\E[34h\E[?25h, cr=\r, cub=\E[%p1%dD$<1>, - cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED, - cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, - cvvis=\E[34l\E[?25h, dim=\E[2m, ech=\E[%p1%dX, - ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>, enacs=\E)0, - flash=\E[?5h$<30/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, - ht=^I, ich=\E[%p1%d@, ind=\n$<1>, + bel=^G, cbt=\E[Z, clear=\E[H\E[J$<200>, cr=\r, + cub=\E[%p1%dD$<1>, cub1=\010$<1>, cud=\E[%p1%dB, + cud1=\ED, cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>, + cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E[34l\E[?25h, dim=\E[2m, + ech=\E[%p1%dX, ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>, + enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, ht=^I, + ich=\E[%p1%d@, ind=\n$<1>, is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4 ;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i, kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf2=\EOQ, + kcuu1=\EOA, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf20=\E[33~, kf21=\E[34~, kf22=\E[35~, kf23=\E[1~, - kf24=\E[2~, kf3=\EOR, kf4=\EOS, kf5=\E[M, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, ll=\E[24E, mc0=\E[?19h, - nel=\EE, prot=\E[1"q, ri=\EM, rmacs=^O, rmam=\E[?7l, - rmir=\E[4l, rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m, + kf24=\E[2~, kf5=\E[M, ll=\E[24E, mc0=\E[?19h, nel=\EE, + prot=\E[1"q, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, + rmkx=\E[?1l, rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16 ;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E \E[4i, sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%? %p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;, sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h, vpa=\E[%i%p1%dd, use=ansi+csr, use=ansi+idl, - use=ansi+pp, use=ansi+sgrbold, + smkx=\E[?1h, use=ecma+underline, use=ecma+standout, + use=ansi+csr, use=ansi+cup, use=ansi+idl, use=ansi+pp, + use=ansi+rca2, use=ansi+sgrbold, use=vt100+pf1-pf4, + use=vt220+ufkeys, use=wyse+cvis, + +# http://www.bitsavers.org/pdf/wyse/WY-99/880411-02A_WY-99GT_User_Manual_198703.pdf +# "CSI 34 h" is WYULCURM, "Block cursor on" vs "Underline cursor on" +wyse+cvis|Wyse cursor-mode, + civis=\E[?25l, cnorm=\E[34h\E[?25h, # This is the american terminal. Here tabs work fine. # From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998 @@ -12820,33 +13301,31 @@ wy75|wyse75|Wyse 75, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, clear=\E[H\E[J$<30>, cr=\r, csr=\E[%i%p1%d;%p2%dr$<2>, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP$<3*>, - dch1=\E[P$<3>, dim=\E[0t\E[2m, dl=\E[%p1%dM$<1*>, - dl1=\E[M, dsl=\E[>\,\001\001\E[>-\001\001, - ech=\E[%p1%dX, ed=\E[J$<30>, el=\E[K$<3>, el1=\E[1K$<3>, - enacs=\E)0, flash=\E[30h\E\,$<250/>\E[30l, fsl=^A, - home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@$<1*>, - il=\E[%p1%dL$<2*>, il1=\E[L$<2>, ind=\n$<2>, ip=$<1>, + dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[0t\E[2m, + dl=\E[%p1%dM$<1*>, dl1=\E[M, + dsl=\E[>\,\001\001\E[>-\001\001, ech=\E[%p1%dX, + ed=\E[J$<30>, el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E)0, + flash=\E[30h\E\,$<250/>\E[30l, fsl=^A, hpa=\E[%i%p1%dG, + ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>, + ind=\n$<2>, ip=$<1>, is1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h, is2=\E>\E(B\E)0\017, is3=\E[m, kdl1=\E[M, kel=\E[K, - kf1=\E[?5i, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[?3i, - kf20=\E[34~, kf21=\E[35~, kf3=\E[2i, kf4=\E[@, kf5=\E[M, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, - khlp=\E[28~, kich1=\E[@, kil1=\E[L, knp=\E[6~, kpp=\E[5~, - kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, rc=\E8, rev=\E[1t\E[7m, - ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, - rmso=\E[m, rmul=\E[m, rs1=\E[13l\E[3l\E!p, - rs2=\E[35h\E[?3l$<80>, rs3=\E[?5l, sc=\E7, + kf1=\E[?5i, kf2=\E[?3i, kf21=\E[35~, kf3=\E[2i, kf4=\E[@, + kf5=\E[M, kfnd=\E[1~, khlp=\E[28~, kich1=\E[@, kil1=\E[L, + knp=\E[6~, kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, + rc=\E8, rev=\E[1t\E[7m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, + rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, + rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<80>, rs3=\E[?5l, + sc=\E7, sgr=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t \E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t \016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, smkx=\E[?1l\E[?7h\E=, smso=\E[1t\E[7m, smul=\E[2t\E[4m, - tsl=\E[>\,\001, use=ansi+arrows, use=ansi+local, - use=ansi+pp, use=ansi+tabs, use=decid+cpr, - use=vt220+cvis, use=vt220+keypad, + tsl=\E[>\,\001, use=ansi+arrows, use=ansi+cup, + use=ansi+local, use=ansi+pp, use=ansi+tabs, + use=decid+cpr, use=vt220+cvis, use=vt220+keypad, + use=vt220+sfkeys, use=vt220+ufkeys, # # This terminal description uses the non-hidden attribute mode # (with magic cookie). @@ -12895,13 +13374,9 @@ wy85|wyse85|Wyse 85, ht=\011$<1>, ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>, ind=\n$<3>, ip=$<3>, is1=\E[62;1"p\E[?5W, is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>, - is3=\E>\E(B\E)0\017\E[m, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, - kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, - kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, - kf9=\E[20~, khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, - lf3=PF3, lf4=PF4, mc0=\E[0i, ri=\EM$<3>, rmam=\E[?7l, - rmir=\E[4l, rmkx=\E>, rs1=\E[13l\E[3l\E!p, + is3=\E>\E(B\E)0\017\E[m, khlp=\E[28~, khome=\E[26~, + lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, ri=\EM$<3>, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l, sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%? %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, @@ -12910,7 +13385,7 @@ wy85|wyse85|Wyse 85, use=ansi+csr, use=ansi+inittabs, use=ansi+local, use=ansi+pp, use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd, use=vt220+vtedit, use=vt220+cvis, - use=vt220+keypad, + use=vt220+keypad, use=vt220+sfkeys, use=vt220+ufkeys, # # Wyse 85 with visual bell. wy85-vb|wyse85-vb|Wyse 85 with visible bell, @@ -12979,8 +13454,7 @@ wy85-8bit|wyse85-8bit|Wyse 85 in 8-bit mode, wy185|wyse185|Wyse 185, hs, km, mir, xenl, xon, wsl#80, - civis=\E[?25l, clear=\E[H\E[J$<40>, - cnorm=\E[34h\E[?25h, csr=\E[%i%p1%d;%p2%dr$<20>, + clear=\E[H\E[J$<40>, csr=\E[%i%p1%d;%p2%dr$<20>, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<3>, dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, @@ -12990,23 +13464,20 @@ wy185|wyse185|Wyse 185, hpa=\E[%i%p1%d`, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>, ind=\n$<2>, ip=$<4>, is1=\E[?5W, is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h, - is3=\E>\E(B\E)0\017\E[m, kcbt=\E[Z, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, khome=\E[26~, lf1=PF1, - lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, rc=\E8, ri=\EM$<2>, - rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, rmkx=\E>, - rmso=\E[27m, rmul=\E[24m, - rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l, - rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7, + is3=\E>\E(B\E)0\017\E[m, kcbt=\E[Z, khlp=\E[28~, + khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, + rc=\E8, ri=\EM$<2>, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, + rmkx=\E>, rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, + rs2=\E[35h\E[?3l, rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7, sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%? %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smam=\E[?7h, smcup=\E[ Q, smir=\E[4h, smkx=\E[?1l\E=, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd, - use=ansi+arrows, use=ansi+inittabs, use=ansi+local, - use=ansi+pp, use=ansi+sgrbold, use=decid+cpr, - use=vt100+4bsd, use=vt220+vtedit, use=vt220+keypad, + use=ecma+underline, use=ecma+standout, use=ansi+arrows, + use=ansi+inittabs, use=ansi+local, use=ansi+pp, + use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd, + use=vt220+vtedit, use=vt220+keypad, use=vt220+sfkeys, + use=vt220+ufkeys, use=wyse+cvis, # # Wyse 185 with 24 data lines and top status (terminal status) wy185-24|wyse185-24|Wyse 185 with 24 data lines, @@ -13154,8 +13625,7 @@ wy370-nk|Wyse 370 without function keys, am, ccc, hs, mir, msgr, xenl, xon, colors#64, cols#80, lines#24, ncv#48, pairs#64, wsl#80, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, civis=\E[?25l, clear=\E[H\E[J$<40>, - cnorm=\E[34h\E[?25h, cr=\r, cub1=^H, cud1=\n, + bel=^G, clear=\E[H\E[J$<40>, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH$<1>, cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<1*>, dch1=\E[P$<1>, dclk=\E[31h, dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, dsl=\E[40l, @@ -13176,50 +13646,44 @@ wy370-nk|Wyse 370 without function keys, oc=\E[60w\E[63;0w\E[66;1;4w\E[66;2;13w\E[66;3;16w\E[66;4;49w \E[66;5;51w\E[66;6;61w\E[66;7;64w, op=\E[m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmclk=\E[31l, - rmcup=\E[ R, rmir=\E[4l, rmkx=\E>, rmso=\E[27m, - rmul=\E[24m, rs1=\E[13l\E[3l\E!p\E[?4i, - rs2=\E[35h\E[?3l$<8>, rs3=\E[?5l, setb=\E[62;%p1%dw, - setf=\E[61;%p1%dw, + rmcup=\E[ R, rmir=\E[4l, rmkx=\E>, + rs1=\E[13l\E[3l\E!p\E[?4i, rs2=\E[35h\E[?3l$<8>, + rs3=\E[?5l, setb=\E[62;%p1%dw, setf=\E[61;%p1%dw, sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%? %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q, smir=\E[4h, smkx=\E[?1l\E=, tsl=\E[40l\E[40h\E7\E[99;%i%p1%dH, u0=\E[?38h\E8, u1=\E[?38l\E)0, u2=\E[92;52"p, u3=\E~B, u4=\E[92;76"p, - u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd, use=ansi+csr, - use=ansi+inittabs, use=ansi+local, use=ansi+pp, - use=ansi+sgrbold, use=decid+cpr, + u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd, use=ecma+underline, + use=ecma+standout, use=ansi+csr, use=ansi+inittabs, + use=ansi+local, use=ansi+pp, use=ansi+sgrbold, + use=decid+cpr, use=wyse+cvis, # # Function key set for the ASCII (wy-50 compatible) keyboard # This is the default 370. # wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard, kcbt=\E[Z, kdch1=\EOQ, kdl1=\EOQ, kent=\EOM, kf1=\E[?4i, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, - kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\E[?3i, - kf3=\E[2i, kf4=\E[@, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, kich1=\EOP, kil1=\EOP, knp=\E[U, - kpp=\E[V, use=ansi+arrows, use=wy370-nk, + kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, + kf2=\E[?3i, kf3=\E[2i, kf4=\E[@, kf5=\E[M, kich1=\EOP, + kil1=\EOP, knp=\E[U, kpp=\E[V, use=ansi+arrows, + use=vt220+ufkeys, use=wy370-nk, # # Function key set for the VT-320 (and wy85) compatible keyboard # wy370-105k|Wyse 370 with 105 key keyboard, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, - kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, - kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, - khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3, - lf4=PF4, use=ansi+arrows, use=vt220+vtedit, use=wy370-nk, - use=vt220+keypad, + kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, + lf3=PF3, lf4=PF4, use=ansi+arrows, use=vt220+vtedit, + use=wy370-nk, use=vt220+keypad, use=vt220+sfkeys, + use=vt220+ufkeys, # # Function key set for the PC compatible keyboard # wy370-EPC|Wyse 370 with 102 key keyboard, - kcbt=\E[Z, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - kich1=\E[2~, knp=\E[U, kpp=\E[V, use=ansi+arrows, - use=wy370-nk, + kcbt=\E[Z, kend=\E[1~, kent=\EOM, kf5=\E[M, kich1=\E[2~, + knp=\E[U, kpp=\E[V, use=ansi+arrows, use=vt100+pf1-pf4, + use=vt220+ufkeys, use=wy370-nk, # # Wyse 370 with visual bell. wy370-vb|Wyse 370 with visible bell, @@ -13314,33 +13778,31 @@ wy520|wyse520|Wyse 520, am, hs, km, mir, xenl, xon, cols#80, it#8, lines#24, wsl#80, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, civis=\E[?25l, clear=\E[H\E[J$<40>, - cnorm=\E[34h\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr$<20>, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, + bel=^G, clear=\E[H\E[J$<40>, cr=\r, + csr=\E[%i%p1%d;%p2%dr$<20>, cub1=^H, cud1=\n, cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<30>, dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J$<40>, el=\E[K, el1=\E[1K, - enacs=\E)0, fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%d`, + enacs=\E)0, fsl=\E[0$}, hpa=\E[%i%p1%d`, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>, ind=\n$<2>, ip=$<4>, is1=\E[?5W, is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h, is3=\E>\E(B\E)0\017\E[m, kcbt=\E[Z, ked=\E[1~, kel=\E[4~, - kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, - kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, - kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, - khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, - ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, - rmul=\E[24m, rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, - rs2=\E[35h\E[?3l, rs3=\E[?5l\E[47h\E[40l\E[r, + khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3, + lf4=PF4, mc0=\E[0i, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, + rmcup=\E[ R, rmir=\E[4l, + rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l, + rs3=\E[?5l\E[47h\E[40l\E[r, sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%? %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q\E[?67;8h, smir=\E[4h, tsl=\E[2$~\E[1$}\E[%i%p1%d`, vpa=\E[%i%p1%dd, - use=ansi+arrows, use=ansi+csr, use=ansi+local, - use=ansi+pp, use=ansi+sgrbold, use=ansi+tabs, - use=decid+cpr, use=vt220+vtedit, use=vt220+keypad, + use=ecma+underline, use=ansi+arrows, use=ansi+csr, + use=ansi+cup, use=ansi+local, use=ansi+pp, + use=ansi+sgrbold, use=ansi+tabs, use=decid+cpr, + use=vt220+vtedit, use=vt220+keypad, use=vt220+sfkeys, + use=vt220+ufkeys, use=wyse+cvis, # # Wyse 520 with 24 data lines and status (terminal status) wy520-24|wyse520-24|Wyse 520 with 24 data lines, @@ -13373,9 +13835,8 @@ wy520-wvb|wyse520-wvb|Wyse 520 with visible bell 132-columns, # to CTRL-C: stty intr '^c') for it to work since the # Delete key sends 7FH. wy520-epc|wyse520-epc|Wyse 520 with EPC keyboard, - kdch1=^?, kel=\E[4~, kend=\E[4~, kf0=\E[21~, kf1=\E[11~, - kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, khome=\E[H, - use=wy520, + kdch1=^?, kel=\E[4~, kend=\E[4~, kf0=\E[21~, khome=\E[H, + use=xterm+r5+fkeys, use=wy520, # # Wyse 520 with 24 data lines and status (terminal status) # with EPC keyboard. @@ -13555,6 +14016,7 @@ msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins, is2=\EO\Eq\EG\Ev\EJ\EY7\sK5\sMS\sKermit\s2.27\s+automatic \smargins\s3-17-85\n, use=msk227, + # MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC # Automatic margins now default. Use ansi <sgr> for highlights. # Define function keys. @@ -13566,8 +14028,9 @@ msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC, is2=\EO\Eq\EG\Ev\EJ\EY7\sK6\sMS\sKermit\s2.27\sUCB\s227.14 \sIBM\sPC\s3-17-85\n, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, - kf7=\E7, kf8=\E8, kf9=\E9, rev=\E[7m, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smso=\E[1m, smul=\E[4m, use=mskermit227, + kf7=\E7, kf8=\E8, kf9=\E9, rev=\E[7m, rmso=\E[m, sgr0=\E[m, + smso=\E[1m, use=ansi+sgrul, use=mskermit227, + # This was designed for a VT320 emulator, but it is probably a good start # at support for the VT320 itself. # Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu. @@ -13577,26 +14040,24 @@ vt320-k3|MS-Kermit 3.00's VT320 emulation, cols#80, it#8, lines#49, pb#9600, vt#3, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, cmdch=\E, cr=\r, cub1=^H, - cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - ech=\E[%p1%dX, + cud1=\n, dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[ ?5l, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - ind=\n, is2=\E>\E F\E[?1h\E[?7h\E[r\E[2$~, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~, - kf0=\E[21~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, + ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\n, + is2=\E>\E F\E[?1h\E[?7h\E[r\E[2$~, kbs=^H, kcub1=\EOD, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~, kf0=\E[21~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, nel=\r\n, rev=\E[7m, ri=\EM, rin=\E[%p1%dL, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[27m, rmul=\E[24m, rs1=\E(B\E)B\E>\E\sF\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h \E[4i\E[?4i\E[m\E[r\E[2$~, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[1$}\r\E[K, vpa=\E[%i%p1%dd, use=ansi+csr, - use=ansi+erase, use=ansi+idl, use=ansi+local, use=dec+sl, - use=vt220+cvis, + smkx=\E[?1h\E=, tbc=\E[3g, tsl=\E[1$}\r\E[K, + use=ecma+underline, use=ecma+standout, use=ansi+cup, + use=ansi+csr, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=ansi+rca2, use=dec+sl, + use=vt100+pf1-pf4, use=vt220+cvis, # From: Joseph Gil <yogi@cs.ubc.ca> 13 Dec 1991 # ACS capabilities from Philippe De Muyter <phdm@info.ucl.ac.be> 30 May 1996 @@ -13606,21 +14067,21 @@ vt320-k311|DEC VT320 series as defined by kermit 3.11, cols#80, it#8, lines#24, vt#3, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, cr=\r, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, - dch1=\E[P, dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K, - flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, - hts=\EH, ich=\E[%p1%d@, il1=\E[L$<3/>, ind=\ED, + cub1=^H, cud1=\n, dch=\E[%p1%dP, dch1=\E[P, + dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K, + flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, ht=^I, hts=\EH, + ich=\E[%p1%d@, il1=\E[L$<3/>, ind=\ED, is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2, - lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m, + kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, + lf2=pf2, lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM, rmacs=^O, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, - rmul=\E[24m, rs1=\E[?3l, sgr0=\E[m, smacs=^N, smam=\E[?7h, - smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH, use=ansi+csr, - use=ansi+idl, use=ansi+local, use=vt220+cvis, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rs1=\E[?3l, + sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h, + smkx=\E[?1h\E=, tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH, + use=ecma+underline, use=ecma+standout, use=ansi+csr, + use=ansi+cup, use=ansi+idl, use=ansi+local, + use=vt100+pf1-pf4, use=vt220+cvis, ######## NON-ANSI TERMINAL EMULATIONS # @@ -13659,7 +14120,7 @@ vt320-k311|DEC VT320 series as defined by kermit 3.11, # ^V^K%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) down by p1 lines # ^V^L%p1%c%p2%c%p3%c -- clear p2 lines and p3 cols w/attr %p1 # ^V^M%p1%c%p2%c%p3%c%p4%c -- fill p3 lines & p4 cols w/char p2+attr %p1 -# (^V^L and ^V^M set the current attribute as a side-effect.) +# (^V^L and ^V^M set the current attribute as a side effect.) # ^V ^Y <a> [...] <c> -- repeat pattern. <a> specifies the number of bytes # in the pattern, <c> the number of times the pattern # should be repeated. If either value is 0, no-op. @@ -13754,7 +14215,7 @@ rbcomm-w|IBM PC with RBcomm in 132 column mode, # This line: # cup=\376G%p2%c%p1%c # LOOKS like it will work, but sometimes only one of the two numbers is sent. -# See the terminfo (5) manpage commented regarding 'Terminals which use "%c"'. +# See the terminfo(5) man page commented regarding 'Terminals which use "%c"'. # # Alas, there is no cursor upline capability on this display. # @@ -13795,17 +14256,17 @@ MtxOrb162|16x2 Matrix Orbital LCD display, att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode, am, eo, mir, msgr, xon, cols#80, it#8, lines#24, - bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, - dch=\E[%p1%dP, dch1=\E[P, el1=\E[1K, home=\E[H, ht=^I, - ich=\E[%p1%d@, ind=\n, kcbt=\E[Z, kclr=\E[J, kdch1=\E[P, - kdl1=\E[M, kf1=\E[1r, kf10=\E[10r, kf11=\E[11r, - kf12=\E[12r, kf13=\E[13r, kf14=\E[14r, kf15=\E[15r, - kf16=\E[16r, kf2=\E[2r, kf3=\E[3r, kf4=\E[4r, kf5=\E[5r, - kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, kich1=\E[@, - kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rev=\E[7m, - rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h, smso=\E[7m, - use=ansi+arrows, use=ansi+cpr, use=ansi+erase, - use=ansi+idl, use=ansi+local, + bel=^G, cr=\r, cub1=^H, cud1=\n, dch=\E[%p1%dP, dch1=\E[P, + el1=\E[1K, ht=^I, ich=\E[%p1%d@, ind=\n, kcbt=\E[Z, + kclr=\E[J, kdch1=\E[P, kdl1=\E[M, kf1=\E[1r, kf10=\E[10r, + kf11=\E[11r, kf12=\E[12r, kf13=\E[13r, kf14=\E[14r, + kf15=\E[15r, kf16=\E[16r, kf2=\E[2r, kf3=\E[3r, kf4=\E[4r, + kf5=\E[5r, kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, + kich1=\E[@, kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, + rev=\E[7m, rmir=\E[4l, sgr0=\E[m, smir=\E[4h, + use=ansi+arrows, use=ansi+cpr, use=ansi+cup, + use=ansi+erase, use=ansi+idl, use=ansi+local, + use=ansi+sgrso, att2350|AT&T 2350 Video Information Terminal 80 column mode, mc0@, mc4@, mc5@, use=att2300, @@ -13826,10 +14287,8 @@ att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1, cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyz z{{||}}~~, - bel=^G, bold=\E[2;7m, cr=\r, cub1=^H, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dim=\E[2m, dl1=\E[M, - fsl=\E8, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n, - is1=\E[?3l\E)0, + bel=^G, bold=\E[2;7m, cr=\r, cub1=^H, dch1=\E[P, dim=\E[2m, + fsl=\E8, ht=^I, ich1=\E[@, ind=\n, is1=\E[?3l\E)0, is3=\E[1;03q\s\s\sf1\s\s\s\s\s\s\s\s\s\s\s\EOP\E[2;03q\s\s \sf2\s\s\s\s\s\s\s\s\s\s\s\EOQ\E[3;03q\s\s\sf3\s\s\s\s \s\s\s\s\s\s\s\EOR\E[4;03q\s\s\sf4\s\s\s\s\s\s\s\s\s\s @@ -13837,9 +14296,8 @@ att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1, \s\s\sf6\s\s\s\s\s\s\s\s\s\s\s\EOU\E[7;03q\s\s\sf7\s\s \s\s\s\s\s\s\s\s\s\EOV\E[8;03q\s\s\sf8\s\s\s\s\s\s\s\s \s\s\s\EOW, - kclr=\E[2J, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, - kf6=\EOU, kf7=\EOV, kf8=\EOW, kll=\E[24;1H, ll=\E[24H, - nel=\r\n, + kclr=\E[2J, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, + kll=\E[24;1H, ll=\E[24H, nel=\r\n, pfx=\E[%p1%1d;%p2%l%2.2dq\s\s\sf%p1%1d\s\s\s\s\s\s\s\s\s\s \s%p2%s, pln=\E[%p1%d;00q%p2%:-16s, ri=\EM, rmacs=^O, @@ -13847,8 +14305,9 @@ att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1, sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1 %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, tsl=\E7\E[25;%p1%{1}%+%dH, - use=ansi+arrows, use=ansi+csr, use=ansi+erase, - use=ansi+local1, use=ansi+sgrbold, + use=ansi+arrows, use=ansi+csr, use=ansi+cup, + use=ansi+erase, use=ansi+idl1, use=ansi+local1, + use=ansi+sgrbold, use=vt100+pf1-pf4, att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1, cols#132, wsl#132, @@ -13872,18 +14331,18 @@ v5410|att5410 in terms of a VT100, bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, clear=\E[H\E[J$<50>, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>, - cuu1=\E[A$<2>, dch1=\E[P, dl1=\E[M, ed=\E[J$<50>, - el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, - ht=^I, hts=\EH, ich1=\E[@, il1=\E[L, ind=\n, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, - rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, + cuu1=\E[A$<2>, dch1=\E[P, ed=\E[J$<50>, el=\E[K$<3>, + el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, + ich1=\E[@, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, rev=\E[7m$<2>, ri=\EM$<5>, + rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>, + rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 %;m%?%p9%t\016%e\017%;$<2>, sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, - use=ansi+csr, use=decid+cpr, use=vt100+fnkeys, + use=ansi+csr, use=ansi+idl1, use=decid+cpr, + use=vt100+fnkeys, # # Teletype Model 5420 -- A souped up 5410, with multiple windows, @@ -13991,12 +14450,10 @@ att5420_2|AT&T 5420 model 2 80 cols, cols#80, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j, cr=\EG, cub1=^H, - cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[1A, cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P, - ech=\E[%p1%ds\E[%p1%dD, ed=\E[0J, el=\E[0K, el1=\E[1K, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, - hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ich1=\E[@, ind=\n, - indn=\E[%p1%dE, + cud1=\E[1B, cuf1=\E[1C, cuu1=\E[1A, cvvis=\E[11;1j, + dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%ds\E[%p1%dD, + ed=\E[0J, el=\E[0K, el1=\E[1K, flash=\E[?5h$<200>\E[?5l, + fsl=\E8, ich=\E[%p1%d@, ich1=\E[@, ind=\n, indn=\E[%p1%dE, is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\E[6;0j\E[7;0j \E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j \E[29;0j\E[1;24r, @@ -14015,10 +14472,10 @@ att5420_2|AT&T 5420 model 2 80 cols, sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1 %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;%?%p8%t\EV%;, sgr0=\E[m\017, smacs=^N, smkx=\E[19;1j, smln=\E~, - tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, - use=ansi+arrows, use=ansi+csr, use=ansi+idl, - use=ansi+inittabs, use=ansi+local, use=ansi+sgrdim, - use=decid+cpr, + tsl=\E7\E[25;%p1%{8}%+%dH, use=ansi+arrows, + use=ansi+csr, use=ansi+cup, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca, + use=ansi+sgrdim, use=decid+cpr, att5420_2-w|AT&T 5420 model 2 in 132 column mode, cols#132, @@ -14031,9 +14488,8 @@ att4418|att5418|AT&T 5418 80 cols, am, xon, cols#80, lines#24, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=\r, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[1P, - dim=\E[2m, ed=\E[0J, el=\E[0K, home=\E[H, ich=\E[%p1%d@, + bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=\r, dch=\E[%p1%dP, + dch1=\E[1P, dim=\E[2m, ed=\E[0J, el=\E[0K, ich=\E[%p1%d@, ich1=\E[1@, il1=\E[1L, ind=\n, is1=\E[?3l, is2=\E)0\E?6l\E?5l, kclr=\E[%%, kcub1=\E@, kcud1=\EU, kcuf1=\EA, kcuu1=\ES, kent=\E[, kf1=\E[h, kf10=\E[m, @@ -14041,9 +14497,9 @@ att4418|att5418|AT&T 5418 80 cols, kf18=\E[K, kf19=\E[L, kf2=\E[i, kf20=\E[E, kf21=\E[_, kf22=\E[M, kf23=\E[N, kf24=\E[O, kf3=\E[j, kf6=\E[k, kf7=\E[l, kf8=\E[f, kf9=\E[w, khome=\Ec, rc=\E8, rev=\E[7m, - rmacs=^O, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m\017, - smacs=^N, smso=\E[7m, smul=\E[4m, use=ansi+idl, - use=ansi+local, + rmacs=^O, sc=\E7, sgr0=\E[m\017, smacs=^N, use=ansi+cup, + use=ansi+idl, use=ansi+local, use=ansi+sgrso, + use=ansi+sgrul, att4418-w|att5418-w|AT&T 5418 132 cols, cols#132, @@ -14081,16 +14537,16 @@ att4424|tty4424|Teletype 4424, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\E[%i%p1%d;%p2%dH, cuu1=\EA, dch=\E[%p1%dP, dch1=\EP, - dim=\EW, dl=\E[%p1%dM, dl1=\EM, ed=\EJ, el=\Ez, home=\E[H, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E\^, il=\E[%p1%dL, - il1=\EL, ind=\n, is2=\E[20l\E[?7h, kclr=\EJ, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rev=\E}, ri=\ET, - rmacs=\E(B, rmso=\E~, rmul=\EZ, + cuu1=\EA, dch=\E[%p1%dP, dch1=\EP, dim=\EW, dl=\E[%p1%dM, + dl1=\EM, ed=\EJ, el=\Ez, ht=^I, hts=\EH, ich=\E[%p1%d@, + ich1=\E\^, il=\E[%p1%dL, il1=\EL, ind=\n, is2=\E[20l\E[?7h, + kclr=\EJ, nel=\EE, rev=\E}, ri=\ET, rmacs=\E(B, rmso=\E~, + rmul=\EZ, sgr=\EX\E~\EZ\E4\E(B%?%p1%p3%|%t\E}%;%?%p2%t\E\\%;%?%p4%p6%| %t\E3%;%?%p5%t\EW%;%?%p9%t\E(0%;, sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\, - tbc=\EF, use=ansi+arrows, use=ansi+local, + tbc=\EF, use=ansi+arrows, use=ansi+cup, use=ansi+local, + use=vt100+pf1-pf4, att4424-1|tty4424-1|Teletype 4424 in display function group I, kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@, @@ -14108,9 +14564,9 @@ att4424m|tty4424m|Teletype 4424M, bel=^G, clear=\E[2;H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH\E[B, cuu1=\E[A, dch1=\EP, dl1=\EM, el=\E[K, ht=^I, ich1=\E\^, il1=\EL, ind=\n, ip=$<2/>, - is2=\E[m\E[2;24r, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - nel=\r\n, ri=\ET, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smso=\E[7m, smul=\E[4m, use=ansi+arrows, + is2=\E[m\E[2;24r, nel=\r\n, ri=\ET, sgr0=\E[m, + use=ansi+arrows, use=ansi+sgrso, use=ansi+sgrul, + use=vt100+pf1-pf4, # The Teletype 5425 is really version 2 of the Teletype 5420. It # is quite similar, except for some minor differences. No page @@ -14127,8 +14583,8 @@ att5425|tty5425|att4425|AT&T 4425/5425, bold=\E[2;7m, cnorm=\E[12;0j, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%ds\E[%p1%dD, el1=\E[1K, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, hpa=\E[%p1%{1}%+%dG, - ich=\E[%p1%d@, indn=\E[%p1%dE, is1=\E<\E[?3l$<100>, + flash=\E[?5h$<200>\E[?5l, fsl=\E8, ich=\E[%p1%d@, + indn=\E[%p1%dE, is1=\E<\E[?3l$<100>, is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h \E[4i\Ex\E[25;1j\212, is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kclr=\E[J, kdch1=\E[P, @@ -14145,9 +14601,9 @@ att5425|tty5425|att4425|AT&T 4425/5425, %|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;, sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, - tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, - use=ansi+arrows, use=ansi+csr, use=ansi+erase, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, + tsl=\E7\E[25;%p1%{8}%+%dH, use=ansi+arrows, + use=ansi+csr, use=ansi+erase, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca, use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd, att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels, @@ -14164,17 +14620,17 @@ att4426|tty4426|Teletype 4426S, cols#80, lines#24, lm#48, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, bold=\E[5m, clear=\E[H\E[2J\E[1U\E[H\E[2J\E[1V, - cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\EP, - ed=\E[J, el=\E[0K, home=\E[H, hpa=\E[%p1%dG, ht=^I, hts=\E1, - ich=\E[%p1%d@, ich1=\E\^, il1=\EL, ind=\n, is1=\Ec\E[?7h, - is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, kclr=\E[2J, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, - kf8=\EOW, khome=\E[H, kll=\E[24;1H, ll=\E[24H, nel=\r\n, - rc=\E8, rev=\E[7m, ri=\ET, rmacs=\E(B, rmam=\E[?7l, - rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7, - sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smso=\E[5m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%dd, use=ansi+idl, - use=ansi+local, use=ecma+index, use=vt52+arrows, + cr=\r, dch=\E[%p1%dP, dch1=\EP, ed=\E[J, el=\E[0K, + hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^, + il1=\EL, ind=\n, is1=\Ec\E[?7h, is2=\E[m\E[1;24r, kbs=^H, + kcbt=\EO, kclr=\E[2J, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, + khome=\E[H, kll=\E[24;1H, ll=\E[24H, nel=\r\n, rc=\E8, + rev=\E[7m, ri=\ET, rmacs=\E(B, rmam=\E[?7l, rmso=\E[m, + rs2=\Ec\E[?3l\E[2;0y, sc=\E7, sgr0=\E[m\E(B, smacs=\E(0, + smam=\E[?7h, smso=\E[5m, tbc=\E[3g, vpa=\E[%p1%dd, + use=ansi+cup, use=ansi+idl, use=ansi+local, + use=ansi+sgrul, use=ecma+index, use=vt100+pf1-pf4, + use=vt52+arrows, # Terminfo entry for the AT&T 510 A Personal Terminal # Function keys 9 - 16 are available only after the @@ -14190,9 +14646,8 @@ att510a|bct510a|AT&T 510A Personal Terminal, acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, bel=^G, blink=\E[5m, bold=\E[2;7m, civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;2|, dch=\E[%p1%dP, - dch1=\E[P, dim=\E[2m, ed=\E[0J, el=\E[0K, el1=\E[1K, - enacs=\E(B\E)1, ff=^L, home=\E[H, ind=\n, + cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + ed=\E[0J, el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, ind=\n, is1=\E(B\E)1\E[2l, is3=\E[21;1|\212, kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd, kf11=\EOe, @@ -14200,13 +14655,12 @@ att510a|bct510a|AT&T 510A Personal Terminal, kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf, kf7=\ENh, kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, nel=\EE, pln=\E[%p1%dp%p2%:-16s, - rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E[19;0|, - rmso=\E[m, rmul=\E[m, sc=\E7, + rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E[19;0|, sc=\E7, sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6 %|%t;7%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, smso=\E[7m, - smul=\E[4m, use=ansi+cpr, use=ansi+idl, use=ansi+local, - use=ansi+tabs, + sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, use=ansi+cpr, + use=ansi+cup, use=ansi+idl, use=ansi+local, + use=ansi+sgrso, use=ansi+sgrul, use=ansi+tabs, # Terminfo entry for the AT&T 510 D Personal Terminal # Function keys 9 through 16 are accessed by bringing up the @@ -14222,27 +14676,25 @@ att510d|bct510d|AT&T 510D Personal Terminal, cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8, acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, bel=^G, bold=\E[2;7m, clear=\E[H\E[J, cnorm=\E[11;3|, - cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;2|, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ed=\E[0J, el=\E[0K, - el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, - hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ind=\n, - is1=\E(B\E)1\E[5;0|, is3=\E[21;1|\212, kLFT=\E[u, - kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd, kf11=\EOe, - kf12=\EOf, kf13=\EOg, kf14=\EOh, kf15=\EOi, kf16=\EOj, - kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf, kf7=\ENh, - kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, ll=\E#2, mc0=\E[0i, - mc4=\E[?8i, mc5=\E[?4i, mgc=\E:, nel=\EE, + cr=\r, cub1=^H, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, ed=\E[0J, el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, + ff=^L, ich=\E[%p1%d@, ind=\n, is1=\E(B\E)1\E[5;0|, + is3=\E[21;1|\212, kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, + kf10=\EOd, kf11=\EOe, kf12=\EOf, kf13=\EOg, kf14=\EOh, + kf15=\EOi, kf16=\EOj, kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, + kf6=\ENf, kf7=\ENh, kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, + ll=\E#2, mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, mgc=\E:, nel=\EE, pln=\E[%p1%dp%p2%:-16s, rc=\E8, ri=\EM, rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|, rmln=\E<, rmxon=\E[29;1|, rs2=\E[5;0|, sc=\E7, sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6 %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smgl=\E4, smgr=\E5, smir=\E[4h, - smkx=\E[19;1|, smln=\E?, smxon=\E[29;0|, - vpa=\E[%p1%{1}%+%dd, use=ansi+cpr, use=ansi+idl, - use=ansi+local, use=ansi+rep, use=ansi+sgrbold, - use=ansi+tabs, use=ecma+index, + smkx=\E[19;1|, smln=\E?, smxon=\E[29;0|, use=ansi+cpr, + use=ansi+cup, use=ansi+idl, use=ansi+local, use=ansi+rep, + use=ansi+sgrbold, use=ansi+tabs, use=ecma+index, + use=ansi+rca, # (att500: I merged this with the att513 entry, att500 just used att513 -- esr) att500|att513|AT&T 513 using page mode, @@ -14250,11 +14702,9 @@ att500|att513|AT&T 513 using page mode, cols#80, lh#2, lines#24, lw#8, nlab#8, acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, bel=^G, bold=\E[2;7m, cnorm=\E[11;0|, cr=\r, - csr=%i\E[%p1%d;%p2%dr, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;1|, dch=\E[%p1%dP, - dch1=\E[P$<1>, dim=\E[2m, el1=\E[1K, enacs=\E(B\E)1, - home=\E[H, hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ind=\n, - indn=\E[%p1%dE, + csr=%i\E[%p1%d;%p2%dr, cub1=^H, cud1=\n, cvvis=\E[11;1|, + dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m, el1=\E[1K, + enacs=\E(B\E)1, ich=\E[%p1%d@, ind=\n, indn=\E[%p1%dE, is1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l, kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, @@ -14287,9 +14737,9 @@ att500|att513|AT&T 513 using page mode, sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1 %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smir=\E[4h, - smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, - vpa=\E[%p1%{1}%+%dd, use=ansi+arrows, use=ansi+erase, - use=ansi+idl, use=ansi+local, use=ansi+rep, + smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, use=ansi+arrows, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=ansi+rca, use=ansi+rep, use=ansi+sgrbold, use=ansi+tabs, use=decid+cpr, # 01-07-88: @@ -14340,12 +14790,11 @@ att5310|att5320|AT&T Model 53210 or 5320 matrix printer, att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs, am, xon, cols#88, it#8, lines#70, vt#3, - bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, - dch=\E[%p1%dP, dch1=\E[P, home=\E[H, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, ind=\n, kclr=\E[2J, kll=\E[70;1H, nel=\r\n, - rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, use=ansi+arrows, - use=ansi+erase, use=ansi+idl, use=ansi+local1, - use=ecma+index, + bel=^G, cr=\r, cub1=^H, cud1=\n, dch=\E[%p1%dP, dch1=\E[P, + ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\n, kclr=\E[2J, + kll=\E[70;1H, nel=\r\n, rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, + use=ansi+arrows, use=ansi+cup, use=ansi+erase, + use=ansi+idl, use=ansi+local1, use=ecma+index, # 5620 terminfo (2.0 or later ROMS with char attributes) # The following SET-UP modes are assumed for normal operation: @@ -14362,12 +14811,12 @@ att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs, att5620|dmd|tty5620|ttydmd|5620|AT&T 5620 terminal 88 columns, OTbs, am, msgr, npc, xon, cols#88, it#8, lines#70, - bel=^G, bold=\E[2m, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, home=\E[H, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, kclr=\E[2J, - kll=\E[70;1H, nel=\n, pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, - rev=\E[7m, ri=\E[T, rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7, - sgr0=\E[0m, smso=\E[7m, smul=\E[4m, use=ansi+arrows, + bel=^G, bold=\E[2m, cr=\r, cub1=^H, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, + kclr=\E[2J, kll=\E[70;1H, nel=\n, + pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T, + rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7, sgr0=\E[0m, + smso=\E[7m, smul=\E[4m, use=ansi+arrows, use=ansi+cup, use=ansi+erase, use=ansi+idl, use=ansi+local1, use=ecma+index, @@ -14393,8 +14842,8 @@ att605|AT&T 605 80 column 102key keyboard, cols#80, lines#24, lw#8, nlab#8, wsl#80, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, - el1=\E[1K, fsl=\E8, ht=^I, il1=\E[L, ind=\n, invis=\E[8m, + cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, dl=\E[%p1%dM, + el1=\E[1K, fsl=\E8, ht=^I, ind=\n, invis=\E[8m, is1=\E[8;0|\E[?\E[13;20l\E[?\E[12h, is2=\E[m\017, kLFT=\E[ A, kRIT=\E[ @, kcbt=\E[Z, kclr=\E[2J, kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq, @@ -14411,11 +14860,11 @@ att605|AT&T 605 80 column 102key keyboard, mc5=\E[?5i, nel=\EE, pfx=\E[%p1%d;%p2%l%02dq F%p1%1d %p2%s, pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m, - rmacs=^O, rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, - sc=\E7, sgr0=\E[m\017, smacs=\E)0\016, smln=\E[p, - smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx, + rmacs=^O, rmln=\E[2p, rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, + smacs=\E)0\016, smln=\E[p, tsl=\E7\E[25;%i%p1%dx, use=ansi+arrows, use=ansi+cpr, use=ansi+erase, - use=ansi+idc, use=ansi+local1, + use=ansi+idc, use=ansi+idl1, use=ansi+local1, + use=ansi+sgrso, use=ansi+sgrul, att605-pc|AT&T 605 in pc term mode, acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x @@ -14576,21 +15025,21 @@ att620-103k-w|AT&T 620; 132 column; 103key keyboard, att630|AT&T 630 windowing terminal, OTbs, am, da, db, mir, msgr, npc, xon, cols#80, it#8, lines#60, lm#0, - bel=^G, blink=\E[5m, cbt=\E[Z, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, el1=\E[1K, home=\E[H, - ht=^I, ind=\ED, is2=\E[m, kcbt=\E[Z, kclr=\E[2J, kdch1=\E[P, - kdl1=\E[M, kent=\r, kf10=\ENp, kf11=\ENq, kf12=\ENr, - kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw, - kf18=\ENx, kf19=\ENy, kf20=\ENz, kf21=\EN{, kf22=\EN|, - kf23=\EN}, kf24=\EN~, kf9=\ENo, kich1=\E[@, kil1=\E[L, - mc4=\E[?4i, mc5=\E[?5i, nel=\r\n, + bel=^G, blink=\E[5m, cbt=\E[Z, cr=\r, cub1=^H, dim=\E[2m, + el1=\E[1K, ht=^I, ind=\ED, is2=\E[m, kcbt=\E[Z, kclr=\E[2J, + kdch1=\E[P, kdl1=\E[M, kent=\r, kf10=\ENp, kf11=\ENq, + kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, + kf17=\ENw, kf18=\ENx, kf19=\ENy, kf20=\ENz, kf21=\EN{, + kf22=\EN|, kf23=\EN}, kf24=\EN~, kf9=\ENo, kich1=\E[@, + kil1=\E[L, mc4=\E[?4i, mc5=\E[?5i, nel=\r\n, pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\EM, - rmso=\E[m, rmul=\E[m, rs2=\Ec, sc=\E7, + rs2=\Ec, sc=\E7, sgr=\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%p4%|%t;7 %;m, - sgr0=\E[m, smso=\E[7m, smul=\E[4m, use=ansi+arrows, - use=ansi+cpr, use=ansi+erase, use=ansi+idc, use=ansi+idl, - use=ansi+local, use=ecma+index, + sgr0=\E[m, use=ansi+arrows, use=ansi+cpr, use=ansi+cup, + use=ansi+erase, use=ansi+idc, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, + use=ecma+index, att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines, lines#24, use=att630, @@ -14676,10 +15125,10 @@ att700|AT&T 700 24x80 column display w/102key keyboard, am, eslok, hs, mir, msgr, xenl, xon, cols#80, lh#2, lines#24, lw#8, nlab#8, wsl#80, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, - fln=4\,4, fsl=\E8, home=\E[H, ich=\E[%p1%d@, ind=\ED, + bel=^G, cr=\r, cub1=^H, cvvis=\E[?12;25h, dch=\E[%p1%dP, + dch1=\E[P, dim=\E[2m, el1=\E[1K, enacs=\E(B\E)0, + flash=\E[?5h$<200>\E[?5l, fln=4\,4, fsl=\E8, + ich=\E[%p1%d@, ind=\ED, is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h \E(B\E)0\E[?31l\E[0m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kcbt=\E[Z, @@ -14697,13 +15146,14 @@ att700|AT&T 700 24x80 column display w/102key keyboard, pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t\s\s\sF%p1%1d\s\s\s\s\s \s\s\s\s\s\s%;%p2%s, pln=\E[%p1%d;0;0;0q%p2%:-16.16s, ri=\EM, rmacs=^O, - rmir=\E[4l, rmln=\E[2p, rmso=\E[27m, rmul=\E[24m, - rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|, + rmir=\E[4l, rmln=\E[2p, rmxon=\E[53;3|, + rs1=\Ec\E[?3;5l\E[56;0|, sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1 %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, - smxon=\E[53;0|, tsl=\E7\E[99;%i%p1%dx, use=ansi+arrows, - use=ansi+csr, use=ansi+erase, use=ansi+idl, + smxon=\E[53;0|, tsl=\E7\E[99;%i%p1%dx, + use=ecma+underline, use=ecma+standout, use=ansi+arrows, + use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl, use=ansi+inittabs, use=ansi+local, use=ansi+rep, use=ansi+sgrbold, use=decid+cpr, use=dec+pp, use=att610+cvis0, @@ -14746,13 +15196,14 @@ att730|AT&T 730 windowing terminal, %<%tq\s\s\sSYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s, pfxl=\E[%p1%d;%p2%l%02d;0;0q%p3%:-16.16s%p2%s, pln=\E[%p1%d;0;0;0q%p2%:-16.16s, ri=\EM, rmacs=^O, - rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h, rmso=\E[27m, - rmul=\E[24m, rmxon=\E[?21l, rs2=\Ec\E[?3l, + rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h, rmxon=\E[?21l, + rs2=\Ec\E[?3l, sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1 %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, smln=\E[?13l, smxon=\E[?21h, swidm=\E#6, - tsl=\E7\E[;%i%p1%dx, use=ansi+arrows, use=ansi+csr, + tsl=\E7\E[;%i%p1%dx, use=ecma+underline, + use=ecma+standout, use=ansi+arrows, use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl, use=ansi+local, use=ansi+rep, use=ansi+sgrbold, use=decid+cpr, use=dec+pp, use=att610+cvis, @@ -14948,9 +15399,9 @@ att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal, kf3=\E[03s, kf4=\E[04s, kf5=\E[05s, kf6=\E[06s, krfr=\E[27s, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, rmacs=\E[10m, rmam=\E[11;1j, rmir=\E[4l, rmso=\E[m, - rmul=\E[m, rs1=\Ec, sc=\E7, sgr0=\E[m, smacs=\E[11m, - smam=\E[11;0j, smir=\E[4h, smso=\E[1m, smul=\E[4m, - use=ansi+cpr, use=ansi+idl, use=ansi+local, + rs1=\Ec, sc=\E7, sgr0=\E[m, smacs=\E[11m, smam=\E[11;0j, + smir=\E[4h, smso=\E[1m, use=ansi+cpr, use=ansi+idl, + use=ansi+local, use=ansi+sgrul, # The following Terminfo entry describes functions which are supported by # the AT&T 5430/pt505 terminal software version 1. @@ -15214,8 +15665,7 @@ aaa+unk|aaa-unk|Ann Arbor Ambassador (internal - don't use this directly), OTbs, am, km, mc5i, mir, xon, cols#80, bel=^G, clear=\E[H\E[J$<156>, cr=\r, cub1=^H, cud1=^K, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, - el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, + dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K$<5>, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il1=\E[L$<3>, ind=^K, is1=\E[m\E7\E[H\E9\E8, is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kcbt=\E[Z, kclr=\E[J, @@ -15228,14 +15678,11 @@ aaa+unk|aaa-unk|Ann Arbor Ambassador (internal - don't use this directly), mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8, rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E \\, - rmm=\E[>52l, sc=\E7, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1; - %;%?%p7%t8;%;m, - sgr0=\E[m, + rmm=\E[>52l, sc=\E7, sgr0=\E[m, smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E \\, - smm=\E[>52h, vpa=\E[%p1%{1}%+%dd, use=ansi+arrows, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, + smm=\E[>52h, use=ansi+arrows, use=ansi+cup, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+rca, use=ansi+rep, use=ansi+sgrbold, aaa+rv|Ann Arbor Ambassador in reverse video, @@ -15287,13 +15734,12 @@ aaa-28|Ann Arbor Ambassador/28 lines, rmcup=\E[60;0;0;28p\E[28;1H\E[K, smcup=\E[H\E[J$<156>\E[28;0;0;28p, use=aaa+unk, aaa-30-s|aaa-s|Ann Arbor Ambassador/30 lines w/status, - eslok, hs, lines#29, dsl=\E7\E[60;0;0;30p\E[1;1H\E[K\E[H\E8\r\n\E[K, - fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;30p\E8, + is2=\r\n\E[A\E7\E[60;1;0;30p\E8, rmcup=\E[60;1;0;30p\E[29;1H\E[K, smcup=\E[H\E[J$<156>\E[30;1;0;30p\E[30;1H\E[K, - tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk, + use=aaa+unk, use=guru+s, aaa-30-s-rv|aaa-s-rv|Ann Arbor Ambassador/30 lines+status+reverse video, use=aaa+rv, use=aaa-30-s, aaa-s-ctxt|aaa-30-s-ctxt|Ann Arbor Ambassador/30 lines+status+save context, @@ -15625,14 +16071,13 @@ cit101|citc|C. Itoh fast VT100, OTbs, am, xenl, cols#80, lines#24, bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, cvvis=\E7\E[U, dch1=\E[P, - dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h$<200/>\E[?5l, - ich1=\E[@, il1=\E[L, + cup=\E[%i%p1%d;%p2%dH, cvvis=\E7\E[U, dch1=\E[P, ed=\E[J, + el=\E[K, flash=\E[?5h$<200/>\E[?5l, ich1=\E[@, is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, use=ansi+local1, + rmam=\E[?7l, rmkx=\E[?1l\E>, sgr0=\E[m, smam=\E[?7h, + smkx=\E[?1h\E=, use=ansi+idl1, use=ansi+local1, + use=ansi+sgrso, use=ansi+sgrul, # CIE Terminals CIT-101e from Geoff Kuenning <callan!geoff> via BRL # The following termcap entry was created from the Callan cd100 entry. The @@ -15646,13 +16091,12 @@ cit101e|C. Itoh CIT-101e, cols#80, it#8, lines#24, acsc=, cnorm=, csr=\E[%i%p1%2d;%p2%2dr, cup=\E[%i%p1%2d;%p2%2dH, cvvis=\E[?1l\E[?4l\E[?7h, - dch1=\E[P, dl1=\E[M, if=/usr/share/tabset/vt100, - il1=\E[L, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf0=\EOT, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOm, + dch1=\E[P, if=/usr/share/tabset/vt100, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOT, kf5=\EOm, kf6=\EOl, kf7=\EOM, kf8=\EOn, rc=\E8, ri=\EM, rmacs=^O, - rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sc=\E7, smacs=^N, - smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, - use=ansi+erase, use=ansi+local1, + rmir=\E[4l, rmkx=\E>, sc=\E7, smacs=^N, smir=\E[4h, smkx=\E=, + use=ansi+erase, use=ansi+idl1, use=ansi+local1, + use=ansi+sgrso, use=ansi+sgrul, use=vt100+pf1-pf4, # From: David S. Lawyer, June 1997: # The CIT 101-e was made in Japan in 1983-4 and imported by CIE @@ -15675,19 +16119,18 @@ cit101e-rv|C. Itoh CIT-101e (sets reverse video), am, eo, mir, msgr, xenl, xon, cols#80, lines#24, OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[1v, - cnorm=\E[0;3;4v, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, - cvvis=\E[3;5v, flash=\E[?5l$<200/>\E[?5h, home=\E[H, - hpa=\E[%i%p1%dG, ind=\n, + cnorm=\E[0;3;4v, cr=\r, cub1=^H, cvvis=\E[3;5v, + flash=\E[?5l$<200/>\E[?5h, hpa=\E[%i%p1%dG, ind=\n, is2=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E( B\E[m\E[20l\E[1;24r\E[24;1H, kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rev=\E[7m, - ri=\EM, rmcup=, rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g, - sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smso=\E[7m, - smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u8=\E[?6c, - use=ansi+enq, use=ansi+csr, use=ansi+erase, use=ansi+idc, + nel=\EE, rev=\E[7m, ri=\EM, rmcup=, rs1=\Ec\E[?7h\E[>5g, + sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, + u6=\E[%i%p1%d;%p2%dR, u8=\E[?6c, use=ansi+enq, + use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idc, use=ansi+idl, use=ansi+inittabs, use=ansi+local, - use=ecma+index, + use=ansi+sgrso, use=ansi+sgrul, use=ecma+index, + use=vt100+pf1-pf4, cit101e-n|CIT-101e w/o am, am@, @@ -15716,20 +16159,19 @@ cit500|CIE Terminals CIT-500, OTbs, OTpt, mir, msgr, xon, OTkn#10, cols#80, lines#64, vt#3, acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, - cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, - dch1=\E[P, ed=\EJ, el=\EK, home=\E[H, ind=\n, is2=\E<\E)0, - kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M, ked=\EJ, kel=\EK, kf0=\EOP, - kf1=\EOQ, kf2=\EOR, kf3=\EOS, kf4=\EOU, kf5=\EOV, kf6=\EOW, - kf7=\EOX, kf8=\EOY, kf9=\EOZ, khome=\E[H, kich1=\E[4h, - kil1=\E[L, krmir=\E[4l, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, - lf4=F15, lf5=F16, lf6=F17, lf7=F18, lf8=F19, lf9=F20, - ll=\E[64H, nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + cr=\r, cub1=^H, cud1=\n, cuu1=\EM, dch1=\E[P, ed=\EJ, el=\EK, + ind=\n, is2=\E<\E)0, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M, + ked=\EJ, kel=\EK, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, + kf4=\EOU, kf5=\EOV, kf6=\EOW, kf7=\EOX, kf8=\EOY, kf9=\EOZ, + khome=\E[H, kich1=\E[4h, kil1=\E[L, krmir=\E[4l, lf0=PF1, + lf1=PF2, lf2=PF3, lf3=PF4, lf4=F15, lf5=F16, lf6=F17, lf7=F18, + lf8=F19, lf9=F20, ll=\E[64H, nel=\EE, rev=\E[7m, ri=\EM, + rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - use=ansi+apparrows, use=ansi+csr, use=ansi+idl, - use=ansi+inittabs, use=ansi+local, + smkx=\E[?1h\E=, use=ansi+apparrows, use=ansi+csr, + use=ansi+cup, use=ansi+idl, use=ansi+inittabs, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, # C. Itoh printers begin here citoh|ci8510|8510|C. Itoh 8510a, @@ -15817,7 +16259,7 @@ cdc756|CDC 756, # of the tab key to send an ESC. The real ESC key is positioned way out # in right field. # -# The termcap won't work in 132 column mode due to the way it it moves the +# The termcap won't work in 132 column mode due to the way it moves the # cursor. Termcap doesn't have the capability (as far as I could tell) to # handle the 721 in 132 column mode. # @@ -15867,9 +16309,8 @@ visa50|Geveke VISA 50 terminal in ANSI 80 character mode, cols#80, lines#25, acsc=0_aaffggh jjkkllmmnnooqqssttuuvvwwxx, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, - csr=\E[%i%p1%d;%p2%dr, cup=\E[%i%p1%d;%p2%dH, - dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, ed=\E[J, el=\E[K, - flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, + csr=\E[%i%p1%d;%p2%dr, dch=\E[%p1%dX, dch1=\E[X, + dim=\E[2m, ed=\E[J, el=\E[K, flash=\E[?5h$<100/>\E[?5l, ht=^I, ind=\n, invis=\E[8m, is2=\E0;2m\E[1;25r\E[25;1H\E[?3l\E[?7h\E[?8h, ka1=\E[f, ka3=\EOQ, kb2=\EOP, kc1=\EOR, kc3=\EOS, kdch1=^?, @@ -15881,9 +16322,9 @@ visa50|Geveke VISA 50 terminal in ANSI 80 character mode, lf9=A funcl0=A send, nel=\r\n, rev=\E[7m, rmacs=\E[3l, rmam=\E[?7l, rmkx=\E>, rmso=\E[0;2m, rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h, smkx=\E=, - smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, - use=ansi+arrows, use=ansi+idc, use=ansi+idl, - use=ansi+local, + smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ansi+arrows, + use=ansi+cup, use=ansi+idc, use=ansi+idl, use=ansi+local, + use=ansi+rca2, #### Human Designed Systems (Concept) # @@ -16273,9 +16714,9 @@ hds200|Human Designed Systems HDS200, cols#80, lines#24, lm#0, acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, blink=\E[0;5m, bold=\E[0;1m, civis=\E[6+{, cnorm=\E[+{, - cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dsl=\E[2!w\r\n\E[!w, el1=\E[1K, fsl=\E[!w, home=\E[H, - hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\ED, invis=\E[0;8m, + cr=\r, dch=\E[%p1%dP, dch1=\E[P, dsl=\E[2!w\r\n\E[!w, + el1=\E[1K, fsl=\E[!w, ich=\E[%p1%d@, ind=\ED, + invis=\E[0;8m, is2=\E)0\017\E[m\E[=107;207h\E[90;3u\E[92;3u\E[43;1u\177\E$P \177\E[44;1u\177\E$Q\177\E[45;1u\177\E$R\177\E[46;1u \177\E$S\177\E[200;1u\177\E$A\177\E[201;1u\177\E$B\177 @@ -16300,10 +16741,10 @@ hds200|Human Designed Systems HDS200, sgr=\E[0%?%p1%p6%O%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%O%t;7 %;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[0;1;7m, - smul=\E[0;4m, tsl=\E[2!w\E[%i%p1%dG, vpa=\E[%i%p1%dd, - use=ansi+arrows, use=ansi+csr, use=ansi+erase, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, - use=ansi+pp, + smul=\E[0;4m, tsl=\E[2!w\E[%i%p1%dG, use=ansi+arrows, + use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+pp, + use=ansi+rca2, # <ht> through <el> included to specify padding needed in raw mode. # (avt-ns: added empty <acsc> to suppress a tic warning --esr) @@ -16311,18 +16752,16 @@ avt-ns|Concept AVT no status line, OTbs, am, eo, mir, ul, xenl, xon, cols#80, lines#24, lm#192, acsc=, bel=^G, clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=\r, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=119h, - dim=\E[1!{, dl=\E[%p1%dM$<4*>, dl1=\E[M$<4>, - ed=\E[J$<96>, el=\E[K$<6>, home=\E[H, - hpa=\E[%p1%{1}%+%dG, ht=\011$<4>, ich=\E[%p1%d@, + cub1=^H, cud1=\n, cvvis=\E[=119h, dim=\E[1!{, + dl=\E[%p1%dM$<4*>, dl1=\E[M$<4>, ed=\E[J$<96>, + el=\E[K$<6>, ht=\011$<4>, ich=\E[%p1%d@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>, ip=$<4>, is1=\E[=103l\E[=205l, is2=\E[1*q\E[2!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1 \E[1Q\EW\E[!y\E[!z\E>\E[0:0:32!r\E[0*w\E[w\E2\r\n\E[2;27 !t, - kdch1=\E\002\r, ked=\E\004\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, kich1=\E\001\r, kil1=\E\003\r, ll=\E[24H, - mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, + kdch1=\E\002\r, ked=\E\004\r, kich1=\E\001\r, + kil1=\E\003\r, ll=\E[24H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, pfloc=\E[%p1%d;0u#%p2%s#, pfx=\E[%p1%d;1u#%p2%s#, prot=\E[99m, ri=\EM$<4>, rmacs=\016$<1>, rmcup=\E[w\E2\r\n, rmkx=\E[!z\E[0;2u, rmso=\E[7!{, @@ -16332,9 +16771,10 @@ avt-ns|Concept AVT no status line, \016%;$<1>, sgr0=\E[m\016$<1>, smacs=\017$<1>, smcup=\E[=4l\E[1;24w\E2\r, smkx=\E[1!z\E[0;3u, - vpa=\E[%p1%{1}%+%dd, use=ansi+arrows, use=ansi+csr, + use=ansi+arrows, use=ansi+csr, use=ansi+cup, use=ansi+idc1, use=ansi+inittabs, use=ansi+local, - use=ansi+rep, use=ansi+sgrbold, + use=ansi+rca, use=ansi+rep, use=ansi+sgrbold, + use=vt100+pf1-pf4, avt-rv-ns|Concept AVT in reverse video mode/no status line, flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, @@ -16534,14 +16974,13 @@ dg+color|Color info for Data General D470C terminals in ANSI mode, use=dg+color8, dgmode+color8|Color info for Data General D220/D230C terminals in DG mode, - bce, - colors#8, ncv#16, pairs#64, op=\036Ad\036Bd, setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%| %;%{48}%+%c, setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%| %;%{48}%+%c, setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c, + use=dg+color8, dgmode+color|Color info for Data General D470C terminals in DG mode, colors#16, pairs#0x100, @@ -16552,8 +16991,6 @@ dgmode+color|Color info for Data General D470C terminals in DG mode, use=dgmode+color8, dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode, - bce, ccc, - colors#52, ncv#53, pairs#26, initp=\036RG0%p1%02X%p2%{255}%*%{1000}%/%02X%p3%{255}%* %{1000}%/%02X%p4%{255}%*%{1000}%/%02X%p5%{255}%* %{1000}%/%02X%p6%{255}%*%{1000}%/%02X%p7%{255}%* @@ -16561,7 +16998,7 @@ dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode, oc=\036RG01A00FF00000000\036RG01B00000000FF00 \036RG01C007F00000000\036RG01D000000007F00, op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D, - scp=\036RG2%p1%02X, + scp=\036RG2%p1%02X, use=dg+ccc, # Colors are in the order: normal, reverse, dim, dim + reverse. dg+ccc|Configurable color info for DG D430C terminals in DG mode, @@ -16611,10 +17048,10 @@ dg200|Data General DASHER 200, dg210|dg-ansi|Data General 210/211, am, cols#80, lines#24, - OTnl=\E[B, clear=\E[2J, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, - el=\E[K, home=\E[H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, khome=\E[H, nel=\r\E[H\E[A\n, rmso=\E[0;m, - rmul=\E[0;m, smso=\E[7;m, smul=\E[4;m, use=ansi+local1, + OTnl=\E[B, clear=\E[2J, ed=\E[J, el=\E[K, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, + nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m, smso=\E[7;m, + smul=\E[4;m, use=ansi+cup, use=ansi+local1, # From: Peter N. Wan <ihnp4!gatech!gacsr!wan> # courtesy of Carlos Rucalde of Vantage Software, Inc. @@ -16642,17 +17079,18 @@ dg460-ansi|Data General Dasher 460 in ANSI-mode, OTbs, am, msgr, ul, cols#80, it#8, lines#24, OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, - cup=\E[%i%p1%2d;%p2%2dH, dch1=\E[P, dim=\E[2m, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, - ind=\E[S, is2=^^F@, kbs=\E[D, kf0=\E[001z, kf1=\E[002z, - kf2=\E[003z, kf3=\E[004z, kf4=\E[005z, kf5=\E[006z, - kf6=\E[007z, kf7=\E[008z, kf8=\E[009z, kf9=\E[00:z, lf0=f1, - lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, - mc0=\E[i, rev=\E[7m, ri=\E[T, rmso=\E[m, rmul=\E[05, + cup=\E[%i%p1%2d;%p2%2dH, dch1=\E[P, dim=\E[2m, ed=\E[J, + el=\E[K, home=\E[H, ht=^I, ich1=\E[@, ind=\E[S, is2=^^F@, + kbs=\E[D, kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, + kf3=\E[004z, kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, + kf7=\E[008z, kf8=\E[009z, kf9=\E[00:z, lf0=f1, lf1=f2, + lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, + mc0=\E[i, rev=\E[7m, ri=\E[T, rmul=\E[05, sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%; %?%p1%p3%|%t;7%;m, - sgr0=\E(B\E[m, smso=\E[7m, smul=\E[4m, u8=\E[5n, u9=\E[0n, - use=ansi+arrows, use=ansi+cpr, use=ansi+local1, + sgr0=\E(B\E[m, smul=\E[4m, u8=\E[5n, u9=\E[0n, + use=ansi+arrows, use=ansi+cpr, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, # From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official) # Data General 605x @@ -16695,13 +17133,13 @@ d210|d214|Data General DASHER D210 series, am, bw, msgr, xon, cols#80, lines#24, bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=\r, - cub1=^H, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, ed=\E[J, - el=\E[K, el1=\E[1K, home=\E[H, ind=\n, is1=\E[<0;<1;<4l, - ll=\E[H\E[A, nel=\n, rev=\E[7m, rmso=\E[m, rmul=\E[m, + cub1=^H, dim=\E[2m, ed=\E[J, el=\E[K, el1=\E[1K, ind=\n, + is1=\E[<0;<1;<4l, ll=\E[H\E[A, nel=\n, rev=\E[7m, + rmso=\E[m, sgr=\E[%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;%?%p1%p3%| %p6%|%t7;%;m, - sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=ansi+local, - use=dgkeys+7b, + sgr0=\E[m, smso=\E[2;7m, use=ansi+cup, use=ansi+local, + use=ansi+sgrul, use=dgkeys+7b, # DASHER D210 series terminals in DG mode. # Like D200, but adds clear to end-of-screen and needs XON/XOFF. @@ -17174,9 +17612,9 @@ cs10|colorscan|Datamedia Color Scan 10, cols#80, lines#24, bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ind=\n, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smso=\E[7m, smul=\E[4m, use=ansi+erase, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, sgr0=\E[m, + use=ansi+erase, use=ansi+sgrso, use=ansi+sgrul, + use=vt100+pf1-pf4, cs10-w|Datamedia Color Scan 10 with 132 columns, cols#132, @@ -17260,8 +17698,8 @@ dm3045|Datamedia 3045a, dm80|dmdt80|dt80|Datamedia dt80/1, clear=\E[2J\E[H, cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, - ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m\017$<2>, - smso=\E[7m, smul=\E[4m, use=vt100+4bsd, + ri=\EM, sgr0=\E[m\017$<2>, use=ansi+sgrso, + use=ansi+sgrul, use=vt100+4bsd, # except in 132 column mode, where it needs a little padding. # This is still less padding than the VT100, and you can always turn on # the ^S/^Q handshaking, so you can use VT100 flavors for things like @@ -17394,8 +17832,8 @@ f1720|f1720a|fluke 1720A, bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, ind=\ED, is2=\E[H\E[2J, kcub1=^_, kcud1=^], kcuf1=^^, kcuu1=^\, - ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, use=ansi+local1, + ri=\EM, sgr0=\E[m, use=ansi+local1, use=ansi+sgrso, + use=ansi+sgrul, #### Liberty Electronics (Freedom) # @@ -17429,7 +17867,7 @@ f100-rv|freedom-rv|Liberty Freedom 100 in reverse video, # code for the down cursor key. When kcud1 is defined in terminfo # as ^V, the Control Character Quoting capability (^V in insert mode) # is lost! It cannot be remapped in vi because it is necessary to enter -# a ^V to to quote the ^V that is being remapped!!! +# a ^V to, to quote the ^V that is being remapped!!! # # f110/f200 users will have to decide whether # to lose the down cursor key or the quoting capability. We will opt @@ -17498,15 +17936,14 @@ go140|graphon go-140, OTbs, cols#80, it#8, lines#24, clear=\E[H\E[2J$<10/>, cub1=^H, - cup=\E[%i%p1%2d;%p2%2dH, dch1=\E[P, dl1=\E[M, - ed=\E[J$<10/>, el=\E[K, ht=^I, - if=/usr/share/tabset/vt100, il1=\E[L, + cup=\E[%i%p1%2d;%p2%2dH, dch1=\E[P, ed=\E[J$<10/>, + el=\E[K, ht=^I, if=/usr/share/tabset/vt100, is2=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+local1, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H, + ri=\EM, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, sgr0=\E[m, + smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, use=ansi+sgrul, + use=vt100+pf1-pf4, go140w|graphon go-140 in 132 column mode, am, @@ -17520,16 +17957,15 @@ go225|go-225|Graphon 225, OTbs, am, mir, xenl, cols#80, it#8, lines#25, vt#3, blink=\E[5m, bold=\E[1m, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - home=\E[H, ht=^I, il1=\E[L, ind=\ED, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, + cuu1=\E[A, dch1=\E[P, ht=^I, ind=\ED, + is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l, rmcup=\E[!p\E[?7h\E[2;1;1#w, rmir=\E[4l, rmkx=\E>, - rmso=\E[27m, rmul=\E[24m, rs1=\E[!p\E[?7h\E[2;1;1#w, - sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r, - smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, - use=ansi+arrows, use=ansi+csr, use=ansi+erase, + rs1=\E[!p\E[?7h\E[2;1;1#w, sgr0=\E[m, smam=\E[?7h, + smcup=\E[2;0#w\E[1;25r, smir=\E[4h, smkx=\E=, + use=ecma+underline, use=ecma+standout, use=ansi+arrows, + use=ansi+csr, use=ansi+cup, use=ansi+erase, + use=ansi+idl1, use=vt100+pf1-pf4, #### Harris (Beehive) # @@ -17734,7 +18170,7 @@ ha8686|Harris 8686, # # They're now (1998) a subsidiary of General Electric, operating under the # marque "GEC-Marconi Hazeltine" and doing military avionics. Web page -# at <http://www.gec.com/cpd/1ncpd.htm#1.55>. +# at <https://web.archive.org/web/19990223214534/http://www.gec.com/cpd/1ncpd.htm#1.55>. # # Since <cuf1> is blank, when you want to erase something you @@ -17859,13 +18295,12 @@ hazel|exec80|h80|he80|Hazeltine Executive 80, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, rev=\E[7m$<2/>, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rev=\E[7m$<2/>, rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmkx=\E[?1l\E>, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>, - smul=\E[4m$<2/>, use=ansi+csr, + smul=\E[4m$<2/>, use=ansi+csr, use=vt100+pf1-pf4, #### IBM # @@ -17946,26 +18381,26 @@ ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display, cols#80, it#8, lines#25, acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x \263, - bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, - dch1=\E[P, ech=\E[%p1%dX, home=\E[H, hpa=\E[%i%p1%dG, - ind=\E[S, is2=\Ec, kcbt=\E[Z, kclr=\E[144q, kdch1=\E[P, - ked=\E[148q, kel=\E[142q, kend=\E[146q, kf1=\E[001q, - kf10=\E[010q, kf11=\E[011q, kf12=\E[012q, kf13=\E[013q, - kf14=\E[014q, kf15=\E[015q, kf16=\E[016q, kf17=\E[017q, - kf18=\E[018q, kf19=\E[019q, kf2=\E[002q, kf20=\E[020q, - kf21=\E[021q, kf22=\E[022q, kf23=\E[023q, kf24=\E[024q, - kf25=\E[025q, kf26=\E[026q, kf27=\E[027q, kf28=\E[028q, - kf29=\E[029q, kf3=\E[003q, kf30=\E[030q, kf31=\E[031q, - kf32=\E[032q, kf33=\E[033q, kf34=\E[034q, kf35=\E[035q, - kf36=\E[036q, kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, - kf7=\E[007q, kf8=\E[008q, kf9=\E[009q, kich1=\E[139q, - kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q, - kri=\E[155q, krmir=\E[4l, ri=\E[T, rmir=\E[4l, rs2=\Ec, + bel=^G, cr=\r, cub1=^H, cud1=\n, dch1=\E[P, ech=\E[%p1%dX, + hpa=\E[%i%p1%dG, ind=\E[S, is2=\Ec, kcbt=\E[Z, + kclr=\E[144q, kdch1=\E[P, ked=\E[148q, kel=\E[142q, + kend=\E[146q, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q, + kf12=\E[012q, kf13=\E[013q, kf14=\E[014q, kf15=\E[015q, + kf16=\E[016q, kf17=\E[017q, kf18=\E[018q, kf19=\E[019q, + kf2=\E[002q, kf20=\E[020q, kf21=\E[021q, kf22=\E[022q, + kf23=\E[023q, kf24=\E[024q, kf25=\E[025q, kf26=\E[026q, + kf27=\E[027q, kf28=\E[028q, kf29=\E[029q, kf3=\E[003q, + kf30=\E[030q, kf31=\E[031q, kf32=\E[032q, kf33=\E[033q, + kf34=\E[034q, kf35=\E[035q, kf36=\E[036q, kf4=\E[004q, + kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q, + kf9=\E[009q, kich1=\E[139q, kil1=\E[140q, kind=\E[151q, + knp=\E[154q, kpp=\E[150q, kri=\E[155q, krmir=\E[4l, + ri=\E[T, rmir=\E[4l, rs2=\Ec, sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 %;%?%p7%t;8%;m, - smir=\E[4h, use=ansi+arrows, use=ansi+erase, - use=ansi+idl, use=ansi+local, use=ansi+sgrbold, - use=ecma+index, + smir=\E[4h, use=ansi+arrows, use=ansi+cup, + use=ansi+erase, use=ansi+idl, use=ansi+local, + use=ansi+sgrbold, use=ecma+index, ibmaed|IBM Experimental display, OTbs, am, eo, msgr, @@ -18067,14 +18502,14 @@ hft-old|AIWS High Function Terminal, am, xon, cols#80, lines#25, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n, + cuf1=\E[C, cuu1=\E[A, dch1=\E[P, ht=^I, ich1=\E[@, ind=\n, invis=\E[8m, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q, kf9=\E[009q, knp=\E[153q, kpp=\E[159q, - ktbc=\E[010q, rev=\E[7m, rmir=\E6, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m, - use=ansi+arrows, use=ansi+erase, use=ibm+color, + ktbc=\E[010q, rev=\E[7m, rmir=\E6, sgr0=\E[m, smir=\E6, + use=ansi+arrows, use=ansi+cup, use=ansi+erase, + use=ansi+idl1, use=ansi+sgrso, use=ansi+sgrul, + use=ibm+color, ibm-system1|system1|IBM system/1 computer, am, xt, @@ -18092,9 +18527,8 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device, acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x \263, bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - ech=\E[%p1%dX, ed=\E[2J, el=\E[0K, home=\E[H, - hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\ED, is2=\Ec, + dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ed=\E[2J, + el=\E[0K, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\ED, is2=\Ec, kcbt=\E[Z, kclr=\E[144q, kdch1=\E[P, ked=\E[148q, kel=\E[142q, kend=\E[146q, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q, kf12=\E[012q, kf13=\E[013q, kf14=\E[014q, @@ -18112,8 +18546,8 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device, sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 %;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;, smacs=\E(0, smir=\E[4h, tbc=\E[3g, use=ansi+arrows, - use=ansi+idl, use=ansi+local, use=ansi+sgrbold, - use=ecma+index, + use=ansi+cup, use=ansi+idl, use=ansi+local, + use=ansi+sgrbold, use=ecma+index, # "Megapel" refers to the display adapter, which was used with the IBM RT # aka IBM 6150. @@ -18135,8 +18569,8 @@ ibm8514-c|IBM 8514 color display with standout and underline, # # AIX entries. IBM ships these with AIX 3.2.5. -# -- added rc, sc based on manpage -TD -# -- added rmacs, smacs based on manpage -TD +# -- added rc, sc based on man page -TD +# -- added rmacs, smacs based on man page -TD # Note that we could use ibm+16color, but that is not how IBM defines this one. aixterm|IBM Aixterm Terminal Emulator, acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, rc=\E8, ri@, @@ -18192,8 +18626,8 @@ i400|Infoton 400, cols#80, lines#25, bel=^G, clear=\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%3d;%p2%3dH, cuu1=\E[A, - dch1=\E[4h\E[2Q\E[P\E[4l\E[0Q, dl1=\E[M, el=\E[N, - il1=\E[L, ind=\n, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q, + dch1=\E[4h\E[2Q\E[P\E[4l\E[0Q, el=\E[N, ind=\n, + rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q, use=ansi+idl1, # (addrinfo: removed obsolete ":bc=^Z:" -- esr) addrinfo|cursor-addressable Infoton, @@ -18518,17 +18952,16 @@ intext2|intextii|INTERACTIVE modified owl 1251, am, bw, ul, cols#80, lines#24, xmc#0, bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J, - el=\E[K, + cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, ed=\E[J, el=\E[K, flash=\E[;;;;;;;;;2;;u$<200/>\E[;;;;;;;;;1;;u, - hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S, - kbs=^H, kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r, + hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, ind=\E[S, kbs=^H, + kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r, kf0=\E@\r, kf1=\EP\r, kf2=\EQ\r, kf3=\ES\r, kf4=\ET\r, kf5=\EU\r, kf6=\EV\r, kf7=\EW\r, kf8=\EX\r, kf9=\EY\r, khome=\ER\r, lf0=REFRSH, lf1=DEL CH, lf2=TABSET, lf3=GOTO, lf4=+PAGE, lf5=+SRCH, lf6=-PAGE, lf7=-SRCH, lf8=LEFT, lf9=RIGHT, ri=\E[T, rmso=\E[2 D, rmul=\E[2 D, smso=\E[6 D, - smul=\E[18 D, use=ansi+local1, + smul=\E[18 D, use=ansi+idl1, use=ansi+local1, #### Kimtron (abm, kt) # @@ -18816,25 +19249,22 @@ prism9|p9|P9|MDC Prism-9 in ANSI mode, cols#80, lines#24, vt#3, wsl#72, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[<4l, clear=^L, cnorm=\E[<4h, cr=\r, csr=\E[%i%p1%d;%p2%d%%v, cub1=^H, - cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dsl=\E[%}\024, ech=\E[%p1%dX, ed=\E[J$<10>, el=\E[K, - fsl=^T, home=\E[H, hpa=\E[%i%p1%d`, ind=\n, - is2=\E[&p\E[<12l\E F, kclr=^L, kf1=\E[11~, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, - kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, nel=\r\n, prot=\E[32%{, - rc=\E[%z, rep=\E[%p2%db%p1%c, rev=\E[7m, ri=\E[L, - rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, + cud1=\n, dch=\E[%p1%dP, dch1=\E[P, dsl=\E[%}\024, + ech=\E[%p1%dX, ed=\E[J$<10>, el=\E[K, fsl=^T, + hpa=\E[%i%p1%d`, ind=\n, is2=\E[&p\E[<12l\E F, kclr=^L, + kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, + kf17=\E[31~, kf18=\E[32~, nel=\r\n, prot=\E[32%{, rc=\E[%z, + rep=\E[%p2%db%p1%c, rev=\E[7m, ri=\E[L, rmir=\E[4l, rs2=\E[&p\E[<12l\E\sF\E[3g\E[9;17;25;33;41;49;57;65;73 \sN, sc=\E[%y, sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;m%? %p8%t\E[32%%{%;%?%p9%t\016%e\017%;, - sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m, - tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd, use=ansi+arrows, - use=ansi+idl, use=ansi+inittabs, use=ansi+local, - use=ansi+pp, + sgr0=\E[0m\017, smir=\E[4h, tsl=\E[%i%p1%d%%}, + vpa=\E[%i%p1%dd, use=ecma+underline, use=ecma+standout, + use=ansi+arrows, use=ansi+cup, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+pp, + use=xterm+r5+fkeys, # p9-w: Prism-9 in 132 column mode # -------------------------------- @@ -19052,19 +19482,19 @@ mm340|mime340|mime 340, mt4520-rv|micro-term 4520 reverse video, am, hs, msgr, xenl, xon, cols#80, it#8, lines#24, wsl#80, - bel=^G, cnorm=\E[0V\E8, cr=\r, cup=\E[%i%p1%d;%p2%dH, - cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, - flash=\E[?5l$<200/>\E[?5h, fsl=\E[?5l\E[?5h, home=\E[H, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=\ED, + bel=^G, cnorm=\E[0V\E8, cr=\r, cvvis=\E7\E[0U, + dch=\E[%p1%dP, dch1=\E[P, flash=\E[?5l$<200/>\E[?5h, + fsl=\E[?5l\E[?5h, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, + ind=\ED, is2=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H \E[J, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ll=\E[24;1H, nel=\EE, - rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l, - rmso=\E[0m, rmul=\E[24m, + ll=\E[24;1H, nel=\EE, rf=/usr/share/tabset/vt100, ri=\EM, + rmam=\E[?7l, rmso=\E[0m, rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J, - sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[g, - tsl=\E[25;1H, use=ansi+arrows, use=ansi+csr, - use=ansi+erase, use=ansi+idl, use=ansi+local, + sgr0=\E[m, smam=\E[?7h, smso=\E[7m, tbc=\E[g, tsl=\E[25;1H, + use=ecma+underline, use=ansi+arrows, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=vt100+pf1-pf4, # Fri Aug 5 08:11:57 1983 # This entry works for the ergo 4000 with the following setups: @@ -19083,12 +19513,11 @@ ergo4000|microterm ergo 4000, ed=\E[0J$<15>, el=\E[0K$<13>, ht=^I, il1=\E[1L$<5*>, ind=\ED$<20*>, is2=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h$<300>, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=pf1, lf2=pf2, lf3=pf3, - lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, lf1=pf1, + lf2=pf2, lf3=pf3, lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, + rmir=\E[4l, rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>, smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>, - smso=\E[7m$<20>, use=ansi+local1, + smso=\E[7m$<20>, use=ansi+local1, use=vt100+pf1-pf4, #### NCR # @@ -19252,17 +19681,13 @@ ncr260vt200an|NCR 2900/260 VT200 with ANSI keyboard, is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< 200>, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf0=\EOy, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, - kf21=\E[31~, kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, - kf25=\E[35~, kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, - kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, - kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, krdo=\E[29~, mc0=\E[i, - mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, ri=\EM$<5>, - rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[27m, rmul=\E[24m, + kf0=\EOy, kf21=\E[31~, kf22=\E[32~, kf23=\E[33~, + kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, kf27=\E[2~, + kf28=\E[3~, kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, + kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf5=\E[M, khlp=\E[28~, + krdo=\E[29~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, + ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, + rmkx=\E[?1l\E>, rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< 200>, sc=\E7, @@ -19270,9 +19695,10 @@ ncr260vt200an|NCR 2900/260 VT200 with ANSI keyboard, %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>, sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g, - vpa=\E[%p1%dd$<40>, use=ansi+sgrbold, use=decid+cpr, + vpa=\E[%p1%dd$<40>, use=ecma+underline, + use=ecma+standout, use=ansi+sgrbold, use=decid+cpr, use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad, - use=ncr260vt+sl, + use=ncr260vt+sl, use=vt220+sfkeys, use=vt220+ufkeys, ncr260vt200wan|NCR 2900/260 VT200 wide mode ANSI keyboard, cols#132, @@ -19310,17 +19736,13 @@ ncr260vt300an|NCR 2900/260 VT300 with ANSI keyboard, is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1 ;1H\E>$<200>, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf0=\EOy, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, - kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, - kf21=\E[31~, kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, - kf25=\E[35~, kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, - kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, - kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, krdo=\E[29~, mc0=\E[i, - mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, ri=\EM$<5>, - rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[27m, rmul=\E[24m, + kf0=\EOy, kf21=\E[31~, kf22=\E[32~, kf23=\E[33~, + kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, kf27=\E[2~, + kf28=\E[3~, kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, + kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf5=\E[M, khlp=\E[28~, + krdo=\E[29~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, + ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, + rmkx=\E[?1l\E>, rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1 ;1H\E>$<200>, sc=\E7, @@ -19328,9 +19750,10 @@ ncr260vt300an|NCR 2900/260 VT300 with ANSI keyboard, %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>, sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g, - vpa=\E[%p1%dd$<40>, use=ansi+sgrbold, use=decid+cpr, + vpa=\E[%p1%dd$<40>, use=ecma+underline, + use=ecma+standout, use=ansi+sgrbold, use=decid+cpr, use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad, - use=ncr260vt+sl, + use=ncr260vt+sl, use=vt220+sfkeys, use=vt220+ufkeys, ncr260vt300wan|NCR 2900/260 VT300 wide mode ANSI keyboard, cols#132, @@ -19380,16 +19803,14 @@ ncr260wy325pp|NCR 2900/260 Wyse 325, is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9 \Ee7$<100>, kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ, - kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, - kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET, - kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, - kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, - kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, - kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, - kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, kf30=^Am\r, kf31=^An\r, - kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, - kprt=\EP, mc0=\EP, mc4=^T, mc5=^R, + kRIT=^L, ka1=^^, kb2=\EJ, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET, + kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, + kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf20=^Ac\r, kf21=^Ad\r, + kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, + kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, kf30=^Am\r, kf31=^An\r, + kf32=^Ao\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, + mc0=\EP, mc4=^T, mc5=^R, mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>, nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0, rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, @@ -19404,7 +19825,8 @@ ncr260wy325pp|NCR 2900/260 Wyse 325, %t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>, sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/, smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0, - use=ncr260vp+sl, + use=ncr260vp+sl, use=tvi920b+fn, use=ansi+arrows, + use=ansi+apparrows, ncr260wy325wpp|NCR 2900/260 Wyse 325 wide mode, cols#132, cup=\Ea%i%p1%dR%p2%dC$<30>, @@ -19597,10 +20019,10 @@ ncrvt100an|ncrvt100pp|NCR VT100 for the 2900 terminal, home=\E[H$<2>$<80>, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>, ind=\ED, is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>, - kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kent=\r, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE, rc=\E8, - rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>, - rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>, + kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kent=\r, mc0=\E[i$<100>, + nel=\EE, rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, + rmacs=\017$<90>, rmir=\E[4l$<80>, rmso=\E[0m$<30>, + rmul=\E[0m$<30>, rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E( B\E)0\E%/0n\E[P\031$<200>, sc=\E7, @@ -19609,6 +20031,7 @@ ncrvt100an|ncrvt100pp|NCR VT100 for the 2900 terminal, sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>, smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>, tsl=\E[>+1$<70>, use=decid+cpr, use=vt100+4bsd, + use=vt100+pf1-pf4, ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal, cols#132, is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>, @@ -19857,17 +20280,16 @@ uts30|Sperry UTS30 with cp/m@1R1, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, civis=\ER, clear=^L, cnorm=\ES, cr=\r, csr=\EU%p1%{32}%+%c%p2%{32}%+%c, - cub1=^H, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, - dch1=\EM, dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=\r, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, + cub1=^H, dch=\E[%p1%dP, dch1=\EM, dl=\E[%p1%dM, dl1=\EL, + fsl=\r, ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN, ind=\n, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, khome=\E[H, rc=\EX, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EI, rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, tsl=\E], uc=\EPB, - use=ansi+apparrows, use=ansi+local, use=ansi+sgrso, - use=ansi+sgrul, + use=ansi+apparrows, use=ansi+cup, use=ansi+erase, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, #### Tandem # @@ -19914,17 +20336,18 @@ dt100|dt-100|Tandy DT-100 terminal, cols#80, lines#24, xmc#1, acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, clear=\E[H\E[2J, cr=\r, csr=\E[%p1%2d;%p2%2dr, cub1=^H, - cup=\010\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n, - is2=\E[?3l\E)0\E(B, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\E[?3i, kf10=\E[?5i, kf2=\E[2i, kf3=\E[@, - kf4=\E[M, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, - kf9=\E[21~, khome=\E[H, knp=\E[29~, kpp=\E[28~, lf1=f1, - lf2=f2, lf3=f3, lf4=f4, lf5=f5, lf6=f6, lf7=f7, lf8=f8, ri=\EM, - rmacs=^O, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smacs=^N, - smso=\E[7m, smul=\E[4m, use=ansi+local1, use=vt220+cvis, + cup=\010\E[%i%p1%d;%p2%dH, dch1=\E[P, ed=\E[J, el=\E[K, + home=\E[H, ht=^I, ich1=\E[@, ind=\n, is2=\E[?3l\E)0\E(B, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[?3i, + kf10=\E[?5i, kf2=\E[2i, kf3=\E[@, kf4=\E[M, kf5=\E[17~, + kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, khome=\E[H, + knp=\E[29~, kpp=\E[28~, lf1=f1, lf2=f2, lf3=f3, lf4=f4, lf5=f5, + lf6=f6, lf7=f7, lf8=f8, ri=\EM, rmacs=^O, sgr0=\E[m, smacs=^N, + use=ansi+idl1, use=ansi+local1, use=ansi+sgrso, + use=ansi+sgrul, use=vt220+cvis, dt100w|dt-100w|Tandy DT-100 terminal (wide mode), cols#132, use=dt100, + dt110|Tandy DT-110 emulating ANSI, xon, cols#80, lines#24, @@ -19933,14 +20356,13 @@ dt110|Tandy DT-110 emulating ANSI, cup=\010\E[%i%p1%d;%p2%dH, dch1=\E[0P, dl1=\E[0M, ed=\E[0J, el=\E[0K, enacs=\E(B\E)0, home=\E[H, ht=^I, ich1=\E[0@, il1=\E[0L, ind=\n, is2=\E[?3l\E)0\E(B, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[K, - kf1=\E[1~, kf10=\E[10~, kf2=\E[2~, kf3=\E[3~, kf4=\E[4~, - kf5=\E[5~, kf6=\E[6~, kf7=\E[7~, kf8=\E[8~, kf9=\E[9~, - khome=\E[G, kich1=\E[@, knp=\E[26~, kpp=\E[25~, lf0=f1, - lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf8=f9, - lf9=f10, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smacs=^N, smso=\E[7m, smul=\E[4m, use=ansi+local1, - use=vt220+cvis, + kend=\E[K, kf1=\E[1~, kf10=\E[10~, kf2=\E[2~, kf3=\E[3~, + kf4=\E[4~, kf5=\E[5~, kf6=\E[6~, kf7=\E[7~, kf8=\E[8~, + kf9=\E[9~, khome=\E[G, kich1=\E[@, knp=\E[26~, kpp=\E[25~, + lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, + lf8=f9, lf9=f10, ri=\EM, rmacs=^O, sgr0=\E[m, smacs=^N, + use=ansi+cup, use=ansi+local1, use=ansi+sgrso, + use=ansi+sgrul, use=vt100+noapp, use=vt220+cvis, pt210|TRS-80 PT-210 printing terminal, hc, os, cols#80, @@ -20085,6 +20507,7 @@ tek4025ex|4025ex|4027ex|Tektronix 4025 w/!, is2=\037com\s33\r\n!sto\s9\,17\,25\,33\,41\,49\,57\,65\,73 \r, rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025, + tek4105|Tektronix 4105, OTbs, am, mir, msgr, ul, xenl, xt, cols#79, it#8, lines#29, @@ -20136,22 +20559,22 @@ tek4105a|Tektronix 4105 (BRL), OTkn#8, cols#80, lines#30, vt#3, acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E%!0\ETD00\E%!1, cnorm=\E%!0\ETD10\E%!1, cr=\r, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, - cvvis=\E%!0\ETD70\E%!1, dch=\E[%p1%dP, dch1=\E[P, - ech=\E[%p1%dX, home=\E[H, ind=\n, is2=\E%!1, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA, - kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, kf6=\EOR, - kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F8, - ll=\E[30;H, nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, + cub1=^H, cud1=\n, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1, + dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ind=\n, is2=\E%!1, + kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, + kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, + lf5=F6, lf6=F8, ll=\E[30;H, nel=\EE, rev=\E[7m, ri=\EM, + rmacs=^O, rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, + rmkx=\E[?1l\E>, rs2=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40 \ELI100\ELLA>\ELM0\EKE0\ENF1\EKS0\END0\E%!1\Ec\E[?3;5l \E[?7;8h\E[r\E[m\E>, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr, + smkx=\E[?1h\E=, use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl, use=ansi+inittabs, - use=ansi+local, use=ecma+index, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, + use=ecma+index, # Tektronix 4106/4107/4109 from BRL # The following setup modes are assumed for normal operation: @@ -20179,22 +20602,22 @@ tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109, cols#80, lines#32, vt#3, acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E%!0\ETD00\E%!1, cnorm=\E%!0\ETD10\E%!1, cr=\r, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, - cvvis=\E%!0\ETD70\E%!1, dch=\E[%p1%dP, dch1=\E[P, - ech=\E[%p1%dX, home=\E[H, ind=\n, is2=\E%!1, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA, - kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, kf6=\EOR, - kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F8, - ll=\E[32;H, nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, + cub1=^H, cud1=\n, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1, + dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, ind=\n, is2=\E%!1, + kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, + kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, + lf5=F6, lf6=F8, ll=\E[32;H, nel=\EE, rev=\E[7m, ri=\EM, + rmacs=^O, rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, + rmkx=\E[?1l\E>, rmso=\E[m, rs1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40 \ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\E%!1\Ec\E[?3 ;5l\E[?7;8h\E[r\E[m\E>, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, use=ansi+csr, - use=ansi+erase, use=ansi+idl, use=ansi+inittabs, - use=ansi+local, use=ecma+index, + smkx=\E[?1h\E=, smso=\E[7;42m, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+sgrul, + use=ecma+index, # Refer to: # TEK Programmer's Reference @@ -20263,14 +20686,15 @@ tek4112|tek4114|Tektronix 4110 series, cols#80, lines#34, cbt=\E[Z, clear=\E[2J\E[0;0H, cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch1=\E[P, - dl1=\E[M, ed=\E[0J, el=\E[0K, ich1=\E[@, il1=\E[L, - ind=\E7\E[0;0H\E[M\E8, is2=\E3!1, ri=\E7\E[0;0H\E[L\E8, - rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, + ed=\E[0J, el=\E[0K, ich1=\E[@, ind=\E7\E[0;0H\E[M\E8, + is2=\E3!1, ri=\E7\E[0;0H\E[L\E8, sgr0=\E[m, + use=ansi+idl1, use=ansi+sgrso, use=ansi+sgrul, tek4112-nd|Tektronix 4112 not in dialog area, OTns, cuu1=^K, use=tek4112, tek4112-5|Tektronix 4112 in 5 line dialog area, lines#5, use=tek4112, + # (tek4113: this used to have "<cuf1=\LM1\s\LM0>", someone's mistake; # removed "<smacs=\E^N>, <rmacs=\E^O>", which had been commented out in 8.3. # Note, the !0 and !1 sequences in <rmcup>/<smcup>/<cnorm>/<civis> were @@ -20305,16 +20729,15 @@ otek4115|Tektronix 4115 (old), cols#80, it#8, lines#34, cbt=\E[Z, clear=\E[H\E[2J, cnorm=\E%!0\ELBG8\E%!1\E[34;1H, - cup=\E[%i%p1%d;%p2%dH, cvvis=\E%!0\ELBB2\E%!1, - dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - if=/usr/share/tabset/vt100, il1=\E[L, + cvvis=\E%!0\ELBB2\E%!1, dch1=\E[P, ed=\E[J, el=\E[K, ht=^I, + if=/usr/share/tabset/vt100, is2=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA? \E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m, kbs=^H, ri=\EM, rmam=\E[?7l, rmcup=\E%!0\ELBG8\E%!1\E[34;1H\E[J, rmir=\E[4l, - rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, - smcup=\E%!0\ELBB2\E%!1, smir=\E[4h, smkx=\E=, smso=\E[7m, - smul=\E[4m, use=ansi+local1, + rmkx=\E>, sgr0=\E[m, smam=\E[?7h, smcup=\E%!0\ELBB2\E%!1, + smir=\E[4h, smkx=\E=, use=ansi+cup, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, use=ansi+sgrul, tek4115|Tektronix 4115 entry with more ANSI capabilities (new), am, xon, cols#80, lines#34, @@ -20350,17 +20773,16 @@ tek4207|Tektronix 4207 graphics terminal with memory, am, bw, mir, msgr, ul, xenl, cols#80, it#8, lines#32, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J$<156/>, - cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\EM, dch1=\E[P$<4/>, dl1=\E[M$<3/>, ed=\E[J, - el=\E[K$<5/>, home=\E[H, ht=^I, ich1=\E[@$<4/>, - il1=\E[L$<3/>, ind=\E[S, invis=\E[=6;<5, + cub1=^H, cud1=\n, cuf1=\E[C, cuu1=\EM, dch1=\E[P$<4/>, + dl1=\E[M$<3/>, ed=\E[J, el=\E[K$<5/>, ht=^I, + ich1=\E[@$<4/>, il1=\E[L$<3/>, ind=\E[S, invis=\E[=6;<5, is2=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8 C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J, kcub1=\E[D, kcud1=\ED, kcuf1=\E[C, kcuu1=\EM, khome=\E[H, rev=\E[7m, ri=\E[T, - rmcup=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f, rmso=\E[m, - rmul=\E[m, sgr0=\E[m, smcup=\E[?6l\E[H\E[J, smso=\E[7m, - smul=\E[4m, tbc=\E[1g, + rmcup=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f, sgr0=\E[m, + smcup=\E[?6l\E[H\E[J, tbc=\E[1g, use=ansi+cup, + use=ansi+sgrso, use=ansi+sgrul, # From: <carolyn@dali.berkeley.edu> Thu Oct 31 12:54:27 1985 # (tek4404: There was a "\!" in <smcup> that I replaced with "\E!". @@ -20369,13 +20791,13 @@ tek4404|Tektronix 4404, OTbs, cols#80, it#8, lines#32, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, - dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\E[2I, - il1=\E[1L, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l, - rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sgr0=\E[m, + cuf1=\E[C, cuu1=\E[A, dch1=\E[P, dl1=\E[1M, ed=\E[J, el=\E[K, + ht=^I, hts=\E[2I, il1=\E[1L, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, + rmir=\E[4l, rmkx=\E[?1h, sgr0=\E[m, smcup=\E%\E!1\E[1;32r\E[?6l\E>, smir=\E[4h, - smkx=\E[?1l, smso=\E[7m, smul=\E[4m, use=ansi+csr, + smkx=\E[?1l, use=ecma+standout, use=ansi+csr, + use=ansi+cup, use=ansi+sgrul, # Some unknown person wrote: # I added the is string - straight Unix has ESC ; in the login @@ -20409,11 +20831,10 @@ tek4205|Tektronix 4205, colors#8, cols#80, it#8, lines#30, ncv#49, pairs#63, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[=7;<4m, cbt=\E[Z, - clear=\E[2J\E[H, cr=\r, cup=\E[%i%p1%d;%p2%dH, - dch1=\E[1P, dim=\E[=1;<6m, dl=\E[%p1%dM, dl1=\E[1M, - ech=\E%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[1L, - ind=\ED, + clear=\E[2J\E[H, cr=\r, dch1=\E[1P, dim=\E[=1;<6m, + dl=\E[%p1%dM, dl1=\E[1M, ech=\E%p1%dX, ed=\E[J, el=\E[K, + el1=\E[1K, enacs=\E)0, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, + il1=\E[1L, ind=\ED, initc=\E%%!0\ETF4%?%p1%{0}%=%t0%e%p1%{1}%=%t4%e%p1%{2}%=%t3 %e%p1%{3}%=%t5%e%p1%{4}%=%t2%e%p1%{5}%=%t6%e%p1%{6}%= %t7%e1%;%?%p2%{125}%<%t0%e%p2%{250}%<%tA2%e%p2%{375}%< @@ -20431,7 +20852,7 @@ tek4205|Tektronix 4205, oc=\E%!0\ETFB000001F4F4F42F40030F404A4C<F450F4F46F40F47F4F40 \E%!1, op=\E[39;40m, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=, - rmir=\E[4l, rmso=\E[=0;<1m, rmul=\E[24m, + rmir=\E[4l, rmso=\E[=0;<1m, setb=\E[=%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1 %{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m %e1m%;, @@ -20440,7 +20861,8 @@ tek4205|Tektronix 4205, %e1m%;, sgr0=\E[=0;<1m\E[24;25;27m\017, smacs=^N, smcup=\E%%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m, - smul=\E[4m, tbc=\E[1g, use=ansi+local, + smul=\E[4m, tbc=\E[1g, use=ecma+underline, use=ansi+cup, + use=ansi+local, #### Teletype (tty) # @@ -20587,18 +21009,16 @@ ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX, cols#80, it#8, lines#24, acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x \263, - bel=^G, clear=\Ec, cr=\r, cup=\E[%i%p1%d;%p2%dH, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, - hpa=\E[%i%p1%dG, ind=\E[S\E[B, indn=\E[%p1%dS\E[%p1%dB, - invis=\E[30;40m, kcbt=^], kdch1=^?, kend=\E[Y, kf1=\240, - kf10=\251, kf2=\241, kf3=\242, kf4=\243, kf5=\244, kf6=\245, - kf7=\246, kf8=\247, kf9=\250, kich1=\E[^H, knp=\E[U, - kpp=\E[V, ll=\E[24;1H, nel=\r, rev=\E[7m, ri=\E[T\E[A, - rin=\E[%p1%dT\E[%p1%dA, + bel=^G, clear=\Ec, cr=\r, ech=\E[%p1%dX, hpa=\E[%i%p1%dG, + ind=\E[S\E[B, indn=\E[%p1%dS\E[%p1%dB, invis=\E[30;40m, + kcbt=^], kdch1=^?, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241, + kf3=\242, kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247, + kf9=\250, kich1=\E[^H, knp=\E[U, kpp=\E[V, ll=\E[24;1H, + nel=\r, ri=\E[T\E[A, rin=\E[%p1%dT\E[%p1%dA, sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 %;%?%p7%t30;40%;m, - sgr0=\E[m, use=ansi+arrows, use=ansi+local, - use=ansi+sgrbold, + sgr0=\E[m, use=ansi+arrows, use=ansi+cup, use=ansi+erase, + use=ansi+local, use=ansi+sgrbold, #### Apple II # @@ -20770,12 +21190,11 @@ lisa|Apple Lisa console display (black on white), OTbs, am, eo, msgr, cols#88, it#8, lines#32, acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L, - cnorm=\E[5l, cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, - il1=\E[L, is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smacs=\E[11m, smso=\E[7m, smul=\E[4m, - use=ansi+local1, + cnorm=\E[5l, cub1=^H, dch1=\E[P, ed=\E[J, el=\E[K, ht=^I, + ich1=\E[@, is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, sgr0=\E[m, + smacs=\E[11m, use=ansi+cup, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, use=ansi+sgrul, liswb|Apple Lisa console display (white on black), is2=\E>\E[0;7m\014, rmso=\E[0;7m, rmul=\E[0;7m, smso=\E[m, smul=\E[4m, use=lisa, @@ -20795,14 +21214,14 @@ lisaterm|Apple Lisa or Lisa/2 running LisaTerm VT100 emulation, OTbs, OTpt, am, xenl, xon, OTkn#4, cols#80, it#8, lines#24, vt#3, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP, kf1=\EOQ, - kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, rev=\E[7m, - ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + cub1=^H, cud1=\n, ed=\E[J, el=\E[K, ht=^I, hts=\EH, ind=\n, + kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, + lf3=F4, rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r, - sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, use=ansi+csr, use=ansi+local, + sgr0=\E[m, smkx=\E[?1h\E=, tbc=\E[3g, use=ansi+csr, + use=ansi+cup, use=ansi+local, use=ansi+sgrso, + use=ansi+sgrul, # Lisaterm in 132 column ("wide") mode. lisaterm-w|Apple Lisa with Lisaterm in 132 column mode, @@ -20894,15 +21313,14 @@ amiga|Amiga ANSI, OTbs, am, bw, xenl, cols#80, lines#24, acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z, - civis=\E[0 p, cnorm=\E[ p, cup=\E[%i%p1%d;%p2%dH, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, home=\E[H, - ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m, + civis=\E[0 p, cnorm=\E[ p, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m, is2=\E[20l, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~, kf3=\E[2~, kf4=\E[3~, kf5=\E[4~, kf6=\E[5~, kf7=\E[6~, kf8=\E[7~, - kf9=\E[8~, rev=\E[7m, ri=\E[T, rmacs=^O, rmso=\E[m, - rmul=\E[m, rs1=\Ec, sgr0=\E[m, smacs=^N, smso=\E[7m, - smul=\E[4m, use=ansi+erase, use=ansi+idl, use=ansi+local, + kf9=\E[8~, rev=\E[7m, ri=\E[T, rmacs=^O, rs1=\Ec, sgr0=\E[m, + smacs=^N, use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, use=ecma+index, # From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995 @@ -20957,13 +21375,14 @@ amiga-vnc|Amiga using VNC console (black on light gray), kf8=\E[7~, kf9=\E[8~, khlp=\E[?~, khome=\E[44~, kll=\E[45~, kmous=\E[M, knp=\E[42~, kpp=\E[41~, nel=\EE, oc=\E[0m, rev=\E[7m, ri=\EM, rmcup=\E[?7h\E[r\E[J, rmkx=\E[?1l, - rmso=\E[21m, rmul=\E[24m, rs1=\Ec, + rmso=\E[21m, rs1=\Ec, rs2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h, setab=\E[%?%p1%{8}%>%t%'F'%p1%+%d%e4%p1%d%;m, setaf=\E[%?%p1%{8}%>%t%'2'%p1%+%d%e3%p1%d%;m, sgr0=\E[0m\017\E[30;85;>15m, smcup=\E[?7h, smkx=\E[?1h, - smso=\E[1m, smul=\E[4m, use=ansi+arrows, use=ansi+erase, - use=ansi+local, use=ecma+index, + smso=\E[1m, smul=\E[4m, use=ecma+underline, + use=ansi+arrows, use=ansi+erase, use=ansi+local, + use=ecma+index, # MorphOS on Genesi Pegasos # By Pavel Fedin <sonic_amiga@rambler.ru> @@ -21068,24 +21487,22 @@ osexec|Osborne executive, # See # https://web.archive.org/web/20120703021949/http://www.minix3.org/manpages/html4/console.html minix|minix console (v3), - NQ, acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v \301w\302x\263y\363z\362{\343|\330}\234~\376, - kdch1=^?, kend=\E[Y, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~, + kdch1=^?, kend=\E[Y, kf0=\E[21~, kf10=\E[21~, kf11=\E[11;2~, kf12=\E[12;2~, kf13=\E[13;2~, kf14=\E[14;2~, kf15=\E[15;2~, kf16=\E[17;2~, - kf17=\E[18;2~, kf18=\E[19;2~, kf19=\E[20;2~, kf2=\E[12~, + kf17=\E[18;2~, kf18=\E[19;2~, kf19=\E[20;2~, kf20=\E[21;2~, kf21=\E[11;5~, kf22=\E[12;5~, kf23=\E[13;5~, kf24=\E[14;5~, kf25=\E[15;5~, kf26=\E[17;5~, kf27=\E[18;5~, kf28=\E[19;5~, - kf29=\E[20;5~, kf3=\E[13~, kf30=\E[21;5~, kf31=\E[11;6~, + kf29=\E[20;5~, kf30=\E[21;5~, kf31=\E[11;6~, kf32=\E[12;6~, kf33=\E[13;6~, kf34=\E[14;6~, kf35=\E[15;6~, kf36=\E[17;6~, kf37=\E[18;6~, - kf38=\E[19;6~, kf39=\E[20;6~, kf4=\E[14~, kf40=\E[21;6~, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - kich1=\E[@, knp=\E[U, kpp=\E[V, lf0@, lf1@, lf2@, lf3@, lf4@, lf5@, - use=minix-3.0, + kf38=\E[19;6~, kf39=\E[20;6~, kf40=\E[21;6~, kich1=\E[@, + knp=\E[U, kpp=\E[V, lf0@, lf1@, lf2@, lf3@, lf4@, lf5@, + use=xterm+r5+fkeys, use=minix-3.0, minix-3.0|minix console (v3.0), use=ecma+color, use=minix-1.7, @@ -21102,12 +21519,12 @@ minix-old|minix-1.5|minix console (v1.5), xon, NQ, cols#80, it#8, lines#25, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r, - cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - ed=\E[0J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, ind=\n, kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, - kf4=\E[S, kf5=\E[G, nel=\r\n, rev=\E[7m, ri=\EM, rmso=\E[0m, - rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m, - use=ansi+arrows, use=ansi+idl, use=ansi+local, + cub1=^H, dch=\E[%p1%dP, dch1=\E[P, ed=\E[0J, el=\E[K, ht=^I, + ich=\E[%p1%d@, ich1=\E[@, ind=\n, kf0=\E[Y, kf1=\E[V, + kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G, nel=\r\n, rev=\E[7m, + ri=\EM, rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, + smul=\E[4m, use=ansi+arrows, use=ansi+cup, use=ansi+idl, + use=ansi+local, # The linewrap option can be specified by editing /usr/include/minix/config.h # before recompiling the minix 1.5 kernel. @@ -21161,15 +21578,14 @@ mai|basic4|MAI Basic Four in ANSI mode, cols#82, it#8, lines#25, bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h, cr=\r, cub1=^H, cud1=\n, cuf1=^X, cup=\E[%i%p1%d;%p2%dH, - cuu1=^Z, cvvis=\E[?7l, dch1=\E[1P, dl1=\E[M, ed=^_, el=^^, - home=^], ht=^I, if=/usr/share/tabset/vt100, il1=\E[L, - ind=\ED, + cuu1=^Z, cvvis=\E[?7l, dch1=\E[1P, ed=^_, el=^^, home=^], + ht=^I, if=/usr/share/tabset/vt100, ind=\ED, is2=\E>\E[?1h\E[?7h\E[?5l\017\E(B\E[m\E[20l\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, - kf7=\EOV, kf8=\EOW, nel=\r\ED, rev=\E[7m, ri=\E[T, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smir=\E[4h, - smso=\E[7m, smul=\E[4m, use=ansi+csr, + kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, nel=\r\ED, rev=\E[7m, + ri=\E[T, rmir=\E[4l, sgr0=\E[m, smir=\E[4h, use=ansi+csr, + use=ansi+idl1, use=ansi+sgrso, use=ansi+sgrul, + use=vt100+pf1-pf4, # basis from Peter Harrison, Computer Graphics Lab, San Francisco # ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA @@ -21221,18 +21637,17 @@ m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'infor cols#80, it#8, lines#24, wsl#72, xmc#0, acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[<1h, cnorm=\E[<1l, cr=\r, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - flash=^G, fsl=\n, home=\E[H, ht=^I, ind=\n, ip=$<7/>, - is1=\E:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0, + dch=\E[%p1%dP, dch1=\E[P, flash=^G, fsl=\n, ht=^I, ind=\n, + ip=$<7/>, is1=\E:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0, is3=\E[?3l, kclr=\E[2J, kdch1=\E[P, kdl1=\E[M, kf0=\EOp, kf1=\EOq, kf10=\EOp, kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H, mc0=\E[i, nel=\r\n, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E[?4l\E[12h, - rs2=\Ec\E)0, sgr0=\E[m, smacs=^N, smir=\E[4h, smso=\E[7m, - smul=\E[4m, tsl=^_@A, use=ansi+arrows, use=ansi+cpr, - use=ansi+csr, use=ansi+erase, use=ansi+idl, + rs1=\Ec\E[?4l\E[12h, rs2=\Ec\E)0, sgr0=\E[m, smacs=^N, + smir=\E[4h, tsl=^_@A, use=ecma+underline, + use=ecma+standout, use=ansi+arrows, use=ansi+cpr, + use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl, use=ansi+local, # From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998, updated 19 Sep 2016 @@ -21310,15 +21725,13 @@ minitel1b-80|minitel 1-bistandard (standard teleinformatique), kf22=\EOP#, kf23@, kf24@, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khlp=\EOm, knp=\EOn, kpp=\EOR, krfr=\EOS, lf1@, lf2@, lf3@, lf4@, lf5@, lf6@, nel=\EE, - op@, rc=\E8, rep@, rev=\E[7m, ri=\EM, rmkx@, rmso=\E[27m, - rmul=\E[24m, + op@, rc=\E8, rep@, rev=\E[7m, ri=\EM, rmkx@, rs2=\036\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[ H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M \E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2 M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[ 2M\E[H\E[J\E[m, sc=\E7, setab@, setaf@, setb@, setf@, sgr@, sgr0=\E[m, smkx@, - smso=\E[7m, smul=\E[4m, tsl=\037@%?%p1%{63}%<%t%p1%'A'%+%c%e\177%p1%{62}%-%Pa%?%ga %{1}%&%t\011%;%?%ga%{2}%&%t\011\011%;%?%ga%{4}%&%t\011 \011\011\011%;%?%ga%{07}%>%t\011\011\011\011\011\011 @@ -21339,7 +21752,7 @@ minitel1b-80|minitel 1-bistandard (standard teleinformatique), \365o\,\366o\,\372u\,\373u\,\374u\,\375y\,\377y\,\267.\, \327x\,\367/\,\261\E7\E[4m+\E8\E[C\,\,0\017%\016\,x|\,y \E7\E[4m<\E8\E[C\,z\E7\E[4m>\E8\E[C\,g\E7\E[4m+\E8\E[C, - use=minitel1b, + use=ecma+underline, use=ecma+standout, use=minitel1b, minitel1-nb|minitel 1 (40cols) noir & blanc sans couleurs avec bold et dim ..., colors@, pairs@, @@ -21455,8 +21868,8 @@ screen.minitel1b|Screen specific for minitel1b, screen.minitel1b-80|screen.minitel2-80|screen.minitel12-80|Screen specific for minitel1b-80 minitel2-80 and minitel12-80, colors@, ncv@, pairs@, bold=\E[1m, kent=\EOM, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, - kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, khlp=\EOm, op@, - rmul=\E[24m, setab@, setaf@, setb@, setf@, smul=\E[4m, + kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, khlp=\EOm, op@, setab@, + setaf@, setb@, setf@, use=ecma+underline, use=screen.minitel1b, screen.minitel1-nb|Screen specific for minitel1-nb, @@ -21472,7 +21885,7 @@ screen.minitel1b-nb|Screen specific for minitel1b-nb, # From: Alexandre Montaron, 29 Sep 2016 linux-m1|Linux Minitel 1 "like" Couleurs, - am, bw@, ccc, mir, msgr, xenl, + am, ccc, mir, msgr, xenl, it#8, ncv#16, acsc=a\261f\370g\361h\260j\274k\273l\311m\310n\316q\315t \314u\271v\312w\313x\272y\363z\362{\343|\252~\372, @@ -21484,20 +21897,14 @@ linux-m1|Linux Minitel 1 "like" Couleurs, %{255}%&%02X, is2=\E]R\E]P3FFFF80\E[?8c, ka1=\EOw, ka3=\EOy, kb2=\E[G, kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E^I, kclr=\E\r, - kdl1=\E\E[A, kent=\EOM, kf1=\E[[A, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, - kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khome=\E[1~, kil1=\E\E[B, kmous=\E[M, nel=\EE, - oc=\E]R\E]P3FFFF80, op=\E[39;49m, rev=\E[7m, ri=\EM, - rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmpch=\E[10m, - rmso=\E[27m, rs1=\Ec, rs3=\E[37;40m\E[8], sgr0=\E[m, - smacs=^N, smam=\E[?7h, smir=\E[4h, smpch=\E[11m, - smso=\E[7m, tbc=\E[3g, vpa=\E[%i%p1%dd, .VN=\E[?5l, - .VR=\E[?5h, .am@, .ich=\E[%p1%d@, .ich1=\E[@, .ll=\E[99H, - .rmcup=, .rmul=\E[24m, .smcup=\E]R\E]P3FFFF80\E[?8c, - .smul=\E[4m, + kdl1=\E\E[A, kent=\EOM, khome=\E[1~, kil1=\E\E[B, + kmous=\E[M, nel=\EE, oc=\E]R\E]P3FFFF80, op=\E[39;49m, + rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, + rmpch=\E[10m, rs1=\Ec, rs3=\E[37;40m\E[8], sgr0=\E[m, + smacs=^N, smam=\E[?7h, smir=\E[4h, smpch=\E[11m, tbc=\E[3g, + .VN=\E[?5l, .VR=\E[?5h, .am@, .ich=\E[%p1%d@, .ich1=\E[@, + .ll=\E[99H, .rmcup=, .smcup=\E]R\E]P3FFFF80\E[?8c, + .smul=\E[4m, .use=ecma+underline, E3=\E[99H\E[2J\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n @@ -21506,10 +21913,12 @@ linux-m1|Linux Minitel 1 "like" Couleurs, \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n, - use=ansi+arrows, use=ansi+csr, use=ansi+cup, - use=ansi+erase, use=ansi+idl, use=ansi+local1, - use=klone+color, use=vt220+pcedit, use=vt220+cvis, - use=linux+decid, + use=ecma+standout, use=ansi+arrows, use=ansi+csr, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local1, use=ansi+rca2, use=ansi+sgrso, + use=klone+color, use=linux+decid, use=linux+lockeys, + use=vt220+pcedit, use=vt220+cvis, use=vt220+sfkeys, + use=vt220+ufkeys, # 1. Using double-shapes for VT100 graphical chars (eg: mc). # 2. Native brown color corrected to good yellow color. @@ -21566,9 +21975,7 @@ linux-s|Linux console with added status line at bottom, screen.linux-m1|Linux m1 specific for screen, ncv@, - kclr=\E\r, kdl1=\E\E[A, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf20=\E[34~, kil1=\E\E[B, rmul@, smul@, + kclr=\E\r, kdl1=\E\E[A, kil1=\E\E[B, rmul@, smul@, u8=\E[?1;2c, E3=\E[99H\E[2J\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n @@ -21579,6 +21986,7 @@ screen.linux-m1|Linux m1 specific for screen, \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n, use=decid+cpr, use=xterm+x11mouse, use=screen, + use=vt220+sfkeys, screen.linux-m1b|Linux m1b specific for screen, colors@, pairs@, @@ -21592,33 +22000,33 @@ screen.linux-m2|Linux m2 specific for screen, # Putty : putty-m1|Putty Minitel 1 "like" Couleurs, - dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, - kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S, - use=xterm+alt47, use=putty+screen, use=xterm+sl-twm, - use=ecma+index, use=linux-m1, + dim@, .E3=\E[300S, use=ecma+underline, + use=xterm+r5+lockeys, use=xterm+alt47, + use=putty+screen, use=xterm+sl-twm, use=ecma+index, + use=linux-m1, putty-m1b|Putty Minitel 1B "like" Monochrome (Gris/Blanc/Noir), - dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, - kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S, - use=xterm+alt47, use=putty+screen, use=xterm+sl-twm, - use=ecma+index, use=linux-m1b, + dim@, .E3=\E[300S, use=ecma+underline, + use=xterm+r5+lockeys, use=xterm+alt47, + use=putty+screen, use=xterm+sl-twm, use=ecma+index, + use=linux-m1b, putty-m2|Putty Minitel 2 "like" Couleurs (Vert/Blanc/Noir), acsc=``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{ {||}}~~, - dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, - kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S, - use=xterm+alt47, use=putty+screen, use=xterm+sl-twm, - use=ecma+index, use=linux-m2, + dim@, .E3=\E[300S, use=ecma+underline, + use=xterm+r5+lockeys, use=xterm+alt47, + use=putty+screen, use=xterm+sl-twm, use=ecma+index, + use=linux-m2, putty+screen|PuTTY with screen resizing extensions (building-block), .WS=\E[8;%p1%d;%p2%dt, Z0=\E[?3h, Z1=\E[?3l, putty-screen|PuTTY with screen resizing extensions, - WS=\E[8;%p1%d;%p2%dt, Z0=\E[?3h, Z1=\E[?3l, use=putty, + WS=\E[8;%p1%d;%p2%dt, use=putty+screen, use=putty, screen.putty-m1|Putty m1 specific for screen, - dim@, rmul=\E[24m, smul=\E[4m, E3@, use=screen.linux-m1, + dim@, E3@, use=ecma+underline, use=screen.linux-m1, screen.putty-m1b|Putty m1b specific for screen, colors@, pairs@, @@ -21780,10 +22188,10 @@ bg2.0|bg3.10|BBN BitGraph 2.0 or later (no init), bel=^G, clear=\E[H\E[J$<150>, cr=\r, cub1=^H, cup=%i\E[%p1%d;%p2%dH, dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I, il1=\E[L$<2*>, ind=\n$<280>, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1, lf2=PF2, lf3=PF3, - lf4=PF4, rmkx=\E>, rmso=\E[m, sgr0=\E[m, smkx=\E=, - smso=\E[7m, use=ansi+csr, use=ansi+local1, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, lf1=PF1, + lf2=PF2, lf3=PF3, lf4=PF4, rmkx=\E>, sgr0=\E[m, smkx=\E=, + use=ansi+csr, use=ansi+local1, use=ansi+sgrso, + use=vt100+pf1-pf4, bg1.25rv|BBN BitGraph 1.25 (reverse video), flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, @@ -21798,8 +22206,8 @@ bg1.25|BBN BitGraph 1.25, cup=%i\E[%p1%d;%p2%dH, dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I, il1=\E[L$<2*>, ind=\n$<280>, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\ES, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, - ll=\E[64;1H, rmam=\E[?7l, rmkx=\E>, rmso=\E[m, sgr0=\E[m, - smam=\E[?7h, smkx=\E=, smso=\E[7m, use=ansi+local1, + ll=\E[64;1H, rmam=\E[?7l, rmkx=\E>, sgr0=\E[m, smam=\E[?7h, + smkx=\E=, use=ansi+local1, use=ansi+sgrso, use=vt52+arrows, #### Bull (bq, dku, vip) @@ -21870,14 +22278,14 @@ bg1.25|BBN BitGraph 1.25, # This entry covers the following terminals: # dku7102, tws2102, and tws models 2105 to 2112 tws-generic|dku7102|Bull Questar tws terminals, - am, eslok, hs, mir, msgr, xenl, xhp@, xon, + am, mir, msgr, xenl, xhp@, xon, cols#80, lines#24, wsl#80, acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~, bel=^G, blink=\E[0;5m, civis=\E[1r, clear=\E[2J, cnorm=\E[r, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%df, dch=\E[%p1%dP, dch1=\E[P, dim=\E[0;2m, - dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[v, fsl=\E[v, - home=\E[H, ht=\E[I, ind=\n, invis=\E[0;8m, + dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[v, fsl=\E[v, ht=\E[I, + ind=\n, invis=\E[0;8m, is1=\E[?=h\Ec\E`\E[?>h\EPY99:98\E\\, is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p, is3=\Eb\E[?<h, kcbt=\E[Z, kctab=\E[g, kdch1=\E[P, @@ -21893,8 +22301,9 @@ tws-generic|dku7102|Bull Questar tws terminals, sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99:98\E\\, smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tsl=\EPY99:98\E\\\E[0;98v\E[2;7m, use=ansi+arrows, - use=ansi+erase, use=ansi+idl, use=ansi+inittabs, - use=ansi+local, use=ansi+sgrdim, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+inittabs, use=ansi+local, use=ansi+sgrdim, + use=dec+sl, tws2102-sna|dku7102-sna|Bull Questar tws2102 for SNA, dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v, @@ -22000,23 +22409,21 @@ bq300|Bull VT320 ISO Latin 1 80 columns terminal, is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4 l, is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy, - kb2=\EOu, kc1=\EOq, kc3=\EOs, kf1=\EOP, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, - kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, - kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - khlp=\E[28~, krdo=\E[29~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, - nel=\EE, rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, - rmcup=\E[?7h, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, - rmul=\E[24m, rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, + kb2=\EOu, kc1=\EOq, kc3=\EOs, khlp=\E[28~, krdo=\E[29~, + lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, nel=\EE, rev=\E[7m, ri=\EM, + rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?7h, rmir=\E[4l, + rmkx=\E[?1l\E>, rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, + s1ds=\E(0, sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 %;m%?%p9%t\E(0%e\E(B%;, sgr0=\E[0m\E(B, smacs=\E(0, smam=\E[?7h, - smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smso=\E[7m, - smul=\E[4m, tsl=\E[1$}\E[2$~, use=ansi+enq, use=ansi+csr, + smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smul=\E[4m, + tsl=\E[1$}\E[2$~, use=ecma+underline, + use=ecma+standout, use=ansi+enq, use=ansi+csr, use=ansi+erase, use=ansi+idl, use=ansi+local, - use=ansi+pp, use=dec+sl, use=vt100+4bsd, use=vt220+cvis, - use=vt220+vtedit, + use=ansi+pp, use=dec+sl, use=vt100+4bsd, + use=vt100+pf1-pf4, use=vt220+cvis, use=vt220+vtedit, + use=vt220+sfkeys, use=vt220+ufkeys, bq300-rv|Bull VT320 reverse 80 columns, flash=\E[?5l$<50>\E[?5h, @@ -22469,11 +22876,10 @@ gigi|vk100|DEC gigi graphics terminal, bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, ht=^I, ind=\n, is2=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m, - smul=\E[4m, use=ansi+local, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H, + ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, sgr0=\E[m, + smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m, + use=ansi+local, use=ansi+sgrul, use=vt100+pf1-pf4, # DEC PRO-350 console (VT220-style). The 350 was DEC's attempt to produce # a PC differentiated from the IBM clones. It was a total, ludicrous, @@ -22534,8 +22940,7 @@ ln03|DEC ln03 laser printer, hc, cols#80, lines#66, bel=^G, cr=\r, cud1=\n, hd=\EK, ht=^I, hu=\EL, ind=\n, nel=\r\n, - rmso=\E[22m, rmul=\E[24m, sgr0=\E[m, smso=\E[1m, - smul=\E[4m, + rmso=\E[22m, sgr0=\E[m, smso=\E[1m, use=ecma+underline, ln03-w|DEC ln03 laser printer 132 cols, cols#132, kbs=^H, kcub1=^H, kcud1=\n, use=ln03, @@ -22567,13 +22972,13 @@ ddr|rebus3180|ddr3180|Rebus/DDR 3180 VT100 emulator, cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, rev=\E[7m$<2/>, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rev=\E[7m$<2/>, rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>, + rmkx=\E[?1l\E>, rmul=\E[m$<2/>, rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m$<2/>, use=ansi+csr, + sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, + smul=\E[4m$<2/>, use=ansi+csr, use=ansi+sgrso, + use=vt100+pf1-pf4, #### Evans & Sutherland # @@ -22644,15 +23049,16 @@ h19-a|h19a|heath-ansi|heathkit-a|Heathkit h19 ANSI mode, OTbs, am, mir, msgr, cols#80, it#8, lines#24, acsc=, bel=^G, clear=\E[2J, cnorm=\E[>4l, cr=\r, cub1=^H, - cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[1A, cvvis=\E[>4h, dch1=\E[1P, dl1=\E[1M$<1*>, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[1L$<1*>, ind=\n, + cud1=\E[1B, cuf1=\E[1C, cuu1=\E[1A, cvvis=\E[>4h, + dch1=\E[1P, dl1=\E[1M$<1*>, ed=\E[J, el=\E[K, ht=^I, + il1=\E[1L$<1*>, ind=\n, is2=\E<\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m\E[?7h, kbs=^H, kcub1=\E[1D, kcud1=\E[1B, kcuf1=\E[1C, kcuu1=\E[1A, kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, kf8=\EOR, khome=\E[H, lf6=blue, lf7=red, lf8=white, - ri=\EM, rmacs=\E[11m, rmam=\E[?7l, rmir=\E[4l, rmso=\E[m, - smacs=\E[10m, smam=\E[?7h, smir=\E[4h, smso=\E[7m, + ri=\EM, rmacs=\E[11m, rmam=\E[?7l, rmir=\E[4l, + smacs=\E[10m, smam=\E[?7h, smir=\E[4h, use=ansi+cup, + use=ansi+sgrso, h19-bs|Heathkit w/keypad shifted, rmkx=\Eu, smkx=\Et, use=h19-b, h19-us|h19us|h19-smul|Heathkit w/keypad shifted/underscore cursor, @@ -22758,18 +23164,19 @@ z29a|z29a-kc-bc|h29a-kc-bc|Heath/Zenith 29 in ANSI mode, OTkn#10, cols#80, it#8, lines#24, OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[1P, - dim=\E[2m, dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l, - home=\E[H, ht=^I, hts=\EH, if=/usr/share/tabset/vt100, - ind=\ED, kclr=\E[J, ked=\E[J, kf0=\E[~, kf1=\EOS, kf2=\EOT, - kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, kf8=\EOR, - kf9=\EOX, khome=\E[H, lf0=help, mc0=\E#7, nel=\r\ED, rc=\E[r, - rev=\E[7m, ri=\EM, rmcup=\E[?7h, rmso=\E[m, rmul=\E[m, + dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dsl=\E[>1l, ed=\E[J, + el=\E[K, fsl=\E[u\E[>5l, ht=^I, hts=\EH, + if=/usr/share/tabset/vt100, ind=\ED, kclr=\E[J, ked=\E[J, + kf0=\E[~, kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, + kf6=\EOP, kf7=\EOQ, kf8=\EOR, kf9=\EOX, khome=\E[H, lf0=help, + mc0=\E#7, nel=\r\ED, rc=\E[r, rev=\E[7m, ri=\EM, + rmcup=\E[?7h, rmso=\E[m, rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m \E[11m, - sc=\E[s, sgr0=\E[m, smcup=\E[?7l, smso=\E[7;2m, smul=\E[4m, - tbc=\E[3g, tsl=\E[s\E[>5;1h\E[25;%i%dH\E[1K, - use=ansi+apparrows, use=ansi+idl, use=ansi+local, + sc=\E[s, sgr0=\E[m, smcup=\E[?7l, smso=\E[7;2m, tbc=\E[3g, + tsl=\E[s\E[>5;1h\E[25;%i%dH\E[1K, use=ansi+apparrows, + use=ansi+cup, use=ansi+idl, use=ansi+local, + use=ansi+sgrul, z29a-kc-uc|h29a-kc-uc|Zenith z29 ANSI mode with keyclick and underscore cursor, rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11 @@ -22790,19 +23197,19 @@ z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode, acsc=0a``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[1Z, civis=\E[>5h, clear=\E[2J\E[H, cnorm=\E[>5l, cr=\r, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cup=\E[%i%p1%d;%p2%dH, - dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[1M, dsl=\E[>1l, ed=\E[0J, el=\E[0K, el1=\E[1K, - fsl=\E[u, home=\E[H, il=\E[%p1%dL, il1=\E[1L, ind=\n, - is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw, ka3=\EOu, - kb2=\EOy, kc1=\EOq, kc3=\EOs, ked=\E[J, kf1=\EOS, kf2=\EOT, - kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, kf8=\EOR, - kf9=\EOX, khlp=\E[~, ll=\E[24;1H, mc0=\E[?19h\E[i, rc=\E[u, - rev=\E[7m, rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m, - rmul=\E[0m, rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0, - smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m, + csr=\E[%i%p1%d;%p2%dr, cub1=^H, dch=\E[%p1%dP, + dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[>1l, + ed=\E[0J, el=\E[0K, el1=\E[1K, fsl=\E[u, il=\E[%p1%dL, + il1=\E[1L, ind=\n, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, + ka1=\EOw, ka3=\EOu, kb2=\EOy, kc1=\EOq, kc3=\EOs, ked=\E[J, + kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, + kf7=\EOQ, kf8=\EOR, kf9=\EOX, khlp=\E[~, ll=\E[24;1H, + mc0=\E[?19h\E[i, rc=\E[u, rev=\E[7m, rmacs=\E(B, + rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m, rmul=\E[0m, + rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0, smir=\E[4h, + smkx=\E[>7h, smso=\E[7m, smul=\E[4m, tsl=\E[s\E[>1h\E[25;%i%p1%dH, use=ansi+arrows, - use=ansi+local, use=ansi+pp, use=ansi+tabs, + use=ansi+cup, use=ansi+local, use=ansi+pp, use=ansi+tabs, # From: Brad Brahms <Brahms@USC-ECLC> z100|h100|z110|z-100|h-100|Heath/Zenith z-100 pc with color monitor, @@ -22921,13 +23328,12 @@ graphos|graphos III, am, mir, cols#80, it#8, lines#24, clear=\E[H\E[2J, cnorm=\Ez56;2;0;0z\Ez73z\Ez4;1;1z, - cr=\r, cub1=^H, cud=\E[%p1%dB, cup=\E[%i%p1%d;%p2%dH, - cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, ind=\ED, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l, + cr=\r, cub1=^H, cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, + ht=^I, ind=\ED, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l, rmir=\E[4l, sc=\E7, sgr0=\E[m, smdc=\E[4h, smir=\E[4h, - use=ansi+arrows, use=ansi+idl, use=ansi+local, - use=ansi+sgrso, + use=ansi+arrows, use=ansi+cup, use=ansi+erase, + use=ansi+idl, use=ansi+local, use=ansi+sgrso, + use=vt100+pf1-pf4, graphos-30|graphos III with 30 lines, lines#30, @@ -22992,15 +23398,13 @@ modgraph48|mod|Modgraph w/48 lines, OTbs, OTpt, am, xenl, cols#80, it#8, lines#48, vt#3, OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, - cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, ed=\E[J, el=\E[K, - flash=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q, - home=\E[H, ht=^I, is2=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h, - kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=\E=\E[0q\E>, - sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - use=ansi+csr, + cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cuu1=\E[A, ed=\E[J, + el=\E[K, flash=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q, + ht=^I, is2=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h, kbs=^H, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rev=\E[7m, + ri=\EM, rmkx=\E[?1l\E>, rs1=\E=\E[0q\E>, sgr0=\E[m, + smkx=\E[?1h\E=, use=ansi+csr, use=ansi+cup, + use=ansi+sgrso, use=ansi+sgrul, use=vt100+pf1-pf4, #### Morrow Designs # @@ -23087,13 +23491,12 @@ rt6221|Ramtek 6221 80x24, hts=\EH, ind=\n, is2=\E)0, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[24;1H, - nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>, rmso=\E[m, - rmul=\E[m, + nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>, rs1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h \E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E# 5\E>, - sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, use=ansi+csr, use=ansi+local, + sgr0=\E[m, smacs=^N, smkx=\E=, tbc=\E[3g, use=ansi+csr, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, # [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)]. rt6221-w|Ramtek 6221 160x48, @@ -23129,9 +23532,8 @@ rca|RCA vp3301/vp3501, hirez100|Selanar HiREZ-100, OTbs, OTpt, mir, msgr, xon, OTkn#4, cols#80, it#8, lines#48, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub=\E[%p1%dD, - cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, - dch=\E[%p1%dP, dch1=\E[P, home=\E[H, ht=^I, hts=\EH, + acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, + cud1=\n, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, ht=^I, hts=\EH, is2=\E<\E)0, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[48H, mc0=\E[i, @@ -23140,8 +23542,8 @@ hirez100|Selanar HiREZ-100, rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;1 9l\E[r\E[m\E(B\017\E)0\E>, sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, tbc=\E[3g, - use=ansi+erase, use=ansi+idl, use=ansi+local, - use=ansi+sgrso, use=ansi+sgrul, + use=ansi+cup, use=ansi+erase, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, hirez100-w|Selanar HiREZ-100 in 132-column mode, cols#132, use=hirez100, @@ -23154,9 +23556,9 @@ vsc|Signetics Vsc Video driver by RMC, am, msgr, cols#80, it#8, lines#26, clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rev=^_\s, - rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_", + cuu1=\E[A, el=\E[K, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, + nel=\r\n, rev=^_\s, rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, + smul=^_", use=ansi+cup, #### Soroc # @@ -23278,14 +23680,14 @@ synertek|ktm|synertek380|Synertek KTM 3/80 tubeless terminal, # https://ub.fnwi.uva.nl/computermuseum/tab13215g.html # This monochrome graphics terminal of TAB Products, California, is a DEC # VT52/VT100/VT132 compatible alphanumeric terminal (TAB 132/15), -# factory-fitted with additional hardware for Tektronix 4010 emulation. -# Also the terminal understands a selection of Tektronix 4027 commands. +# factory-fitted with additional hardware for Tektronix 4010 emulation. +# Also the terminal understands a selection of Tektronix 4027 commands. tab132|tab|tab132-15|tab 132/15, da, db, OTdN@, lm#96, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, il1=\E[L, + cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, is2=\E[?7h\E[?3l\E[?5l, rmir=\E[4l, rmkx@, smir=\E[4h, - smkx@, use=decid+cpr, use=vt100+4bsd, + smkx@, use=ansi+idl1, use=decid+cpr, use=vt100+4bsd, tab132-w|tab132 in wide mode, cols#132, is2=\E[?7h\E[?3h\E[?5l, use=tab132, @@ -23340,7 +23742,7 @@ t1061f|Teleray 1061 with fast PROMs, # "Teleray Arpa Special", officially designated as # "Teleray Arpa network model 10" with "Special feature 720". # This is the new (1981) fast microcode updating the older "arpa" proms -# (which gave meta-key and programmable-fxn keys). 720 is much much faster, +# (which gave meta-key and programmable-fxn keys). 720 is much, much faster, # converts the keypad to programmable function keys, and has other goodies. # Standout mode is still broken (magic cookie, etc) so is suppressed as no # programs handle such lossage properly. @@ -23364,13 +23766,12 @@ t16|Teleray 16, am, da, db, mir, xhp, xt, cols#80, lines#24, bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, - cup=%i\E[%p1%d;%p2%df, dch1=\E[P, dl1=\E[M, ed=\E[0J, - el=\E[0K, home=\E[H, ht=^I, il1=\E[L, ind=\n, kf1=^Z1, - kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7, - kf8=^Z8, kf9=^Z9, ri=\E[T, rmcup=\E[V\E[24;1f\E[?38h, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smcup=\E[U\E[?38l, smir=\E[4h, smso=\E[7m, smul=\E[4m, - use=ansi+local1, + cup=%i\E[%p1%d;%p2%df, dch1=\E[P, ed=\E[0J, el=\E[0K, + home=\E[H, ht=^I, ind=\n, kf1=^Z1, kf10=^Z0, kf2=^Z2, kf3=^Z3, + kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7, kf8=^Z8, kf9=^Z9, ri=\E[T, + rmcup=\E[V\E[24;1f\E[?38h, rmir=\E[4l, sgr0=\E[m, + smcup=\E[U\E[?38l, smir=\E[4h, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, use=ansi+sgrul, #### Texas Instruments (ti) # @@ -23410,15 +23811,14 @@ ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 VT220 mode 7 bit CTRL, da, db, in, cbt=\E[Z, clear=\E[H\E[2J$<6>, dch=\E[%p1%dP$<250>, ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K, - enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>, - hpa=\E[%p1%{1}%+%dG, hts=\E[0W, ich=\E[%p1%d@$<250>, - il=\E[%p1%dL$<36>, ip=$<10>, is2=\E[1;24r\E[24;1H, - kcmd=\E[29~, kdch1=\E[P, kent=\n, kf1=\E[17~, kf10=\E[28~, - kf11=\E[29~, kf12=\E[31~, kf2=\E[18~, kf3=\E[19~, - kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, - kf9=\E[26~, khome=\E[H, kich1=\E[@, knp=\E[S, kpp=\E[T, - kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p, sgr@, - smacs=\016$<2>, vpa=\E[%p1%{1}%+%dd, use=vt220, + enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>, hts=\E[0W, + ich=\E[%p1%d@$<250>, il=\E[%p1%dL$<36>, ip=$<10>, + is2=\E[1;24r\E[24;1H, kcmd=\E[29~, kdch1=\E[P, kent=\n, + kf1=\E[17~, kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, + kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, + kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khome=\E[H, kich1=\E[@, + knp=\E[S, kpp=\E[T, kprt=^X, prot=\E&, rmacs=\017$<2>, + rs2=\E[!p, sgr@, smacs=\016$<2>, use=ansi+rca, use=vt220, # # Texas Instruments 916 VDT 8 bit control mode # @@ -23444,25 +23844,25 @@ ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL, cols#80, it#8, lines#24, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, cr=\r, csr=%i\E[%p1%d;%p2%dr, cup=%i\E[%p1%d;%p2%dH, - cvvis=\E[?31h, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - hts=\EH, il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~, + cvvis=\E[?31h, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, + ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kdch1=\E[P, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kich1=\E[@, rc=\E8, rev=\E[7m, - ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=ansi+local1, use=vt220+cvis, + ri=\EM, sc=\E7, sgr0=\E[m, tbc=\E[3g, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, use=ansi+sgrul, + use=vt100+pf1-pf4, use=vt220+cvis, ti924-8|Texas Instruments 924 VDT 8859/1 8 bit CTRL, am, xon, cols#80, it#8, lines#24, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, cr=\r, csr=%i\E[%p1%d;%p2%dr, cup=%i\E[%p1%d;%p2%dH, - cvvis=\E[?31h, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - hts=\EH, il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\233P, kf1=\217P, kf2=\217Q, - kf3=\217R, kf4=\217S, kf5=\23316~, kf6=\23317~, - kf7=\23318~, kf8=\23319~, kf9=\23320~, kich1=\233@, rc=\E8, - rev=\E[7m, ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+local1, + cvvis=\E[?31h, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, + ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kdch1=\233P, kf1=\217P, kf2=\217Q, kf3=\217R, + kf4=\217S, kf5=\23316~, kf6=\23317~, kf7=\23318~, + kf8=\23319~, kf9=\23320~, kich1=\233@, rc=\E8, rev=\E[7m, + ri=\EM, sc=\E7, sgr0=\E[m, tbc=\E[3g, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, use=ansi+sgrul, use=vt220+cvis, ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode, cols#132, use=ti924, @@ -23489,14 +23889,14 @@ ti_ansi|basic entry for ti928, am, bce, eo, xenl, xon, colors#8, cols#80, it#8, lines#25, pairs#64, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H, - cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S, - kend=\E[F, kf0=\E[V, kf1=\E[M, kf2=\E[N, kf3=\E[O, kf4=\E[P, - kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, knp=\E[G, - kpp=\E[I, op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m, - smso=\E[7m, smul=\E[4m, use=ansi+arrows, use=ansi+local1, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, dch1=\E[P, ed=\E[J, + el=\E[K, ht=^I, ich1=\E[@, ind=\E[S, kend=\E[F, kf0=\E[V, + kf1=\E[M, kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, + kf7=\E[S, kf8=\E[T, kf9=\E[U, knp=\E[G, kpp=\E[I, + op=\E[37;40m, ri=\E[T, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, sgr0=\E[m, use=ansi+arrows, + use=ansi+cup, use=ansi+idl1, use=ansi+local1, + use=ansi+sgrso, use=ansi+sgrul, # # 928 VDT 7 bit control mode # @@ -23599,20 +23999,19 @@ att6386|at386|386at|AT&T WGS 6386 console, cols#80, lines#25, acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, bel=^G, civis=\E[=C, clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S, invis=\E[9m, - is2=\E[0;10;39m, kcbt=^], kdch1=\E[P, kend=\E[Y, kf1=\EOP, - kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, - kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S, - rc=\E8, ri=\E[T, rmacs=\E[10m, sc=\E7, + is2=\E[0;10;39m, kcbt=^], kdch1=\E[P, kend=\E[Y, kf10=\EOY, + kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, + kf9=\EOX, kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, + nel=\r\E[S, rc=\E8, ri=\E[T, rmacs=\E[10m, sc=\E7, sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t; 2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m, - sgr0=\E[0;10m, smacs=\E[12m, vpa=\E[%i%p1%dd, - use=ansi+arrows, use=ansi+inittabs, use=ansi+local, - use=ansi+sgrbold, use=ecma+index, use=klone+color, + sgr0=\E[0;10m, smacs=\E[12m, use=ansi+arrows, + use=ansi+cup, use=ansi+inittabs, use=ansi+local, + use=ansi+rca2, use=ansi+sgrbold, use=ecma+index, + use=klone+color, use=vt100+pf1-pf4, # (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr) pc6300plus|AT&T 6300 plus, @@ -23625,9 +24024,9 @@ pc6300plus|AT&T 6300 plus, ich1=\E[1@, il1=\E[1L, ind=\n, invis=\E[9m, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOc, kf10=\EOu, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, - kf7=\EOi, kf8=\EOj, kf9=\EOk, nel=\r\n, rev=\E[7m, rmso=\E[m, - rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - use=ansi+local1, + kf7=\EOi, kf8=\EOj, kf9=\EOk, nel=\r\n, rev=\E[7m, sgr0=\E[m, + tbc=\E[3g, use=ansi+local1, use=ansi+sgrso, + use=ansi+sgrul, # From: Benjamin C. W. Sittler <bsittler@nmt.edu> # @@ -23674,7 +24073,7 @@ pc6300plus|AT&T 6300 plus, # programs expecting VT100 graphics will usually be disappointed. For this # reason I have disabled the smacs/rmacs sequences, but they could easily be # re-enabled. Here are the relevant control sequences (from the ESCAPE(7) -# manpage), should you wish to do so: +# man page), should you wish to do so: # # SGR10 - Select font 0 - ESC [ 10 m or SO # SGR11 - Select font 1 - ESC [ 11 m or SI @@ -23750,25 +24149,24 @@ att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300, am, xon, cols#80, it#8, lines#24, bel=^G, blink=\E[9m, bold=\E[1m, cbt=\E^I, civis=\E[=1C, - clear=\E[2J\E[H, cnorm=\E[=0C, cr=\r, cub1=^H, - cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dim=\E[2m, ed=\E[0J, - el=\E[0K, home=\E[H, ich1=\E[@, ind=\n, invis=\E[9m, - is1=\017\E[=1w, kBEG=\ENB, kCAN=\EOW, kCPY=\END, kCRT=\EON, - kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kFND=\EOX, - kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK, kMOV=\ENC, - kNXT=\ENH, kOPT=\EOR, kPRV=\ENG, kRDO=\EOT, kRIT=\ENL, - kRPL=\EOY, kSAV=\EOO, kUND=\EOS, kbeg=\ENb, kcan=\EOw, - kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, - kcrt=\EOn, kdch1=\ENf, ked=\E[J, kel=\EOa, kend=\E0, - kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm, - kich1=\ENj, kind=\E[B, kmov=\ENc, kmrk=\ENi, knp=\E[U, - knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V, kprt=\EOz, - kprv=\ENg, krdo=\EOt, kref=\EOb, krfr=\ENa, kri=\E[A, - krpl=\EOy, krst=\EOB, ksav=\EOo, kslt=\ENI, kund=\EOs, - nel=\EE, rev=\E[7m, ri=\EM, rmso=\E[m, rmul=\E[m, - sgr0=\E[0;10m, smso=\E[7m, smul=\E[4m, use=ansi+arrows, - use=ansi+idl, use=ansi+local, + clear=\E[2J\E[H, cnorm=\E[=0C, cr=\r, cub1=^H, dch1=\E[P, + dim=\E[2m, ed=\E[0J, el=\E[0K, ich1=\E[@, ind=\n, + invis=\E[9m, is1=\017\E[=1w, kBEG=\ENB, kCAN=\EOW, + kCPY=\END, kCRT=\EON, kDC=\ENF, kDL=\ENE, kEND=\ENN, + kEOL=\EOA, kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, + kLFT=\ENK, kMOV=\ENC, kNXT=\ENH, kOPT=\EOR, kPRV=\ENG, + kRDO=\EOT, kRIT=\ENL, kRPL=\EOY, kSAV=\EOO, kUND=\EOS, + kbeg=\ENb, kcan=\EOw, kcbt=\E[Z, kclo=\EOV, kclr=\E[J, + kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, kdch1=\ENf, ked=\E[J, + kel=\EOa, kend=\E0, kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, + kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, + khlp=\EOm, kich1=\ENj, kind=\E[B, kmov=\ENc, kmrk=\ENi, + knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V, + kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, krfr=\ENa, + kri=\E[A, krpl=\EOy, krst=\EOB, ksav=\EOo, kslt=\ENI, + kund=\EOs, nel=\EE, rev=\E[7m, ri=\EM, sgr0=\E[0;10m, + use=ansi+arrows, use=ansi+cup, use=ansi+idl, + use=ansi+local, use=ansi+sgrso, use=ansi+sgrul, #### Convergent Technology # @@ -23865,10 +24263,10 @@ masscomp|masscomp workstation console, OTbs, km, mir, cols#80, it#8, lines#24, clear=\E[2J, cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, - dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, il1=\E[L, - is2=\EGc\EGb\EGw, kbs=^H, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l, rmso=\E[m, rmul=\EGau, - smir=\E[4h, smso=\E[7m, smul=\EGu, use=ansi+local1, + ed=\E[J, el=\E[K, ht=^I, is2=\EGc\EGb\EGw, kbs=^H, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l, + rmul=\EGau, smir=\E[4h, smul=\EGu, use=ansi+idl1, + use=ansi+local1, use=ansi+sgrso, masscomp1|masscomp large screen version 1, cols#104, lines#36, use=masscomp, masscomp2|masscomp large screen version 2, @@ -23883,7 +24281,7 @@ pmcons|pmconsole|PMAX console, cols#128, lines#57, bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuu1=^K, ht=^I, ind=\n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, + use=vt100+pf1-pf4, #### Other consoles # The following is a version of the ibm-pc entry distributed with PC/IX, @@ -23897,8 +24295,8 @@ pcix|PC/IX console, am, bw, eo, cols#80, lines#24, clear=\Ec, cub1=^H, cup=\E[%i%p1%2d;%p2%2dH, ed=\E[J, - el=\E[K, home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smso=\E[7m, smul=\E[4m, use=ansi+local1, + el=\E[K, home=\E[H, sgr0=\E[m, use=ansi+local1, + use=ansi+sgrso, use=ansi+sgrul, # (ibmpcx: this entry used to be known as ibmx. # It formerly included the following extension capabilities: @@ -23914,11 +24312,11 @@ pcix|PC/IX console, ibmpcx|xenix|ibmx|IBM PC xenix console display, OTbs, am, msgr, cols#80, lines#25, - clear=^L, cub1=^H, cup=\E[%p1%d;%p2%dH, dch1=\E[P, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, - kend=\E[d, kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, - khome=\E[Y, knp=\E[e, kpp=\E[Z, use=ansi+arrows, - use=ansi+local1, use=klone+acs, use=klone+sgr8, + clear=^L, cub1=^H, cup=\E[%p1%d;%p2%dH, dch1=\E[P, ed=\E[J, + el=\E[K, home=\E[H, ich1=\E[@, kend=\E[d, kf1=\E[K, kf2=\E[L, + kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e, kpp=\E[Z, + use=ansi+arrows, use=ansi+idl1, use=ansi+local1, + use=klone+acs, use=klone+sgr8, ######## OTHER OBSOLETE TYPES # @@ -23995,16 +24393,15 @@ gs6300|emots|AT&T PC6300 with EMOTS terminal emulator, acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyz z{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n, - cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\n, is2=\E[m, - kcbt=^R^I, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s, kf4=\E[23s, - kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s, mc4=\E[4i, - mc5=\E[5i, op=\E[?;m, rev=\E[7m, ri=\E[L, rmacs=\E[10m, - rs1=\Ec, setb=\E[?;%p1%dm, + dch=\E[%p1%dP, dch1=\E[P, ht=^I, ich=\E[%p1%d@, ich1=\E[@, + ind=\n, is2=\E[m, kcbt=^R^I, kf1=\E[0s, kf2=\E[24s, + kf3=\E[1s, kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, + kf8=\E[21s, mc4=\E[4i, mc5=\E[5i, op=\E[?;m, rev=\E[7m, + ri=\E[L, rmacs=\E[10m, rs1=\Ec, setb=\E[?;%p1%dm, setf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m, sgr0=\E[m\E[10m, smacs=\E[11m, smso=\E[1m, smul=\E[4m, - use=ansi+arrows, use=ansi+erase, use=ansi+idl, - use=ansi+local, + use=ansi+arrows, use=ansi+cup, use=ansi+erase, + use=ansi+idl, use=ansi+local, # From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT # MS-Kermit with Heath-19 emulation mode enabled @@ -24028,11 +24425,11 @@ versaterm|VersaTerm VT100 emulator for the Macintosh, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I, ich1=\E[1@$<7/>, il1=\E[1L$<9/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\n, - rev=\E[7m$<2/>, rf=/usr/share/tabset/vt100, + nel=\r\n, rev=\E[7m$<2/>, rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmkx=\E>\E[?1l, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+csr, + use=vt100+pf1-pf4, # From: Rick Thomas <ihnp4!btlunix!rbt> # (xtalk: I added <rmam>/<smam> based on the init string. @@ -24202,10 +24599,10 @@ d800|Direct 800/A, bel=^G, clear=\E[1;1H\E[2J, cnorm=\E[>12h, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[>12l, ed=\E[J, el=\E[K, ht=^I, ind=\ED, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, - ri=\EM, rmacs=\E[m, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smacs=\E[1m, smso=\E[7m, smul=\E[4m, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf5=\EOT, kf6=\EOU, + kf7=\EOV, kf8=\EOW, ri=\EM, rmacs=\E[m, sgr0=\E[m, + smacs=\E[1m, use=ansi+sgrso, use=ansi+sgrul, + use=vt100+pf1-pf4, digilog|digilog 333, OTbs, cols#80, lines#16, @@ -24325,14 +24722,14 @@ teletec|Teletec Datascreen, v3220|LANPAR Vision II model 3220/3221/3222, OTbs, am, mir, xenl, cols#80, it#8, lines#24, - cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ht=^I, - il1=\E[L, is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, - kf2=\E[3~, kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, - kf7=\E[OQ, kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m, - smul=\E[4m, use=ansi+erase, use=ansi+local1, + cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, ht=^I, + is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, kf2=\E[3~, + kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, kf7=\E[OQ, + kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, rmam=\E[?7l, + rmir=\E[4l, rmkx=\E>, sgr0=\E[m, smam=\E[?7h, smir=\E[4h, + smkx=\E=, use=ansi+erase, use=ansi+idl1, use=ansi+local1, + use=ansi+sgrso, use=ansi+sgrul, ######## ICH/ICH1 VERSUS RMIR/SMIR # # Some non-curses applications get confused if both ich/ich1 and rmir/smir @@ -25121,7 +25518,7 @@ v3220|LANPAR Vision II model 3220/3221/3222, # SGR 39/49 reset the terminal's foreground and background colors to their # "default". # -# XT is harder, since screen's manpage does not give more details. For that, +# XT is harder, since screen's man page does not give more details. For that, # we must read screen's source-code. For example, when XT is set, screen # assumes # @@ -26061,7 +26458,7 @@ v3220|LANPAR Vision II model 3220/3221/3222, # * add mgterm, from NetBSD -TD # * add alias sun-cgsix for sun-ss5 as per NetBSD # * change cons25w to use rs2 for reset rather than rs1 -TD -# * add rc/sc to aixterm based on manpage -TD +# * add rc/sc to aixterm based on man page -TD # # 2000/5/13 # * remove ncv from xterm-16color, xterm-256color @@ -26100,7 +26497,7 @@ v3220|LANPAR Vision II model 3220/3221/3222, # * rename cygwin to cygwinB19, adapt newer entry from Earnie Boyd -TD # # 2000-12-16 -# * improved scoansi, based on SCO man-page, and testing console, +# * improved scoansi, based on SCO man page, and testing console, # scoterm with tack -TD # # 2001-01-27 @@ -27510,4 +27907,95 @@ v3220|LANPAR Vision II model 3220/3221/3222, # + modify xgterm to work around line-drawing bug -TD # + use CSI 3J in vte-2017 (report by Sven Joachim) # +# 2024-05-25 +# + review/update iTerm2 for 3.5.0 -TD +# +# 2024-07-27 +# + modify wezterm, omitting its broken left/right margin feature (report +# by Thayne McCombs) -TD +# +# 2024-08-17 +# + review/update foot for 1.18.1 -TD +# + add a note about DomTerm 3.2.0 -TD +# +# 2024-09-07 +# + update comments -TD +# +# 2024-10-05 +# + use xterm+alt+title in wezterm -TD +# + update comments -TD +# +# 2024-10-26 +# + update ms-terminal -TD +# + add ms-terminal-direct -TD +# +# 2024-11-02 +# + add extended-keys for djgpp 2.05 -TD +# +# 2024-12-28 +# + add ghostty -TD +# +# 2025-01-04 +# + cleanup use-clauses -TD +# + add linux+lockeys, xterm+r5+lockeys, xterm+r5+fkeys -TD +# + add vt220+ufkeys, vt220+sfkeys +# +# 2025-02-03 +# + add note for ghostty 1.1.0 -TD +# +# 2025-02-08 +# + update st (report by Alexander Kashpir) -TD +# +# 2025-02-15 +# + minor fixes to comments (report by Sven Joachim) -TD +# +# 2025-03-01 +# + add color to vt525 (Branden Robinson) +# + add vt520-w and vt525-w (Branden Robinson) +# +# 2025-03-29 +# + add XM/xm to ms-terminal, to enable mouse with experimental Windows +# driver -TD +# +# 2025-04-03 +# + add sclp -TD +# + add op to vt525 -TD +# +# 2025-04-05 +# + update contour -TD +# +# 2025-04-12 +# + add pangoterm -TD +# + add kf1 to kf5 to sclp (report by Werner Fink) +# + add vt100+pf1-pf4 -TD +# +# 2025-04-26 +# + add illumos, sun-16color, sun-256color, sun-direct -TD +# + add wyse+cvis -TD +# +# 2025-05-03 +# + update/correct some of the rv/xr strings, checked with tack -TD +# + use ansi+rca in sclp -TD +# + use vt220+pcedit in sclp (Werner Fink) +# + move some building blocks from illumos to sun-color, based on +# illumos source-history -TD +# + improve use-clauses: ansi+cup, ansi+idl1, ansi+rca, ansi+rca2, +# ansi+sgrso, ansi+sgrul -TD +# + add ecma+standout, ecma+underline -TD +# + add rv code for alacritty -TD +# + add rv/xr codes for contour, foot, ghostty, iterm2, kitty, konsole, +# vscode, vte, wezterm -TD +# +# 2025-05-10 +# + add rv/xr codes for domterm, mintty, mlterm -TD +# + add xr code for putty -TD +# + update teraterm to 5.0 -TD +# + add rlogin-color -TD +# +# 2025-05-17 +# + use bracketed+paste in nsterm, rlogin-color, screen, terminology -TD +# +# 2025-07-19 +# + add xterm+keypad to pccon+base -TD +# ######## SHANTIH! SHANTIH! SHANTIH! diff --git a/contrib/ncurses/mk-1st.awk b/contrib/ncurses/mk-1st.awk index 6a5eafab26cf..5b2c8b8d8a32 100644 --- a/contrib/ncurses/mk-1st.awk +++ b/contrib/ncurses/mk-1st.awk @@ -1,6 +1,6 @@ -# $Id: mk-1st.awk,v 1.125 2023/04/22 15:49:59 tom Exp $ +# $Id: mk-1st.awk,v 1.131 2025/10/04 20:34:43 Branden.Robinson Exp $ ############################################################################## -# Copyright 2018-2021,2023 Thomas E. Dickey # +# Copyright 2018-2024,2025 Thomas E. Dickey # # Copyright 1998-2016,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -32,36 +32,35 @@ # # Generate list of objects for a given model library # Variables: -# name (library name, e.g., "ncurses", "panel", "forms", "menus") +# name (library name, e.g., "ncurses", "panel", "form", "menu") # traces ("all" or "DEBUG", to control whether tracing is compiled in) # MODEL (e.g., "DEBUG", uppercase; toupper is not portable) # CXX_MODEL (e.g., "DEBUG", uppercase) # LIB_SUFFIX (e.g., "", "w", "t", "tw") -# USE_LIB_SUFFIX (e.g., "", "w", "t", "tw") +# ABI_SUFFIX (e.g., "", "w", "t", "tw") # model (directory into which we compile, e.g., "obj") # prefix (e.g., "lib", for Unix-style libraries) # suffix (e.g., "_g.a", for debug libraries) +# o (object suffix) (e.g., ".o") # subset ("none", "base", "base+ext_funcs" or "termlib", etc.) # driver ("yes" or "no", depends on --enable-term-driver) # ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable) -# ShlibVerInfix ("yes" or "no", determines location of version #) +# ShlibVerInfix ("yes" or "no", determines location of version #) # SymLink ("ln -s", etc) # TermlibRoot ("tinfo" or other root for libterm.so) -# TermlibSuffix (".so" or other suffix for libterm.so) +# TermlibSuffix (".so" or other suffix for libterm.so) # ReLink ("yes", or "no", flag to rebuild shared libs on install) # ReRanlib ("yes", or "no", flag to rerun ranlib for installing static) # DoLinks ("yes", "reverse" or "no", flag to add symbolic links) # rmSoLocs ("yes" or "no", flag to add extra clean target) # ldconfig (path for this tool, if used) -# make_phony ("yes" if the make-program accepts ".PHONY" directive. +# make_phony ("yes" if the make-program accepts ".PHONY" directive. # overwrite ("yes" or "no", flag to add link to libcurses.a # depend (optional dependencies for all objects, e.g, ncurses_cfg.h) # host (cross-compile host, if any) -# libtool_version (libtool "-version-info" or "-version-number") +# libtool_version (libtool "-version-info" or "-version-number") # # Notes: -# CLIXs nawk does not like underscores in command-line variable names. -# Mixed-case variable names are ok. # HP-UX requires shared libraries to have executable permissions. # function is_ticlib() { @@ -253,9 +252,9 @@ function shlib_install(directory) { } function install_dll(directory,filename) { src_name = sprintf("../lib/%s", filename); - dst_name = sprintf("$(DESTDIR)%s/%s", directory, filename); + dst_name = sprintf("%s/%s", directory, filename); printf "\t@echo installing %s as %s\n", src_name, dst_name - if ( directory == "$(bindir)" ) { + if ( directory == "$(BINDIR)" ) { program = "$(INSTALL) -m 755"; } else { program = "$(INSTALL_LIB)"; @@ -270,10 +269,10 @@ function in_subset(value) { return index(check,value); } function trim_suffix(value) { - if (USE_LIB_SUFFIX != "" && length(value) > length(USE_LIB_SUFFIX)) { - check = substr(value, 1 + length(value) - length(USE_LIB_SUFFIX)); - if (check == USE_LIB_SUFFIX) { - value = substr(value, 1, length(value) - length(USE_LIB_SUFFIX)); + if (ABI_SUFFIX != "" && length(value) > length(ABI_SUFFIX)) { + check = substr(value, 1 + length(value) - length(ABI_SUFFIX)); + if (check == ABI_SUFFIX) { + value = substr(value, 1, length(value) - length(ABI_SUFFIX)); } } return value; @@ -308,7 +307,7 @@ BEGIN { printf "# MODEL: %s\n", MODEL printf "# CXX_MODEL: %s\n", CXX_MODEL printf "# LIB_SUFFIX: %s\n", LIB_SUFFIX - printf "# USE_LIB_SUFFIX: %s\n", USE_LIB_SUFFIX + printf "# ABI_SUFFIX: %s\n", ABI_SUFFIX printf "# model: %s\n", model printf "# prefix: %s\n", prefix printf "# suffix: %s\n", suffix @@ -368,10 +367,8 @@ BEGIN { found = 2; } if ( $2 == "c++" ) { - CC_NAME="CXX" CC_FLAG="CXXFLAGS" } else { - CC_NAME="CC" CC_FLAG="CFLAGS" } } @@ -403,14 +400,14 @@ END { if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw" || ShlibVer == "msvcdll") { - dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)"; + dst_dirs = "$(BINDIR) $(LIBDIR)"; printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs - install_dll("$(bindir)",end_name); - install_dll("$(libdir)",imp_name); + install_dll("$(BINDIR)",end_name); + install_dll("$(LIBDIR)",imp_name); } else { - lib_dir = "$(DESTDIR)$(libdir)"; + lib_dir = "$(LIBDIR)"; printf "install.%s :: %s/%s\n", name, lib_dir, end_name print "" if ( ReLink == "yes" ) { @@ -430,13 +427,13 @@ END { } ovr_name = sprintf("%scurses%s.a", curses_prefix, suffix) printf "\t@echo linking %s to %s\n", imp_name, ovr_name - printf "\tcd $(DESTDIR)$(libdir) && (" + printf "\tcd $(LIBDIR) && (" symlink(imp_name, ovr_name) printf ")\n" } else { ovr_name = sprintf("libcurses%s", suffix) printf "\t@echo linking %s to %s\n", end_name, ovr_name - printf "\tcd $(DESTDIR)$(libdir) && (" + printf "\tcd $(LIBDIR) && (" symlink(end_name, ovr_name) printf ")\n" } @@ -450,19 +447,19 @@ END { printf "uninstall.%s ::\n", name if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw" || ShlibVer == "msvcdll") { - printf "\t@echo uninstalling $(DESTDIR)$(bindir)/%s\n", end_name - printf "\t-@rm -f $(DESTDIR)$(bindir)/%s\n", end_name + printf "\t@echo uninstalling $(BINDIR)/%s\n", end_name + printf "\t-@rm -f $(BINDIR)/%s\n", end_name - printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", imp_name - printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", imp_name + printf "\t@echo uninstalling $(LIBDIR)/%s\n", imp_name + printf "\t-@rm -f $(LIBDIR)/%s\n", imp_name } else { - printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", end_name - removelinks("$(DESTDIR)$(libdir)") + printf "\t@echo uninstalling $(LIBDIR)/%s\n", end_name + removelinks("$(LIBDIR)") if ( overwrite == "yes" && name == "ncurses" ) { ovr_name = sprintf("libcurses%s", suffix) - printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", ovr_name + printf "\t-@rm -f $(LIBDIR)/%s\n", ovr_name } } if ( rmSoLocs == "yes" ) { @@ -475,12 +472,12 @@ END { else if ( MODEL == "LIBTOOL" ) { end_name = lib_name; - use_name = trim_suffix(TermlibRoot) USE_LIB_SUFFIX + use_name = trim_suffix(TermlibRoot) ABI_SUFFIX printf "../lib/%s : \\\n", lib_name if ( (name != use_name ) && ( index(name, "++") == 0 ) && ( index(name, "tic") == 1 || index(name, "ncurses") == 1 ) ) { printf "\t\t../lib/lib%s.la \\\n", use_name; if ( index(name, "tic") == 1 && index(TermlibRoot, "ncurses") != 1 ) { - printf "\t\t../lib/lib%s%s.la \\\n", "ncurses", USE_LIB_SUFFIX; + printf "\t\t../lib/lib%s%s.la \\\n", "ncurses", ABI_SUFFIX; } } printf "\t\t$(%s_OBJS)\n", OBJS @@ -491,7 +488,7 @@ END { } else { which_list = "SHLIB_LIST"; } - printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) $(%s) \\\n", CC_NAME, CC_FLAG; + printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) \\\n", CC_FLAG; printf "\t\t-o %s $(%s_OBJS:$o=.lo) \\\n", lib_name, OBJS; printf "\t\t-rpath $(libdir) \\\n"; printf "\t\t%s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(%s) $(LDFLAGS)\n", libtool_version, which_list; @@ -503,8 +500,8 @@ END { print "install \\" print "install.libs \\" printf "install.%s :: \\\n", trim_suffix(name); - printf "\t\t$(DESTDIR)$(libdir) \\\n"; - use_name = TermlibRoot USE_LIB_SUFFIX + printf "\t\t$(LIBDIR) \\\n"; + use_name = TermlibRoot ABI_SUFFIX if ( (name != use_name ) && ( index(name, "++") == 0 ) && ( index(name, "tic") == 1 || index(name, "ncurses") == 1 ) ) { if ( trim_suffix(TermlibRoot) != trim_suffix(name) ) { printf "\t\tinstall.%s \\\n", trim_suffix(TermlibRoot); @@ -514,14 +511,14 @@ END { } } printf "\t\t../lib/%s\n", lib_name - printf "\t@echo installing ../lib/%s as $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name - printf "\tcd ../lib; $(LIBTOOL_INSTALL) $(INSTALL) %s $(DESTDIR)$(libdir)\n", lib_name + printf "\t@echo installing ../lib/%s as $(LIBDIR)/%s\n", lib_name, lib_name + printf "\tcd ../lib; $(LIBTOOL_INSTALL) $(INSTALL) %s $(LIBDIR)\n", lib_name print "" print "uninstall \\" print "uninstall.libs \\" printf "uninstall.%s ::\n", trim_suffix(name) - printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", lib_name - printf "\t-@$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(libdir)/%s\n", lib_name + printf "\t@echo uninstalling $(LIBDIR)/%s\n", lib_name + printf "\t-@$(LIBTOOL_UNINSTALL) rm -f $(LIBDIR)/%s\n", lib_name } else { @@ -542,41 +539,41 @@ END { print "" print "install \\" print "install.libs \\" - printf "install.%s :: $(DESTDIR)$(libdir) ../lib/%s\n", name, lib_name - printf "\t@echo installing ../lib/%s as $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name - printf "\t$(INSTALL_DATA) ../lib/%s $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name + printf "install.%s :: $(LIBDIR) ../lib/%s\n", name, lib_name + printf "\t@echo installing ../lib/%s as $(LIBDIR)/%s\n", lib_name, lib_name + printf "\t$(INSTALL_DATA) ../lib/%s $(LIBDIR)/%s\n", lib_name, lib_name if ( overwrite == "yes" && lib_name == "libncurses.a" ) { printf "\t@echo linking libcurses.a to libncurses.a\n" - printf "\t-@rm -f $(DESTDIR)$(libdir)/libcurses.a\n" - printf "\t(cd $(DESTDIR)$(libdir) && " + printf "\t-@rm -f $(LIBDIR)/libcurses.a\n" + printf "\t(cd $(LIBDIR) && " symlink("libncurses.a", "libcurses.a") printf ")\n" } if ( ReRanlib == "yes" ) { - printf "\t$(RANLIB) $(DESTDIR)$(libdir)/%s\n", lib_name + printf "\t$(RANLIB) $(LIBDIR)/%s\n", lib_name } if ( host == "vxworks" ) { - printf "\t@echo installing ../lib/lib%s$o as $(DESTDIR)$(libdir)/lib%s$o\n", name, name - printf "\t$(INSTALL_DATA) ../lib/lib%s$o $(DESTDIR)$(libdir)/lib%s$o\n", name, name + printf "\t@echo installing ../lib/lib%s$o as $(LIBDIR)/lib%s$o\n", name, name + printf "\t$(INSTALL_DATA) ../lib/lib%s$o $(LIBDIR)/lib%s$o\n", name, name } print "" print "uninstall \\" print "uninstall.libs \\" printf "uninstall.%s ::\n", name - printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", lib_name - printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", lib_name + printf "\t@echo uninstalling $(LIBDIR)/%s\n", lib_name + printf "\t-@rm -f $(LIBDIR)/%s\n", lib_name if ( overwrite == "yes" && lib_name == "libncurses.a" ) { printf "\t@echo linking libcurses.a to libncurses.a\n" - printf "\t-@rm -f $(DESTDIR)$(libdir)/libcurses.a\n" + printf "\t-@rm -f $(LIBDIR)/libcurses.a\n" } if ( host == "vxworks" ) { - printf "\t@echo uninstalling $(DESTDIR)$(libdir)/lib%s$o\n", name - printf "\t-@rm -f $(DESTDIR)$(libdir)/lib%s$o\n", name + printf "\t@echo uninstalling $(LIBDIR)/lib%s$o\n", name + printf "\t-@rm -f $(LIBDIR)/lib%s$o\n", name } } print "" diff --git a/contrib/ncurses/ncurses/Makefile.in b/contrib/ncurses/ncurses/Makefile.in index ae198df675a4..fbe2153baa7e 100644 --- a/contrib/ncurses/ncurses/Makefile.in +++ b/contrib/ncurses/ncurses/Makefile.in @@ -1,6 +1,6 @@ -# $Id: Makefile.in,v 1.184 2024/01/19 12:00:00 tom Exp $ +# $Id: Makefile.in,v 1.194 2025/10/25 17:29:43 tom Exp $ ############################################################################## -# Copyright 2018-2022,2024 Thomas E. Dickey # +# Copyright 2018-2024,2025 Thomas E. Dickey # # Copyright 1998-2017,2018 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -50,14 +50,14 @@ SHELL = @SHELL@ VPATH = @srcdir@ THIS = Makefile -TOP_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" @SET_MAKE@ +@SET_DESTDIR@ +TOP_MFLAGS = DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" x = @EXEEXT@ o = .@OBJEXT@ MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ top_srcdir = @top_srcdir@ srcdir = @srcdir@ prefix = @prefix@ @@ -69,7 +69,9 @@ datarootdir = @datarootdir@ datadir = @datadir@ includesubdir = @includesubdir@ -INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) +INCLUDEDIR = $(DESTDIR)$(includedir@MERGE_PREFIX@)$(includesubdir) +BINDIR = $(DESTDIR)$(bindir@MERGE_PREFIX@) +LIBDIR = $(DESTDIR)$(libdir@MERGE_PREFIX@) PACKAGE = @PACKAGE@ @@ -190,7 +192,6 @@ HEADER_DEPS = @INTERNALS_HDR@ \ $(INCDIR)/nc_string.h \ $(INCDIR)/nc_termios.h \ $(INCDIR)/nc_tparm.h \ - $(INCDIR)/nc_win32.h \ $(INCDIR)/term_entry.h \ $(srcdir)/curses.priv.h \ $(srcdir)/new_pair.h \ @@ -206,6 +207,7 @@ TEST_PROGS = \ hashmap$x \ lib_mvcur$x \ link_test$x \ + report_ctype$x \ report_hashing$x LOCAL_LIBDIR = @top_builddir@/lib @@ -235,8 +237,8 @@ all libs :: $(AUTO_SRC) ../lib $(LIBRARIES) sources: $(AUTO_SRC) -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : +$(BINDIR) \ +$(LIBDIR) : mkdir -p $@ ../lib : ; mkdir $@ @@ -258,17 +260,23 @@ make_keys$(BUILD_EXEEXT) : \ $(tinfo)/make_keys.c \ ./names.c $(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS) + @./$@ "-?" + @echo "... made $@" make_hash$(BUILD_EXEEXT) : \ build.priv.h \ $(tinfo)/make_hash.c \ ../include/hashsize.h $(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS) + @./$@ "-?" + @echo "... made $@" report_offsets$(BUILD_EXEEXT) : \ $(srcdir)/curses.priv.h \ $(srcdir)/report_offsets.c $(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(srcdir)/report_offsets.c $(BUILD_LDFLAGS) $(BUILD_LIBS) + @./$@ "-?" + @echo "... made $@" ./report_offsets$(BUILD_EXEEXT) ./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh @@ -314,6 +322,7 @@ clean :: mostlyclean -rm -f $(AUTO_SRC) -rm -f make_keys$(BUILD_EXEEXT) -rm -f make_hash$(BUILD_EXEEXT) + -rm -f report_ctype$(BUILD_EXEEXT) -rm -f report_offsets$(BUILD_EXEEXT) -rm -rf .libs *.dSYM *.map @@ -323,7 +332,9 @@ distclean :: clean realclean :: distclean # These rules are used to allow "make -n" to work on a clean directory-tree +../include/curses.h \ ../include/hashsize.h \ +../include/ncurses_def.h \ ../include/parametrized.h \ ../include/term.h : ( cd ../include && $(MAKE) $(TOP_MFLAGS) ) @@ -355,10 +366,17 @@ link_test$x : ./link_test.c $(TEST_DEPS) \ ../@DFT_OBJ_SUBDIR@/dump_entry$o: ( cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry$o ) +report_ctype$x : \ + $(srcdir)/curses.priv.h \ + $(srcdir)/report_ctype.c $(TEST_DEPS) + @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) $(srcdir)/report_ctype.c $(TEST_LDFLAGS) + @echo "... made $@" + ./report_ctype$x + report_hashing$x : \ $(srcdir)/curses.priv.h \ $(srcdir)/report_hashing.c $(TEST_DEPS) - @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) report_hashing.c $(TEST_LDFLAGS) + @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) $(srcdir)/report_hashing.c $(TEST_LDFLAGS) # Verify that each header-file can be compiled without including another. @MAKE_PHONY@.PHONY : check_headers diff --git a/contrib/ncurses/ncurses/base/MKkeyname.awk b/contrib/ncurses/ncurses/base/MKkeyname.awk index b3d04ee77f53..545661f7e4c2 100644 --- a/contrib/ncurses/ncurses/base/MKkeyname.awk +++ b/contrib/ncurses/ncurses/base/MKkeyname.awk @@ -1,6 +1,6 @@ -# $Id: MKkeyname.awk,v 1.51 2020/02/02 23:34:34 tom Exp $ +# $Id: MKkeyname.awk,v 1.53 2024/12/07 21:09:39 tom Exp $ ############################################################################## -# Copyright 2020 Thomas E. Dickey # +# Copyright 2020,2024 Thomas E. Dickey # # Copyright 1998-2016,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -59,7 +59,7 @@ END { if (bigstrings) { printf "\t{ -1, 0 }};\n" print "" - print "static const char key_names[] = "names";" + print "static const char key_names[] ="names";" } else { printf "\t{ 0, 0 }};\n" } @@ -72,7 +72,7 @@ END { print "safe_keyname (SCREEN *sp, int c)" print "{" print " char name[20];" - print " NCURSES_CONST char *result = 0;" + print " NCURSES_CONST char *result = NULL;" print "" print " if (c == -1) {" print " result = \"-1\";" @@ -86,7 +86,7 @@ END { print " }" print " }" } else { - print " for (i = 0; _nc_key_names[i].name != 0; i++) {" + print " for (i = 0; _nc_key_names[i].name != NULL; i++) {" print " if (_nc_key_names[i].code == c) {" print " result = (NCURSES_CONST char *)_nc_key_names[i].name;" print " break;" @@ -94,12 +94,12 @@ END { print " }" } print "" - print " if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) {" - print " if (MyTable == 0)" + print " if (result == NULL && (c >= 0 && c < SIZEOF_TABLE)) {" + print " if (MyTable == NULL)" print " MyTable = typeCalloc(char *, SIZEOF_TABLE);" print "" - print " if (MyTable != 0) {" - print " int m_prefix = (sp == 0 || sp->_use_meta);" + print " if (MyTable != NULL) {" + print " int m_prefix = (sp == NULL || sp->_use_meta);" print "" print " /* if sense of meta() changed, discard cached data */" print " if (MyInit != (m_prefix + 1)) {" @@ -112,7 +112,7 @@ END { print " }" print "" print " /* create and cache result as needed */" - print " if (MyTable[c] == 0) {" + print " if (MyTable[c] == NULL) {" print " int cc = c;" print " char *p = name;" print "#define P_LIMIT (sizeof(name) - (size_t) (p - name))" @@ -132,22 +132,22 @@ END { print " result = MyTable[c];" print " }" print "#if NCURSES_EXT_FUNCS && NCURSES_XNAMES" - print " } else if (result == 0 && HasTerminal(sp)) {" + print " } else if (result == NULL && HasTerminal(sp)) {" print " int j, k;" print " char * bound;" print " TERMTYPE2 *tp = &TerminalType(TerminalOf(sp));" print " unsigned save_trace = _nc_tracing;" print "" print " _nc_tracing = 0; /* prevent recursion via keybound() */" - print " for (j = 0; (bound = NCURSES_SP_NAME(keybound)(NCURSES_SP_ARGx c, j)) != 0; ++j) {" + print " for (j = 0; (bound = NCURSES_SP_NAME(keybound)(NCURSES_SP_ARGx c, j)) != NULL; ++j) {" print " for(k = STRCOUNT; k < (int) NUM_STRINGS(tp); k++) {" - print " if (tp->Strings[k] != 0 && !strcmp(bound, tp->Strings[k])) {" + print " if (tp->Strings[k] != NULL && !strcmp(bound, tp->Strings[k])) {" print " result = ExtStrname(tp, k, strnames);" print " break;" print " }" print " }" print " free(bound);" - print " if (result != 0)" + print " if (result != NULL)" print " break;" print " }" print " _nc_tracing = save_trace;" @@ -166,7 +166,7 @@ END { print "#if NO_LEAKS" print "void _nc_keyname_leaks(void)" print "{" - print " if (MyTable != 0) {" + print " if (MyTable != NULL) {" print " int j;" print " for (j = 0; j < SIZEOF_TABLE; ++j) {" print " FreeIfNeeded(MyTable[j]);" diff --git a/contrib/ncurses/ncurses/base/MKlib_gen.sh b/contrib/ncurses/ncurses/base/MKlib_gen.sh index f0ac0452e8ef..fbaf3f2d68fc 100755 --- a/contrib/ncurses/ncurses/base/MKlib_gen.sh +++ b/contrib/ncurses/ncurses/base/MKlib_gen.sh @@ -2,10 +2,10 @@ # # MKlib_gen.sh -- generate sources from curses.h macro definitions # -# ($Id: MKlib_gen.sh,v 1.73 2022/10/01 13:14:20 tom Exp $) +# ($Id: MKlib_gen.sh,v 1.79 2025/02/23 01:55:06 tom Exp $) # ############################################################################## -# Copyright 2018-2021,2022 Thomas E. Dickey # +# Copyright 2018-2024,2025 Thomas E. Dickey # # Copyright 1998-2016,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -188,6 +188,10 @@ if test "$USE" = generated ; then cat >$ED4 <<EOF s/^\(.*\) \(.*\) (\(.*\))\$/NCURSES_EXPORT(\1) \2 (\3)/ /attr_[sg]et.* z)/s,z),z GCC_UNUSED), + s/\(((\)0[L]*\([ ]*!=[ ]*(const void\)/\1NULL\2/g + /returnCode(wborder_set/s,0[L]*,NULL,g + /returnWin/s,0[L]*,NULL, + /_parent/s,0[L]*,NULL, EOF else cat >$ED4 <<EOF @@ -199,6 +203,8 @@ cat >$ED4 <<EOF s/^\(.*\) \(.*\) (\(.*\))\$/\1 call_\2 (\3)/ } s/\([^_]\)NCURSES_SP_NAME___\([a-zA-Z][a-zA-Z_]*\)/\1NCURSES_SP_NAME(\2)/g +/call_NCURSES_SP_NAME/s,(0,(NULL, +/call\(_NCURSES_SP_NAME\)\?_*\(delscreen\|ripoffline\|set_term\|vidputs\|vid_puts\)/s,0),NULL), EOF fi @@ -440,6 +446,10 @@ BEGIN { print "#define NCURSES_ATTR_T int" print "#include <ncurses_cfg.h>" print "" + print "#if USE_STDBOOL_H" + print "#include <stdbool.h>" + print "#endif" + print "" print "#undef NCURSES_NOMACROS /* _this_ file uses macros */" print "#define NCURSES_NOMACROS 1" print "" @@ -464,8 +474,11 @@ BEGIN { } END { if ( "$USE" != "generated" ) { - print "int main(void)" - print "{" + print "static int link_test(int code)" + print "{" + print " switch(code)" + print " {" + casenum = 1; for (n = 1; n < start; ++n) { value = calls[n]; if ( value !~ /P_POUNDC/ ) { @@ -473,20 +486,37 @@ END { sub(/^[0-9a-zA-Z_]+ /,"",value); sub(/^[*][ \t]*/,"",value); gsub("struct[ \t]*[0-9a-zA-Z_]+[ \t]*[*]","",value); + arg_l = index(value, "("); + arg_r = index(value, ")"); + if ( arg_l > 0 && arg_r > arg_l + 1 ) { + args = substr(value, arg_l + 1, arg_r - arg_l - 1); + gsub(/[0-9a-zA-Z_]+[ \t]*[*][ \t]*[0-9a-zA-Z_]+/,"NULL",args); + gsub(/ (bool|int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",args); + value = substr(value,0,arg_l) args substr(value,arg_r); + } gsub(/[0-9a-zA-Z_]+[ \t]*[*][ \t]*/,"",value); gsub(/ (const) /," ",value); - gsub(/ (int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",value); + gsub(/ (bool|int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",value); gsub(/ void /,"",value); sub(/^/,"call_",value); gsub(/ (a[0-9]|z) /, " 0 ", value); gsub(/ int[ \t]*[(][^)]+[)][(][^)]+[)]/, "0", value); - printf "\t%s;\n", value; + if ( index(value, "call_NCURSES_SP_NAME") > 0 ) { + sub("0","NULL", value); + } + printf " case %d: %s; break;\n", casenum++, value; } else { + if ( index(value, "call_NCURSES_SP_NAME") > 0 ) { + printf "/* FIXME %s */\n", value; + sub("0","NULL", value); + } print value; } } - print " return 0;" - print "}" + print " default: return 0; /* case did not exist */" + print " }" + print " return 1; /* case exists */" + print "}" } } EOF1 @@ -527,3 +557,34 @@ $preprocessor $TMP 2>/dev/null \ -e '/#ident/d' \ -e '/#line/d' \ | sed -f $ED4 + +# a simple test-driver checks one or all of the linkages +if test "$USE" = "implemented" +then +cat <<"EOF" +int main(int argc, char *argv[]) +{ + int n; + int rc; + if (argc > 1) + { + rc = !link_test(atoi(argv[1])); + } + else + { + rc = 0; + for (n = 1; ; ++n) + { + printf("TEST %d\n", n); + fflush(stdout); + if (!link_test(n)) + { + rc = 1; + break; + } + } + } + return rc; +} +EOF +fi diff --git a/contrib/ncurses/ncurses/base/MKunctrl.awk b/contrib/ncurses/ncurses/base/MKunctrl.awk index e5362bd60d15..c8f669661cee 100644 --- a/contrib/ncurses/ncurses/base/MKunctrl.awk +++ b/contrib/ncurses/ncurses/base/MKunctrl.awk @@ -1,4 +1,4 @@ -# $Id: MKunctrl.awk,v 1.30 2024/02/03 21:09:14 tom Exp $ +# $Id: MKunctrl.awk,v 1.31 2024/12/07 21:06:39 tom Exp $ ############################################################################## # Copyright 2020,2024 Thomas E. Dickey # # Copyright 1998-2012,2017 Free Software Foundation, Inc. # @@ -135,7 +135,7 @@ END { print "" if (bigstrings) { - print "static const char unctrl_blob[] = "blob";" + print "static const char unctrl_blob[] ="blob";" print "" stringname = "unctrl_blob + unctrl" } else { @@ -147,7 +147,7 @@ END { print "\t(void) sp;" print "\tif (check >= 0 && check < (int)SIZEOF(unctrl_table)) {" print "#if NCURSES_EXT_FUNCS" - print "\t\tif ((sp != 0)" + print "\t\tif ((sp != NULL)" print "\t\t && (sp->_legacy_coding > 1)" print "\t\t && (check >= 128)" print "\t\t && (check < 160))" @@ -156,7 +156,7 @@ END { print "\t\tif ((check >= 160)" print "\t\t && (check < 256)" print "\t\t && !_nc_unicode_locale()" - print "\t\t && ((sp != 0)" + print "\t\t && ((sp != NULL)" print "\t\t && ((sp->_legacy_coding > 0)" print "\t\t || (sp->_legacy_coding == 0" print "\t\t && isprint(check)))))" @@ -165,7 +165,7 @@ END { print "#endif /* NCURSES_EXT_FUNCS */" printf "\t\t\tresult = %s_table[check];\n", stringname; print "\t} else {" - print "\t\tresult = 0;" + print "\t\tresult = NULL;" print "\t}" print "\treturn (NCURSES_CONST char *)result;" print "}" diff --git a/contrib/ncurses/ncurses/base/define_key.c b/contrib/ncurses/ncurses/base/define_key.c index fb9ae36be877..1b7db4cba5b3 100644 --- a/contrib/ncurses/ncurses/base/define_key.c +++ b/contrib/ncurses/ncurses/base/define_key.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2009,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -34,7 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: define_key.c,v 1.22 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: define_key.c,v 1.24 2025/12/27 12:41:23 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (NCURSES_SP_DCLx const char *str, int keycode) @@ -42,24 +42,24 @@ NCURSES_SP_NAME(define_key) (NCURSES_SP_DCLx const char *str, int keycode) int code = ERR; T((T_CALLED("define_key(%p, %s,%d)"), (void *) SP_PARM, _nc_visbuf(str), keycode)); - if (SP_PARM == 0 || !HasTInfoTerminal(SP_PARM)) { + if (SP_PARM == NULL || !HasTInfoTerminal(SP_PARM)) { code = ERR; } else if (keycode > 0) { unsigned ukey = (unsigned) keycode; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER #define CallHasKey(keycode) CallDriver_1(SP_PARM, td_kyExist, keycode) #else #define CallHasKey(keycode) NCURSES_SP_NAME(has_key)(NCURSES_SP_ARGx keycode) #endif - if (str != 0) { + if (str != NULL) { NCURSES_SP_NAME(define_key) (NCURSES_SP_ARGx str, 0); } else if (CallHasKey(keycode)) { while (_nc_remove_key(&(SP_PARM->_keytry), ukey)) code = OK; } - if (str != 0) { + if (str != NULL) { if (NCURSES_SP_NAME(key_defined) (NCURSES_SP_ARGx str) == 0) { if (_nc_add_to_try(&(SP_PARM->_keytry), str, ukey) == OK) { code = OK; diff --git a/contrib/ncurses/ncurses/base/key_defined.c b/contrib/ncurses/ncurses/base/key_defined.c index 147e5fe2db93..28939edeb48d 100644 --- a/contrib/ncurses/ncurses/base/key_defined.c +++ b/contrib/ncurses/ncurses/base/key_defined.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2023 Thomas E. Dickey * + * Copyright 2020-2023,2024 Thomas E. Dickey * * Copyright 2003-2006,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -34,7 +34,7 @@ #include <curses.priv.h> #include <tic.h> -MODULE_ID("$Id: key_defined.c,v 1.11 2023/06/24 15:36:32 tom Exp $") +MODULE_ID("$Id: key_defined.c,v 1.12 2024/12/07 21:24:18 tom Exp $") static int find_definition(TRIES * tree, const char *str) @@ -43,9 +43,9 @@ find_definition(TRIES * tree, const char *str) int result = OK; if (VALID_STRING(str) && *str != '\0') { - for (ptr = tree; ptr != 0; ptr = ptr->sibling) { + for (ptr = tree; ptr != NULL; ptr = ptr->sibling) { if (UChar(*str) == UChar(ptr->ch)) { - if (str[1] == '\0' && ptr->child != 0) { + if (str[1] == '\0' && ptr->child != NULL) { result = ERR; } else if ((result = find_definition(ptr->child, str + 1)) == OK) { @@ -72,7 +72,7 @@ NCURSES_SP_NAME(key_defined) (NCURSES_SP_DCLx const char *str) int code = ERR; T((T_CALLED("key_defined(%p, %s)"), (void *) SP_PARM, _nc_visbuf(str))); - if (SP_PARM != 0 && str != 0) { + if (SP_PARM != NULL && str != NULL) { code = find_definition(SP_PARM->_keytry, str); } diff --git a/contrib/ncurses/ncurses/base/keybound.c b/contrib/ncurses/ncurses/base/keybound.c index bbd912a0d858..9dc404670eda 100644 --- a/contrib/ncurses/ncurses/base/keybound.c +++ b/contrib/ncurses/ncurses/base/keybound.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1999-2009,2011 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -34,7 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: keybound.c,v 1.12 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: keybound.c,v 1.13 2024/12/07 21:24:18 tom Exp $") /* * Returns the count'th string definition which is associated with the @@ -43,10 +43,10 @@ MODULE_ID("$Id: keybound.c,v 1.12 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (NCURSES_SP_DCLx int code, int count) { - char *result = 0; + char *result = NULL; T((T_CALLED("keybound(%p, %d,%d)"), (void *) SP_PARM, code, count)); - if (SP_PARM != 0 && code >= 0) { + if (SP_PARM != NULL && code >= 0) { result = _nc_expand_try(SP_PARM->_keytry, (unsigned) code, &count, diff --git a/contrib/ncurses/ncurses/base/keyok.c b/contrib/ncurses/ncurses/base/keyok.c index 945228aa8035..564b3f10a606 100644 --- a/contrib/ncurses/ncurses/base/keyok.c +++ b/contrib/ncurses/ncurses/base/keyok.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2019-2024,2025 Thomas E. Dickey * * Copyright 1998-2012,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -34,7 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: keyok.c,v 1.17 2021/06/17 21:26:02 tom Exp $") +MODULE_ID("$Id: keyok.c,v 1.19 2025/12/27 12:41:23 tom Exp $") /* * Enable (or disable) ncurses' interpretation of a keycode by adding (or @@ -53,7 +53,7 @@ NCURSES_SP_NAME(keyok) (NCURSES_SP_DCLx int c, bool flag) if (HasTerminal(SP_PARM)) { T((T_CALLED("keyok(%p, %d,%d)"), (void *) SP_PARM, c, flag)); -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER code = CallDriver_2(sp, td_kyOk, c, flag); #else if (c >= 0) { @@ -63,7 +63,7 @@ NCURSES_SP_NAME(keyok) (NCURSES_SP_DCLx int c, bool flag) if (flag) { while ((s = _nc_expand_try(SP_PARM->_key_ok, - ch, &count, (size_t) 0)) != 0) { + ch, &count, (size_t) 0)) != NULL) { if (_nc_remove_key(&(SP_PARM->_key_ok), ch)) { code = _nc_add_to_try(&(SP_PARM->_keytry), s, ch); free(s); @@ -76,7 +76,7 @@ NCURSES_SP_NAME(keyok) (NCURSES_SP_DCLx int c, bool flag) } } else { while ((s = _nc_expand_try(SP_PARM->_keytry, - ch, &count, (size_t) 0)) != 0) { + ch, &count, (size_t) 0)) != NULL) { if (_nc_remove_key(&(SP_PARM->_keytry), ch)) { code = _nc_add_to_try(&(SP_PARM->_key_ok), s, ch); free(s); diff --git a/contrib/ncurses/ncurses/base/legacy_coding.c b/contrib/ncurses/ncurses/base/legacy_coding.c index a71aee014e7e..3da1414d8512 100644 --- a/contrib/ncurses/ncurses/base/legacy_coding.c +++ b/contrib/ncurses/ncurses/base/legacy_coding.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 2005,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -34,7 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: legacy_coding.c,v 1.6 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: legacy_coding.c,v 1.7 2024/12/07 20:00:48 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (NCURSES_SP_DCLx int level) @@ -42,7 +42,7 @@ NCURSES_SP_NAME(use_legacy_coding) (NCURSES_SP_DCLx int level) int result = ERR; T((T_CALLED("use_legacy_coding(%p,%d)"), (void *) SP_PARM, level)); - if (level >= 0 && level <= 2 && SP_PARM != 0) { + if (level >= 0 && level <= 2 && SP_PARM != NULL) { result = SP_PARM->_legacy_coding; SP_PARM->_legacy_coding = level; } diff --git a/contrib/ncurses/ncurses/base/lib_addch.c b/contrib/ncurses/ncurses/base/lib_addch.c index a14bfd3b0e05..634714a623fb 100644 --- a/contrib/ncurses/ncurses/base/lib_addch.c +++ b/contrib/ncurses/ncurses/base/lib_addch.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019-2021,2022 Thomas E. Dickey * + * Copyright 2019-2022,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -37,7 +37,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_addch.c,v 1.141 2022/06/12 15:16:41 tom Exp $") +MODULE_ID("$Id: lib_addch.c,v 1.144 2024/12/07 17:18:07 tom Exp $") static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT); @@ -118,7 +118,7 @@ _nc_render(WINDOW *win, NCURSES_CH_T ch) #endif static bool -newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T *ypos) +newline_forces_scroll(const WINDOW *win, NCURSES_SIZE_T *ypos) { bool result = FALSE; @@ -451,14 +451,14 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch) if ((AttrOf(ch) & A_ALTCHARSET) || ( #if USE_WIDEC_SUPPORT - (sp != 0 && sp->_legacy_coding) && + (sp != NULL && sp->_legacy_coding) && #endif s[1] == 0 ) || ( - (isprint((int) t) && !iscntrl((int) t)) + (isprint(UChar(t)) && !iscntrl(UChar(t))) #if USE_WIDEC_SUPPORT - || ((sp == 0 || !sp->_legacy_coding) && + || ((sp == NULL || !sp->_legacy_coding) && (WINDOW_EXT(win, addch_used) || !_nc_is_charable(CharOf(ch)))) #endif diff --git a/contrib/ncurses/ncurses/base/lib_addstr.c b/contrib/ncurses/ncurses/base/lib_addstr.c index a3753af0d53e..5bea4187f199 100644 --- a/contrib/ncurses/ncurses/base/lib_addstr.c +++ b/contrib/ncurses/ncurses/base/lib_addstr.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019-2022,2023 Thomas E. Dickey * + * Copyright 2019-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -45,7 +45,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_addstr.c,v 1.62 2023/11/21 21:47:23 tom Exp $") +MODULE_ID("$Id: lib_addstr.c,v 1.65 2025/02/20 08:53:36 tom Exp $") NCURSES_EXPORT(int) waddnstr(WINDOW *win, const char *astr, int n) @@ -55,8 +55,8 @@ waddnstr(WINDOW *win, const char *astr, int n) T((T_CALLED("waddnstr(%p,%s,%d)"), (void *) win, _nc_visbufn(astr, n), n)); - if (win && (str != 0) && (n != 0)) { - bool explicit = (n > 0); + if (win != NULL && str != NULL) { + bool explicit = (n >= 0); TR(TRACE_VIRTPUT | TRACE_ATTRS, ("... current %s", _traceattr(WINDOW_ATTRS(win)))); @@ -123,7 +123,7 @@ NCURSES_EXPORT(int) _nc_wchstrlen(const cchar_t *s) { int result = 0; - if (s != 0) { + if (s != NULL) { while (CharOf(s[result]) != L'\0') { result++; } @@ -230,8 +230,8 @@ waddnwstr(WINDOW *win, const wchar_t *str, int n) T((T_CALLED("waddnwstr(%p,%s,%d)"), (void *) win, _nc_viswbufn(str, n), n)); - if (win && (str != 0) && (n != 0)) { - bool explicit = (n > 0); + if (win != NULL && str != NULL) { + bool explicit = (n >= 0); TR(TRACE_VIRTPUT | TRACE_ATTRS, ("... current %s", _traceattr(WINDOW_ATTRS(win)))); diff --git a/contrib/ncurses/ncurses/base/lib_beep.c b/contrib/ncurses/ncurses/base/lib_beep.c index b1a60b923ef6..5708c33e9698 100644 --- a/contrib/ncurses/ncurses/base/lib_beep.c +++ b/contrib/ncurses/ncurses/base/lib_beep.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2013,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -47,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_beep.c,v 1.18 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_beep.c,v 1.21 2025/12/27 12:41:23 tom Exp $") /* * beep() @@ -64,12 +64,12 @@ NCURSES_SP_NAME(beep) (NCURSES_SP_DCL0) T((T_CALLED("beep(%p)"), (void *) SP_PARM)); -#ifdef USE_TERM_DRIVER - if (SP_PARM != 0) +#if USE_TERM_DRIVER + if (SP_PARM != NULL) res = CallDriver_1(SP_PARM, td_doBeepOrFlash, TRUE); #else /* FIXME: should make sure that we are not in altchar mode */ - if (cur_term == 0) { + if (cur_term == NULL) { res = ERR; } else if (bell) { res = NCURSES_PUTP2_FLUSH("bell", bell); diff --git a/contrib/ncurses/ncurses/base/lib_bkgd.c b/contrib/ncurses/ncurses/base/lib_bkgd.c index 4f99080835e8..0358f4a2d40e 100644 --- a/contrib/ncurses/ncurses/base/lib_bkgd.c +++ b/contrib/ncurses/ncurses/base/lib_bkgd.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2018-2021,2024 Thomas E. Dickey * * Copyright 1998-2014,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -37,7 +37,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_bkgd.c,v 1.63 2021/05/08 14:58:12 tom Exp $") +MODULE_ID("$Id: lib_bkgd.c,v 1.64 2024/12/07 20:00:48 tom Exp $") static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); @@ -136,7 +136,7 @@ _nc_background(WINDOW *win, const ARG_CH_T ch, bool narrow) #define TraceChar(c) _tracechar(CharOf(c)) #endif - if (SP == 0) { + if (SP == NULL) { ; } else if (win) { NCURSES_CH_T new_bkgd = CHDEREF(ch); diff --git a/contrib/ncurses/ncurses/base/lib_chgat.c b/contrib/ncurses/ncurses/base/lib_chgat.c index 74c4f75b44d9..e78c76a69098 100644 --- a/contrib/ncurses/ncurses/base/lib_chgat.c +++ b/contrib/ncurses/ncurses/base/lib_chgat.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020-2015,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -43,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_chgat.c,v 1.13 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_chgat.c,v 1.15 2025/02/15 20:53:36 tom Exp $") NCURSES_EXPORT(int) wchgat(WINDOW *win, @@ -62,7 +62,8 @@ wchgat(WINDOW *win, color_pair)); set_extended_pair(opts, color_pair); - if (win) { + if (win != NULL + && color_pair >= 0) { struct ldat *line = &(win->_line[win->_cury]); int i; diff --git a/contrib/ncurses/ncurses/base/lib_color.c b/contrib/ncurses/ncurses/base/lib_color.c index f001b22413fe..5472419c159a 100644 --- a/contrib/ncurses/ncurses/base/lib_color.c +++ b/contrib/ncurses/ncurses/base/lib_color.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2022,2023 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -49,9 +49,9 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_color.c,v 1.150 2023/09/16 16:39:15 tom Exp $") +MODULE_ID("$Id: lib_color.c,v 1.157 2025/12/27 12:31:03 tom Exp $") -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER #define CanChange InfoOf(SP_PARM).canchange #define DefaultPalette InfoOf(SP_PARM).defaultPalette #define HasColor InfoOf(SP_PARM).hascolor @@ -69,7 +69,7 @@ MODULE_ID("$Id: lib_color.c,v 1.150 2023/09/16 16:39:15 tom Exp $") #define UseHlsPalette (hue_lightness_saturation) #endif -#ifndef USE_TERM_DRIVER +#if !USE_TERM_DRIVER /* * These should be screen structure members. They need to be globals for * historical reasons. So we assign them in start_color() and also in @@ -132,7 +132,7 @@ static const color_t hls_palette[] = DATA( 0, 50, 100), /* COLOR_WHITE */ }; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER NCURSES_EXPORT_VAR(const color_t*) _nc_cga_palette = cga_palette; NCURSES_EXPORT_VAR(const color_t*) _nc_hls_palette = hls_palette; #endif @@ -146,20 +146,20 @@ NCURSES_EXPORT_VAR(const color_t*) _nc_hls_palette = hls_palette; static int default_fg(NCURSES_SP_DCL0) { - return (SP_PARM != 0) ? SP_PARM->_default_fg : COLOR_WHITE; + return (SP_PARM != NULL) ? SP_PARM->_default_fg : COLOR_WHITE; } static int default_bg(NCURSES_SP_DCL0) { - return SP_PARM != 0 ? SP_PARM->_default_bg : COLOR_BLACK; + return SP_PARM != NULL ? SP_PARM->_default_bg : COLOR_BLACK; } #else #define default_fg(sp) COLOR_WHITE #define default_bg(sp) COLOR_BLACK #endif -#ifndef USE_TERM_DRIVER +#if !USE_TERM_DRIVER /* * SVr4 curses is known to interchange color codes (1,4) and (3,6), possibly * to maintain compatibility with a pre-ANSI scheme. The same scheme is @@ -181,7 +181,7 @@ toggled_colors(int c) static void set_background_color(NCURSES_SP_DCLx int bg, NCURSES_SP_OUTC outc) { -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER CallDriver_3(SP_PARM, td_color, FALSE, bg, outc); #else if (set_a_background) { @@ -201,7 +201,7 @@ set_background_color(NCURSES_SP_DCLx int bg, NCURSES_SP_OUTC outc) static void set_foreground_color(NCURSES_SP_DCLx int fg, NCURSES_SP_OUTC outc) { -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER CallDriver_3(SP_PARM, td_color, TRUE, fg, outc); #else if (set_a_foreground) { @@ -248,7 +248,7 @@ init_color_table(NCURSES_SP_DCL0) static bool init_direct_colors(NCURSES_SP_DCL0) { - static NCURSES_CONST char name[] = "RGB"; + static NCURSES_CONST char name[] = UserCap(RGB); rgb_bits_t *result = &(SP_PARM->_direct_color); @@ -273,7 +273,7 @@ init_direct_colors(NCURSES_SP_DCL0) result->bits.red = UChar(n); result->bits.green = UChar(n); result->bits.blue = UChar(n); - } else if ((s = tigetstr(name)) != 0 && VALID_STRING(s)) { + } else if ((s = tigetstr(name)) != NULL && VALID_STRING(s)) { int red = n; int green = n; int blue = width - (2 * n); @@ -306,13 +306,13 @@ init_direct_colors(NCURSES_SP_DCL0) static bool reset_color_pair(NCURSES_SP_DCL0) { -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER return CallDriver(SP_PARM, td_rescol); #else bool result = FALSE; (void) SP_PARM; - if (orig_pair != 0) { + if (orig_pair != NULL) { (void) NCURSES_PUTP2("orig_pair", orig_pair); result = TRUE; } @@ -336,10 +336,10 @@ NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0) if (reset_color_pair(NCURSES_SP_ARG)) result = TRUE; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER result = CallDriver(SP_PARM, td_rescolors); #else - if (orig_colors != 0) { + if (orig_colors != NULL) { NCURSES_PUTP2("orig_colors", orig_colors); result = TRUE; } @@ -362,7 +362,7 @@ NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0) T((T_CALLED("start_color(%p)"), (void *) SP_PARM)); - if (SP_PARM == 0) { + if (SP_PARM == NULL) { result = ERR; } else if (SP_PARM->_coloron) { result = OK; @@ -393,7 +393,9 @@ NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0) * If using default colors, allocate extra space in table to * allow for default-color as a component of a color-pair. */ - SP_PARM->_pair_limit += (1 + (2 * maxcolors)); + if (maxcolors < maxpairs) { + SP_PARM->_pair_limit += (1 + (2 * maxcolors)); + } #if !NCURSES_EXT_COLORS SP_PARM->_pair_limit = limit_PAIRS(SP_PARM->_pair_limit); #endif @@ -406,12 +408,12 @@ NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0) #endif ReservePairs(SP_PARM, 16); - if (SP_PARM->_color_pairs != 0) { + if (SP_PARM->_color_pairs != NULL) { if (init_direct_colors(NCURSES_SP_ARG)) { result = OK; } else { TYPE_CALLOC(color_t, maxcolors, SP_PARM->_color_table); - if (SP_PARM->_color_table != 0) { + if (SP_PARM->_color_table != NULL) { MakeColorPair(SP_PARM->_color_pairs[0], default_fg(NCURSES_SP_ARG), default_bg(NCURSES_SP_ARG)); @@ -425,7 +427,7 @@ NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0) COLORS, COLOR_PAIRS)); SP_PARM->_coloron = 1; - } else if (SP_PARM->_color_pairs != 0) { + } else if (SP_PARM->_color_pairs != NULL) { FreeAndNull(SP_PARM->_color_pairs); } } @@ -526,13 +528,13 @@ _nc_reserve_pairs(SCREEN *sp, int want) if (have > sp->_pair_limit) have = sp->_pair_limit; - if (sp->_color_pairs == 0) { + if (sp->_color_pairs == NULL) { TYPE_CALLOC(colorpair_t, have, sp->_color_pairs); } else if (have > sp->_pair_alloc) { -#if NCURSES_EXT_COLORS +#if NCURSES_EXT_COLORS && NCURSES_EXT_FUNCS colorpair_t *next; - if ((next = typeCalloc(colorpair_t, have)) == 0) + if ((next = typeCalloc(colorpair_t, have)) == NULL) _nc_err_abort(MSG_NO_MEMORY); memcpy(next, sp->_color_pairs, (size_t) sp->_pair_alloc * sizeof(*next)); _nc_copy_pairs(sp, next, sp->_color_pairs, sp->_pair_alloc); @@ -540,13 +542,13 @@ _nc_reserve_pairs(SCREEN *sp, int want) sp->_color_pairs = next; #else TYPE_REALLOC(colorpair_t, have, sp->_color_pairs); - if (sp->_color_pairs != 0) { + if (sp->_color_pairs != NULL) { memset(sp->_color_pairs + sp->_pair_alloc, 0, sizeof(colorpair_t) * (size_t) (have - sp->_pair_alloc)); } #endif } - if (sp->_color_pairs != 0) { + if (sp->_color_pairs != NULL) { sp->_pair_alloc = have; } } @@ -656,7 +658,7 @@ _nc_init_pair(SCREEN *sp, int pair, int f, int b) if (GET_SCREEN_PAIR(sp) == pair) SET_SCREEN_PAIR(sp, (int) (~0)); /* force attribute update */ -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER CallDriver_3(sp, td_initpair, pair, f, b); #else if (initialize_pair && InPalette(f) && InPalette(b)) { @@ -713,7 +715,7 @@ _nc_init_color(SCREEN *sp, int color, int r, int g, int b) color, r, g, b)); - if (sp == 0 || sp->_direct_color.value) + if (sp == NULL || sp->_direct_color.value) returnCode(result); maxcolors = MaxColors; @@ -739,7 +741,7 @@ _nc_init_color(SCREEN *sp, int color, int r, int g, int b) sp->_color_table[color].blue = b; } -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER CallDriver_4(sp, td_initcolor, color, r, g, b); #else NCURSES_PUTP2("initialize_color", @@ -776,7 +778,7 @@ init_color(NCURSES_COLOR_T color, NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL) { - int result = FALSE; + bool result = FALSE; T((T_CALLED("can_change_color(%p)"), (void *) SP_PARM)); @@ -784,7 +786,7 @@ NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL) result = TRUE; } - returnCode(result); + returnBool(result); } #if NCURSES_SP_FUNCS @@ -798,12 +800,12 @@ can_change_color(void) NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0) { - int code = FALSE; + bool code = FALSE; (void) SP_PARM; T((T_CALLED("has_colors(%p)"), (void *) SP_PARM)); if (HasTerminal(SP_PARM)) { -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER code = HasColor; #else code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs) @@ -814,7 +816,7 @@ NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0) || set_color_pair)) ? TRUE : FALSE); #endif } - returnCode(code); + returnBool(code); } #if NCURSES_SP_FUNCS @@ -837,7 +839,7 @@ _nc_color_content(SCREEN *sp, int color, int *r, int *g, int *b) (void *) g, (void *) b)); - if (sp != 0) { + if (sp != NULL) { int maxcolors = MaxColors; if (color >= 0 && OkColorHi(color) && sp->_coloron) { @@ -991,7 +993,7 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx int reverse, NCURSES_SP_OUTC outc) { -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER CallDriver_4(SP_PARM, td_docolor, old_pair, pair, reverse, outc); #else int fg = COLOR_DEFAULT; @@ -1008,14 +1010,14 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx TIPARM_1(set_color_pair, pair), 1, outc); return; - } else if (SP_PARM != 0) { + } else if (SP_PARM != NULL) { if (_nc_pair_content(SP_PARM, pair, &fg, &bg) == ERR) return; } } if (old_pair >= 0 - && SP_PARM != 0 + && SP_PARM != NULL && _nc_pair_content(SP_PARM, old_pair, &old_fg, &old_bg) != ERR) { if ((isDefaultColor(fg) && !isDefaultColor(old_fg)) || (isDefaultColor(bg) && !isDefaultColor(old_bg))) { @@ -1081,7 +1083,7 @@ _nc_do_color(int old_pair, int pair, int reverse, NCURSES_OUTC outc) } #endif -#if NCURSES_EXT_COLORS +#if NCURSES_EXT_COLORS && NCURSES_EXT_FUNCS NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (NCURSES_SP_DCLx int pair, int f, int b) { @@ -1115,11 +1117,11 @@ NCURSES_SP_NAME(extended_pair_content) (NCURSES_SP_DCLx NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (NCURSES_SP_DCL0) { - if (SP_PARM != 0) { + if (SP_PARM != NULL) { if (SP_PARM->_color_pairs) { _nc_free_ordered_pairs(SP_PARM); free(SP_PARM->_color_pairs); - SP_PARM->_color_pairs = 0; + SP_PARM->_color_pairs = NULL; SP_PARM->_pair_alloc = 0; ReservePairs(SP_PARM, 16); clearok(CurScreen(SP_PARM), TRUE); diff --git a/contrib/ncurses/ncurses/base/lib_colorset.c b/contrib/ncurses/ncurses/base/lib_colorset.c index 387edef61b23..d200b9f095a5 100644 --- a/contrib/ncurses/ncurses/base/lib_colorset.c +++ b/contrib/ncurses/ncurses/base/lib_colorset.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2014,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -42,7 +42,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_colorset.c,v 1.16 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_colorset.c,v 1.17 2024/12/07 20:00:48 tom Exp $") NCURSES_EXPORT(int) wcolor_set(WINDOW *win, NCURSES_PAIRS_T pair_arg, void *opts) @@ -53,7 +53,7 @@ wcolor_set(WINDOW *win, NCURSES_PAIRS_T pair_arg, void *opts) T((T_CALLED("wcolor_set(%p,%d)"), (void *) win, color_pair)); set_extended_pair(opts, color_pair); if (win - && (SP != 0) + && (SP != NULL) && (color_pair >= 0) && (color_pair < SP->_pair_limit)) { TR(TRACE_ATTRS, ("... current %ld", (long) GET_WINDOW_PAIR(win))); diff --git a/contrib/ncurses/ncurses/base/lib_delch.c b/contrib/ncurses/ncurses/base/lib_delch.c index d39a8ebae619..a24cb677a184 100644 --- a/contrib/ncurses/ncurses/base/lib_delch.c +++ b/contrib/ncurses/ncurses/base/lib_delch.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2001,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -41,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_delch.c,v 1.14 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_delch.c,v 1.16 2024/10/19 21:20:46 tom Exp $") NCURSES_EXPORT(int) wdelch(WINDOW *win) @@ -54,8 +54,8 @@ wdelch(WINDOW *win) NCURSES_CH_T blank = win->_nc_bkgd; struct ldat *line = &(win->_line[win->_cury]); NCURSES_CH_T *end = &(line->text[win->_maxx]); - NCURSES_CH_T *temp2 = &(line->text[win->_curx + 1]); - NCURSES_CH_T *temp1 = temp2 - 1; + NCURSES_CH_T *temp1 = &(line->text[win->_curx]); + const NCURSES_CH_T *temp2 = temp1 + 1; CHANGED_TO_EOL(line, win->_curx, win->_maxx); while (temp1 < end) diff --git a/contrib/ncurses/ncurses/base/lib_delwin.c b/contrib/ncurses/ncurses/base/lib_delwin.c index c96e417a9a48..855671ca7b51 100644 --- a/contrib/ncurses/ncurses/base/lib_delwin.c +++ b/contrib/ncurses/ncurses/base/lib_delwin.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020-2021,2023 Thomas E. Dickey * + * Copyright 2020-2023,2024 Thomas E. Dickey * * Copyright 1998-2008,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -43,30 +43,31 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_delwin.c,v 1.25 2023/10/21 11:12:44 tom Exp $") +MODULE_ID("$Id: lib_delwin.c,v 1.29 2024/12/07 17:28:13 tom Exp $") static bool -cannot_delete(WINDOW *win) +cannot_delete(const WINDOW *win) { bool result = TRUE; + bool found = FALSE; + SCREEN *scan; + WINDOWLIST *p; - if (IS_PAD(win)) { - result = FALSE; - } else { - WINDOWLIST *p; -#if NCURSES_SP_FUNCS && defined(USE_SP_WINDOWLIST) - SCREEN *sp = _nc_screen_of(win); -#endif - - for (each_window(SP_PARM, p)) { + for (each_screen(scan)) { + for (each_window(scan, p)) { if (&(p->win) == win) { result = FALSE; + found = TRUE; + break; } else if (IS_SUBWIN(&(p->win)) && p->win._parent == win) { result = TRUE; + found = TRUE; break; } } + if (found) + break; } return result; } @@ -79,7 +80,7 @@ delwin(WINDOW *win) T((T_CALLED("delwin(%p)"), (void *) win)); if (_nc_try_global(curses) == 0) { - if (win == 0 + if (win == NULL || cannot_delete(win)) { result = ERR; } else if (IS_PAD(win)) { @@ -91,7 +92,7 @@ delwin(WINDOW *win) #endif if (IS_SUBWIN(win)) { touchwin(win->_parent); - } else if (CurScreen(SP_PARM) != 0) { + } else if (CurScreen(SP_PARM) != NULL) { touchwin(CurScreen(SP_PARM)); } result = _nc_freewin(win); diff --git a/contrib/ncurses/ncurses/base/lib_dft_fgbg.c b/contrib/ncurses/ncurses/base/lib_dft_fgbg.c index 4dd43bb1bbd0..78d4c568bf62 100644 --- a/contrib/ncurses/ncurses/base/lib_dft_fgbg.c +++ b/contrib/ncurses/ncurses/base/lib_dft_fgbg.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2014,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_dft_fgbg.c,v 1.31 2021/04/03 22:27:18 tom Exp $") +MODULE_ID("$Id: lib_dft_fgbg.c,v 1.34 2025/12/27 12:28:45 tom Exp $") /* * Modify the behavior of color-pair 0 so that the library doesn't assume that @@ -69,17 +69,17 @@ NCURSES_SP_NAME(assume_default_colors) (NCURSES_SP_DCLx int fg, int bg) int code = ERR; T((T_CALLED("assume_default_colors(%p,%d,%d)"), (void *) SP_PARM, fg, bg)); - if (SP_PARM != 0) { -#ifdef USE_TERM_DRIVER + if (SP_PARM != NULL) { +#if USE_TERM_DRIVER code = CallDriver_2(SP_PARM, td_defaultcolors, fg, bg); #else if ((orig_pair || orig_colors) && !initialize_pair) { SP_PARM->_default_color = isDefaultColor(fg) || isDefaultColor(bg); - SP_PARM->_has_sgr_39_49 = (tigetflag("AX") == TRUE); + SP_PARM->_has_sgr_39_49 = (tigetflag(UserCap(AX)) == TRUE); SP_PARM->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : fg; SP_PARM->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : bg; - if (SP_PARM->_color_pairs != 0) { + if (SP_PARM->_color_pairs != NULL) { bool save = SP_PARM->_default_color; SP_PARM->_assumed_color = TRUE; SP_PARM->_default_color = TRUE; diff --git a/contrib/ncurses/ncurses/base/lib_driver.c b/contrib/ncurses/ncurses/base/lib_driver.c index c53802f3732a..1a4b6a89355b 100644 --- a/contrib/ncurses/ncurses/base/lib_driver.c +++ b/contrib/ncurses/ncurses/base/lib_driver.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 2009-2012,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -34,51 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_driver.c,v 1.9 2020/08/29 19:53:35 tom Exp $") - -#ifndef EXP_WIN32_DRIVER -typedef struct DriverEntry { - const char *name; - TERM_DRIVER *driver; -} DRIVER_ENTRY; - -static DRIVER_ENTRY DriverTable[] = -{ -#ifdef _WIN32 - {"win32console", &_nc_WIN_DRIVER}, -#endif - {"tinfo", &_nc_TINFO_DRIVER} /* must be last */ -}; - -NCURSES_EXPORT(int) -_nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret) -{ - int code = ERR; - size_t i; - TERM_DRIVER *res = (TERM_DRIVER *) 0; - TERM_DRIVER *use = 0; - - T((T_CALLED("_nc_get_driver(%p, %s, %p)"), - (void *) TCB, NonNull(name), (void *) errret)); - - assert(TCB != 0); - - for (i = 0; i < SIZEOF(DriverTable); i++) { - res = DriverTable[i].driver; - if (strcmp(DriverTable[i].name, res->td_name(TCB)) == 0) { - if (res->td_CanHandle(TCB, name, errret)) { - use = res; - break; - } - } - } - if (use != 0) { - TCB->drv = use; - code = OK; - } - returnCode(code); -} -#endif /* !EXP_WIN32_DRIVER */ +MODULE_ID("$Id: lib_driver.c,v 1.12 2025/10/18 19:20:33 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(has_key) (SCREEN *sp, int keycode) @@ -98,7 +54,7 @@ NCURSES_SP_NAME(_nc_mcprint) (SCREEN *sp, char *data, int len) { int code = ERR; - if (0 != TerminalOf(sp)) + if (NULL != TerminalOf(sp)) code = CallDriver_2(sp, td_print, data, len); return (code); } diff --git a/contrib/ncurses/ncurses/base/lib_echo.c b/contrib/ncurses/ncurses/base/lib_echo.c index de7832f4afc1..381f51fbedd6 100644 --- a/contrib/ncurses/ncurses/base/lib_echo.c +++ b/contrib/ncurses/ncurses/base/lib_echo.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2023 Thomas E. Dickey * + * Copyright 2020-2023,2024 Thomas E. Dickey * * Copyright 1998-2000,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -45,13 +45,13 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_echo.c,v 1.10 2023/04/29 18:57:12 tom Exp $") +MODULE_ID("$Id: lib_echo.c,v 1.11 2024/12/07 20:00:48 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (NCURSES_SP_DCL0) { T((T_CALLED("echo(%p)"), (void *) SP_PARM)); - if (0 == SP_PARM) + if (NULL == SP_PARM) returnCode(ERR); IsEcho(SP_PARM) = TRUE; returnCode(OK); @@ -69,7 +69,7 @@ NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (NCURSES_SP_DCL0) { T((T_CALLED("noecho(%p)"), (void *) SP_PARM)); - if (0 == SP_PARM) + if (NULL == SP_PARM) returnCode(ERR); IsEcho(SP_PARM) = FALSE; returnCode(OK); diff --git a/contrib/ncurses/ncurses/base/lib_endwin.c b/contrib/ncurses/ncurses/base/lib_endwin.c index 85d2bdbaac05..4cff0e7051b9 100644 --- a/contrib/ncurses/ncurses/base/lib_endwin.c +++ b/contrib/ncurses/ncurses/base/lib_endwin.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2023 Thomas E. Dickey * + * Copyright 2020-2023,2025 Thomas E. Dickey * * Copyright 1998-2014,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -43,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_endwin.c,v 1.28 2023/11/11 21:27:32 tom Exp $") +MODULE_ID("$Id: lib_endwin.c,v 1.29 2025/12/27 12:41:23 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0) @@ -54,7 +54,7 @@ NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0) if (SP_PARM != NULL) { if (SP_PARM->_endwin != ewSuspend) { -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER TERMINAL_CONTROL_BLOCK *TCB = TCBOf(SP_PARM); SP_PARM->_endwin = ewSuspend; diff --git a/contrib/ncurses/ncurses/base/lib_erase.c b/contrib/ncurses/ncurses/base/lib_erase.c index aa9437a19ef1..461acddaf39b 100644 --- a/contrib/ncurses/ncurses/base/lib_erase.c +++ b/contrib/ncurses/ncurses/base/lib_erase.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2022 Thomas E. Dickey * + * Copyright 2020-2022,2024 Thomas E. Dickey * * Copyright 1998-2009,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -42,7 +42,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_erase.c,v 1.20 2022/09/03 21:40:27 tom Exp $") +MODULE_ID("$Id: lib_erase.c,v 1.21 2024/12/07 20:00:48 tom Exp $") NCURSES_EXPORT(int) werase(WINDOW *win) @@ -71,7 +71,7 @@ werase(WINDOW *win) */ if_WIDEC({ if (isWidecExt(start[0])) { - int x = (win->_parent != 0) ? (win->_begx) : 0; + int x = (win->_parent != NULL) ? (win->_begx) : 0; while (x-- > 0) { if (isWidecBase(start[-1])) { --start; diff --git a/contrib/ncurses/ncurses/base/lib_flash.c b/contrib/ncurses/ncurses/base/lib_flash.c index 975d5f5678f8..2bbfc5231b2c 100644 --- a/contrib/ncurses/ncurses/base/lib_flash.c +++ b/contrib/ncurses/ncurses/base/lib_flash.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2013,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -47,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_flash.c,v 1.15 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_flash.c,v 1.17 2025/12/27 12:41:23 tom Exp $") /* * flash() @@ -63,8 +63,8 @@ NCURSES_SP_NAME(flash) (NCURSES_SP_DCL0) int res = ERR; T((T_CALLED("flash(%p)"), (void *) SP_PARM)); -#ifdef USE_TERM_DRIVER - if (SP_PARM != 0) +#if USE_TERM_DRIVER + if (SP_PARM != NULL) res = CallDriver_1(SP_PARM, td_doBeepOrFlash, FALSE); #else if (HasTerminal(SP_PARM)) { diff --git a/contrib/ncurses/ncurses/base/lib_freeall.c b/contrib/ncurses/ncurses/base/lib_freeall.c index 75bbe77e3409..304ef8f6a9f3 100644 --- a/contrib/ncurses/ncurses/base/lib_freeall.c +++ b/contrib/ncurses/ncurses/base/lib_freeall.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2018-2021,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -40,7 +40,7 @@ extern int malloc_errfd; /* FIXME */ #endif -MODULE_ID("$Id: lib_freeall.c,v 1.76 2021/11/06 21:52:49 tom Exp $") +MODULE_ID("$Id: lib_freeall.c,v 1.78 2024/12/07 18:00:11 tom Exp $") /* * Free all ncurses data. This is used for testing only (there's no practical @@ -54,11 +54,11 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0) T((T_CALLED("_nc_freeall()"))); #if NO_LEAKS _nc_globals.leak_checking = TRUE; - if (SP_PARM != 0) { - if (SP_PARM->_oldnum_list != 0) { + if (SP_PARM != NULL) { + if (SP_PARM->_oldnum_list != NULL) { FreeAndNull(SP_PARM->_oldnum_list); } - if (SP_PARM->_panelHook.destroy != 0) { + if (SP_PARM->_panelHook.destroy != NULL) { SP_PARM->_panelHook.destroy(SP_PARM->_panelHook.stdscr_pseudo_panel); } #if NCURSES_EXT_COLORS @@ -66,10 +66,10 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0) #endif } #endif - if (SP_PARM != 0) { + if (SP_PARM != NULL) { _nc_lock_global(curses); - while (WindowList(SP_PARM) != 0) { + while (WindowList(SP_PARM) != NULL) { WINDOWLIST *p, *q; bool deleted = FALSE; @@ -87,7 +87,7 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0) #endif for (each_window(SP_PARM, q)) { - WINDOW *q_win = &(q->win); + const WINDOW *q_win = &(q->win); #ifndef USE_SP_WINDOWLIST if (q->screen != SP_PARM) @@ -119,7 +119,7 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0) _nc_unlock_global(curses); } - (void) _nc_printf_string(0, empty_va); + (void) _nc_printf_string(NULL, empty_va); #ifdef TRACE (void) _nc_trace_buf(-1, (size_t) 0); #endif diff --git a/contrib/ncurses/ncurses/base/lib_getch.c b/contrib/ncurses/ncurses/base/lib_getch.c index 8e4767918bdd..e5f6c0041cc2 100644 --- a/contrib/ncurses/ncurses/base/lib_getch.c +++ b/contrib/ncurses/ncurses/base/lib_getch.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2022,2023 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2015,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -44,7 +44,7 @@ #define NEED_KEY_EVENT #include <curses.priv.h> -MODULE_ID("$Id: lib_getch.c,v 1.146 2023/04/29 18:57:12 tom Exp $") +MODULE_ID("$Id: lib_getch.c,v 1.154 2025/12/27 12:28:45 tom Exp $") #include <fifo_defs.h> @@ -134,17 +134,6 @@ _nc_use_meta(WINDOW *win) return (sp ? sp->_use_meta : 0); } -#ifdef USE_TERM_DRIVER -# if defined(_NC_WINDOWS) && !defined(EXP_WIN32_DRIVER) -static HANDLE -_nc_get_handle(int fd) -{ - intptr_t value = _get_osfhandle(fd); - return (HANDLE) value; -} -# endif -#endif - /* * Check for mouse activity, returning nonzero if we find any. */ @@ -153,22 +142,16 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl)) { int rc; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER TERMINAL_CONTROL_BLOCK *TCB = TCBOf(sp); rc = TCBOf(sp)->drv->td_testmouse(TCBOf(sp), delay EVENTLIST_2nd(evl)); -# if defined(EXP_WIN32_DRIVER) +# if USE_NAMED_PIPES || defined(_NC_WINDOWS_NATIVE) /* if we emulate terminfo on console, we have to use the console routine */ if (IsTermInfoOnConsole(sp)) { rc = _nc_console_testmouse(sp, _nc_console_handle(sp->_ifd), delay EVENTLIST_2nd(evl)); } else -# elif defined(_NC_WINDOWS) - /* if we emulate terminfo on console, we have to use the console routine */ - if (IsTermInfoOnConsole(sp)) { - HANDLE fd = _nc_get_handle(sp->_ifd); - rc = _nc_mingw_testmouse(sp, fd, delay EVENTLIST_2nd(evl)); - } else # endif rc = TCB->drv->td_testmouse(TCB, delay EVENTLIST_2nd(evl)); #else /* !USE_TERM_DRIVER */ @@ -179,7 +162,7 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl)) } else # endif { -# if defined(EXP_WIN32_DRIVER) +# if USE_NAMED_PIPES rc = _nc_console_testmouse(sp, _nc_console_handle(sp->_ifd), delay @@ -289,7 +272,7 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) n = 1; } else #endif -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER if ((sp->_mouse_type == M_TERM_DRIVER) && (sp->_drv_mouse_head < sp->_drv_mouse_tail)) { sp->_mouse_event(sp); @@ -305,9 +288,9 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) } else #endif { /* Can block... */ -#if defined(USE_TERM_DRIVER) +#if USE_TERM_DRIVER int buf; -# if defined(EXP_WIN32_DRIVER) +# if USE_NAMED_PIPES || defined(_NC_WINDOWS_NATIVE) if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && IsCbreak(sp)) { _nc_set_read_thread(TRUE); n = _nc_console_read(sp, @@ -315,23 +298,17 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) &buf); _nc_set_read_thread(FALSE); } else -# elif defined(_NC_WINDOWS) - if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && IsCbreak(sp)) - n = _nc_mingw_console_read(sp, - _nc_get_handle(sp->_ifd), - &buf); - else -# endif /* EXP_WIN32_DRIVER */ +# endif /* USE_NAMED_PIPES */ n = CallDriver_1(sp, td_read, &buf); ch = buf; #else /* !USE_TERM_DRIVER */ -#if defined(EXP_WIN32_DRIVER) +#if USE_NAMED_PIPES int buf; #endif unsigned char c2 = 0; _nc_set_read_thread(TRUE); -#if defined(EXP_WIN32_DRIVER) +#if USE_NAMED_PIPES n = _nc_console_read(sp, _nc_console_handle(sp->_ifd), &buf); @@ -414,7 +391,7 @@ recur_wgetnstr(WINDOW *win, char *buf) SCREEN *sp = _nc_screen_of(win); int rc; - if (sp != 0) { + if (sp != NULL) { #ifdef USE_PTHREADS if (_nc_use_pthreads && sp != CURRENT_SCREEN) { SCREEN *save_SP; @@ -457,7 +434,7 @@ _nc_wgetch(WINDOW *win, *result = 0; sp = _nc_screen_of(win); - if (win == 0 || sp == 0) { + if (win == NULL || sp == NULL) { returnCode(ERR); } @@ -513,7 +490,7 @@ _nc_wgetch(WINDOW *win, recur_wrefresh(win); - if (win->_notimeout || (win->_delay >= 0) || (IsCbreak(sp) > 1)) { + if ((win->_delay >= 0) || (IsCbreak(sp) > 1)) { if (head == -1) { /* fifo is empty */ int delay; diff --git a/contrib/ncurses/ncurses/base/lib_getstr.c b/contrib/ncurses/ncurses/base/lib_getstr.c index cac21fc85bd9..8e7d6dc05f5a 100644 --- a/contrib/ncurses/ncurses/base/lib_getstr.c +++ b/contrib/ncurses/ncurses/base/lib_getstr.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2021,2023 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2011,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -42,14 +42,14 @@ #define NEED_KEY_EVENT #include <curses.priv.h> -MODULE_ID("$Id: lib_getstr.c,v 1.39 2023/04/29 19:00:17 tom Exp $") +MODULE_ID("$Id: lib_getstr.c,v 1.42 2025/01/19 00:51:54 tom Exp $") /* * This wipes out the last character, no matter whether it was a tab, control * or other character, and handles reverse wraparound. */ static char * -WipeOut(WINDOW *win, int y, int x, char *first, char *last, int echoed) +WipeOut(WINDOW *win, int y, int x, const char *first, char *last, int echoed) { if (last > first) { *--last = '\0'; @@ -81,11 +81,11 @@ wgetnstr_events(WINDOW *win, TTY_FLAGS save_flags; char erasec; char killc; - char *oldstr; + const char *oldstr; int ch; int y, x; - T((T_CALLED("wgetnstr(%p,%p,%d)"), (void *) win, (void *) str, maxlen)); + T((T_CALLED("wgetnstr_events(%p,%p,%d)"), (void *) win, (void *) str, maxlen)); if (!win || !str) returnCode(ERR); @@ -195,7 +195,7 @@ wgetnstr_events(WINDOW *win, if (ch == ERR) returnCode(ch); - T(("wgetnstr returns %s", _nc_visbuf(oldstr))); + T(("wgetnstr_events returns %s", _nc_visbuf(oldstr))); #ifdef KEY_EVENT if (ch == KEY_EVENT) diff --git a/contrib/ncurses/ncurses/base/lib_initscr.c b/contrib/ncurses/ncurses/base/lib_initscr.c index 6b9149135501..782e0659cac1 100644 --- a/contrib/ncurses/ncurses/base/lib_initscr.c +++ b/contrib/ncurses/ncurses/base/lib_initscr.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2019-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -46,7 +46,7 @@ #include <sys/termio.h> /* needed for ISC */ #endif -MODULE_ID("$Id: lib_initscr.c,v 1.48 2020/09/07 14:26:48 tom Exp $") +MODULE_ID("$Id: lib_initscr.c,v 1.52 2025/03/09 00:49:14 tom Exp $") NCURSES_EXPORT(WINDOW *) initscr(void) @@ -70,7 +70,8 @@ initscr(void) (void) VALID_TERM_ENV(env, "unknown"); if ((name = strdup(env)) == NULL) { - fprintf(stderr, "Error opening allocating $TERM.\n"); + fprintf(stderr, "ncurses: cannot allocate %d bytes of" + "memory for $TERM; exiting\n", (int) strlen(env)); ExitProgram(EXIT_FAILURE); } #ifdef __CYGWIN__ @@ -90,8 +91,9 @@ initscr(void) } } #endif - if (newterm(name, stdout, stdin) == 0) { - fprintf(stderr, "Error opening terminal: %s.\n", name); + if (newterm(name, stdout, stdin) == NULL) { + fprintf(stderr, "ncurses: cannot initialize terminal type" + " ($TERM=\"%s\"); exiting\n", name); ExitProgram(EXIT_FAILURE); } diff --git a/contrib/ncurses/ncurses/base/lib_insch.c b/contrib/ncurses/ncurses/base/lib_insch.c index 894605ccfa98..430bcf210e8d 100644 --- a/contrib/ncurses/ncurses/base/lib_insch.c +++ b/contrib/ncurses/ncurses/base/lib_insch.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2013,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -44,7 +44,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_insch.c,v 1.37 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_insch.c,v 1.39 2024/12/07 17:40:33 tom Exp $") /* * Insert the given character, updating the current location to simplify @@ -85,12 +85,12 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch) #endif (isprint(ch8) || (ChAttrOf(ch) & A_ALTCHARSET) || - (sp != 0 && sp->_legacy_coding && !iscntrl(ch8)))) { + (sp != NULL && sp->_legacy_coding && !iscntrl(ch8)))) { if (win->_curx <= win->_maxx) { struct ldat *line = &(win->_line[win->_cury]); NCURSES_CH_T *end = &(line->text[win->_curx]); NCURSES_CH_T *temp1 = &(line->text[win->_maxx]); - NCURSES_CH_T *temp2 = temp1 - 1; + const NCURSES_CH_T *temp2 = temp1 - 1; SetChar2(wch, ch); @@ -151,7 +151,7 @@ winsch(WINDOW *win, chtype c) T((T_CALLED("winsch(%p, %s)"), (void *) win, _tracechtype(c))); - if (win != 0) { + if (win != NULL) { NCURSES_SIZE_T oy = win->_cury; NCURSES_SIZE_T ox = win->_curx; diff --git a/contrib/ncurses/ncurses/base/lib_insnstr.c b/contrib/ncurses/ncurses/base/lib_insnstr.c index caec48e8eb70..b3eb216b93ff 100644 --- a/contrib/ncurses/ncurses/base/lib_insnstr.c +++ b/contrib/ncurses/ncurses/base/lib_insnstr.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2022,2023 Thomas E. Dickey * + * Copyright 2018-2023,2024 Thomas E. Dickey * * Copyright 2004-2009,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -41,7 +41,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_insnstr.c,v 1.10 2023/11/21 21:58:03 tom Exp $") +MODULE_ID("$Id: lib_insnstr.c,v 1.11 2024/12/07 20:00:48 tom Exp $") NCURSES_EXPORT(int) winsnstr(WINDOW *win, const char *s, int n) @@ -51,7 +51,7 @@ winsnstr(WINDOW *win, const char *s, int n) T((T_CALLED("winsnstr(%p,%s,%d)"), (void *) win, _nc_visbufn(s, n), n)); - if (win != 0 && str != 0 && n != 0) { + if (win != NULL && str != NULL && n != 0) { SCREEN *sp = _nc_screen_of(win); #if USE_WIDEC_SUPPORT /* @@ -64,7 +64,7 @@ winsnstr(WINDOW *win, const char *s, int n) if (sp->_screen_unicode) { size_t nn = (n > 0) ? (size_t) n : strlen(s); wchar_t *buffer = typeMalloc(wchar_t, nn + 1); - if (buffer != 0) { + if (buffer != NULL) { mbstate_t state; size_t n3; init_mb(state); diff --git a/contrib/ncurses/ncurses/base/lib_instr.c b/contrib/ncurses/ncurses/base/lib_instr.c index 221ebd290400..c9016b659a6f 100644 --- a/contrib/ncurses/ncurses/base/lib_instr.c +++ b/contrib/ncurses/ncurses/base/lib_instr.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020-2021,2023 Thomas E. Dickey * + * Copyright 2020-2023,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -42,7 +42,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_instr.c,v 1.26 2023/06/03 12:37:04 tom Exp $") +MODULE_ID("$Id: lib_instr.c,v 1.28 2024/12/07 17:53:39 tom Exp $") NCURSES_EXPORT(int) winnstr(WINDOW *win, char *str, int n) @@ -63,7 +63,7 @@ winnstr(WINDOW *win, char *str, int n) for (; i < n;) { #if USE_WIDEC_SUPPORT - cchar_t *cell = &(text[col]); + const cchar_t *cell = &(text[col]); attr_t attrs; NCURSES_PAIRS_T pair; char *tmp; @@ -72,17 +72,17 @@ winnstr(WINDOW *win, char *str, int n) wchar_t *wch; int n2; - n2 = getcchar(cell, 0, 0, 0, 0); + n2 = getcchar(cell, NULL, NULL, NULL, NULL); if (n2 > 0 - && (wch = typeCalloc(wchar_t, (unsigned) n2 + 1)) != 0) { + && (wch = typeCalloc(wchar_t, (unsigned) n2 + 1)) != NULL) { bool done = FALSE; - if (getcchar(cell, wch, &attrs, &pair, 0) == OK) { + if (getcchar(cell, wch, &attrs, &pair, NULL) == OK) { mbstate_t state; size_t n3; init_mb(state); - n3 = wcstombs(0, wch, (size_t) 0); + n3 = wcstombs(NULL, wch, (size_t) 0); if (!isEILSEQ(n3) && (n3 != 0) && (n3 <= MB_LEN_MAX)) { size_t need = n3 + 10 + (size_t) i; int have = (int) n3 + i; @@ -90,7 +90,7 @@ winnstr(WINDOW *win, char *str, int n) /* check for loop-done as well as overflow */ if (have > n || (int) need <= 0) { done = TRUE; - } else if ((tmp = typeCalloc(char, need)) == 0) { + } else if ((tmp = typeCalloc(char, need)) == NULL) { done = TRUE; } else { size_t i3; diff --git a/contrib/ncurses/ncurses/base/lib_mouse.c b/contrib/ncurses/ncurses/base/lib_mouse.c index a03d8b8e1ab0..eb36ad2da817 100644 --- a/contrib/ncurses/ncurses/base/lib_mouse.c +++ b/contrib/ncurses/ncurses/base/lib_mouse.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2023,2024 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -44,7 +44,7 @@ * sysmouse (FreeBSD) * special-purpose mouse interface for OS/2 EMX. * - * Notes for implementors of new mouse-interface methods: + * Notes for implementers of new mouse-interface methods: * * The code is logically split into a lower level that accepts event reports * in a device-dependent format and an upper level that parses mouse gestures @@ -70,7 +70,6 @@ */ #ifdef __EMX__ -# include <io.h> # define INCL_DOS # define INCL_VIO # define INCL_KBD @@ -85,7 +84,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_mouse.c,v 1.200 2024/02/17 21:13:01 tom Exp $") +MODULE_ID("$Id: lib_mouse.c,v 1.219 2025/12/30 17:23:24 tom Exp $") #include <tic.h> @@ -380,7 +379,7 @@ handle_sysmouse(int sig GCC_UNUSED) } #endif /* USE_SYSMOUSE */ -#if !defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER) +#if !defined(_NC_WINDOWS_NATIVE) || USE_NAMED_PIPES #define xterm_kmous "\033[M" static void @@ -388,10 +387,10 @@ init_xterm_mouse(SCREEN *sp) { sp->_mouse_type = M_XTERM; sp->_mouse_format = MF_X10; - sp->_mouse_xtermcap = tigetstr("XM"); + sp->_mouse_xtermcap = tigetstr(UserCap(XM)); if (VALID_STRING(sp->_mouse_xtermcap)) { char *code = strstr(sp->_mouse_xtermcap, "[?"); - if (code != 0) { + if (code != NULL) { code += 2; while ((*code >= '0') && (*code <= '9')) { char *next = code; @@ -417,7 +416,7 @@ init_xterm_mouse(SCREEN *sp) } } } else { - int code = tigetnum("XM"); + int code = tigetnum(UserCap(XM)); switch (code) { #ifdef EXP_XTERM_1005 case 1005: @@ -440,7 +439,7 @@ init_xterm_mouse(SCREEN *sp) #endif static void -enable_xterm_mouse(SCREEN *sp, int enable) +enable_xterm_mouse(SCREEN *sp, bool enable) { TPUTS_TRACE(enable ? "xterm mouse initialization" @@ -453,11 +452,11 @@ enable_xterm_mouse(SCREEN *sp, int enable) sp->_mouse_active = enable; } -#if defined(USE_TERM_DRIVER) +#if USE_TERM_DRIVER static void -enable_win32_mouse(SCREEN *sp, int enable) +enable_win32_mouse(SCREEN *sp, bool enable) { -#if defined(EXP_WIN32_DRIVER) +#if USE_NAMED_PIPES enable_xterm_mouse(sp, enable); #else sp->_mouse_active = enable; @@ -483,9 +482,9 @@ allow_gpm_mouse(SCREEN *sp GCC_UNUSED) if (NC_ISATTY(fileno(stdout))) { const char *list = getenv("NCURSES_GPM_TERMS"); const char *env = getenv("TERM"); - if (list != 0) { - if (env != 0) { - result = _nc_name_match(list, env, "|:"); + if (list != NULL) { + if (env != NULL) { + result = _nc_name_match(list, env, "|:") ? TRUE : FALSE; } } else { /* GPM checks the beginning of the $TERM variable to decide if it @@ -495,7 +494,7 @@ allow_gpm_mouse(SCREEN *sp GCC_UNUSED) * capability. Perhaps that works for someone. If so, they can * set the environment variable (above). */ - if (env != 0 && strstr(env, "linux") != 0) { + if (env != NULL && strstr(env, "linux") != NULL) { result = TRUE; } } @@ -507,7 +506,7 @@ allow_gpm_mouse(SCREEN *sp GCC_UNUSED) static void unload_gpm_library(SCREEN *sp) { - if (sp->_dlopen_gpm != 0) { + if (sp->_dlopen_gpm != NULL) { T(("unload GPM library")); sp->_mouse_gpm_loaded = FALSE; sp->_mouse_fd = -1; @@ -522,25 +521,25 @@ load_gpm_library(SCREEN *sp) /* * If we already had a successful dlopen, reuse it. */ - if (sp->_dlopen_gpm != 0) { + if (sp->_dlopen_gpm != NULL) { sp->_mouse_gpm_found = TRUE; sp->_mouse_gpm_loaded = TRUE; - } else if ((sp->_dlopen_gpm = dlopen(LIBGPM_SONAME, my_RTLD)) != 0) { + } else if ((sp->_dlopen_gpm = dlopen(LIBGPM_SONAME, my_RTLD)) != NULL) { #if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpedantic" #endif - if (GET_DLSYM(gpm_fd) == 0 || - GET_DLSYM(Gpm_Open) == 0 || - GET_DLSYM(Gpm_Close) == 0 || - GET_DLSYM(Gpm_GetEvent) == 0) { + if (GET_DLSYM(gpm_fd) == NULL || + GET_DLSYM(Gpm_Open) == NULL || + GET_DLSYM(Gpm_Close) == NULL || + GET_DLSYM(Gpm_GetEvent) == NULL) { #if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__) #pragma GCC diagnostic pop #endif T(("GPM initialization failed: %s", dlerror())); unload_gpm_library(sp); dlclose(sp->_dlopen_gpm); - sp->_dlopen_gpm = 0; + sp->_dlopen_gpm = NULL; } else { sp->_mouse_gpm_found = TRUE; sp->_mouse_gpm_loaded = TRUE; @@ -754,14 +753,15 @@ initialize_mousetype(SCREEN *sp) } #endif /* USE_SYSMOUSE */ -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER CallDriver(sp, td_initmouse); #endif -#if !defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER) +#if !defined(_NC_WINDOWS_NATIVE) || USE_NAMED_PIPES /* we know how to recognize mouse events under "xterm" */ if (NonEmpty(key_mouse)) { init_xterm_mouse(sp); - } else if (strstr(SP_TERMTYPE term_names, "xterm") != 0) { + } else if (SP_TERMTYPE term_names != NULL + && strstr(SP_TERMTYPE term_names, "xterm") != NULL) { if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK) init_xterm_mouse(sp); } @@ -778,7 +778,7 @@ _nc_mouse_init(SCREEN *sp) T((T_CALLED("_nc_mouse_init(%p)"), (void *) sp)); - if (sp != 0) { + if (sp != NULL) { if (!sp->_mouse_initialized) { int i; @@ -786,7 +786,7 @@ _nc_mouse_init(SCREEN *sp) TR(MY_TRACE, ("set _mouse_initialized")); - sp->_mouse_eventp = FirstEV(sp); + sp->_mouse_readp = sp->_mouse_writep = FirstEV(sp); for (i = 0; i < EV_MAX; i++) Invalidate(sp->_mouse_events + i); @@ -796,7 +796,7 @@ _nc_mouse_init(SCREEN *sp) } result = sp->_mouse_initialized; } - returnCode(result); + returnBool(result); } /* @@ -806,7 +806,7 @@ _nc_mouse_init(SCREEN *sp) static bool _nc_mouse_event(SCREEN *sp) { - MEVENT *eventp = sp->_mouse_eventp; + MEVENT *eventp = sp->_mouse_writep; bool result = FALSE; (void) eventp; @@ -874,7 +874,7 @@ _nc_mouse_event(SCREEN *sp) eventp->z = 0; /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = NEXT(eventp); + sp->_mouse_writep = NEXT(eventp); result = TRUE; break; } @@ -899,13 +899,13 @@ _nc_mouse_event(SCREEN *sp) } /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = eventp = NEXT(eventp); + sp->_mouse_writep = eventp = NEXT(eventp); result = TRUE; } break; #endif /* USE_SYSMOUSE */ -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER case M_TERM_DRIVER: while (sp->_drv_mouse_head < sp->_drv_mouse_tail) { *eventp = sp->_drv_mouse_fifo[sp->_drv_mouse_head]; @@ -921,7 +921,7 @@ _nc_mouse_event(SCREEN *sp) } /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = eventp = NEXT(eventp); + sp->_mouse_writep = eventp = NEXT(eventp); result = TRUE; } break; @@ -984,7 +984,12 @@ handle_wheel(SCREEN *sp, MEVENT * eventp, int button, int wheel) } break; case 2: - PRESS_POSITION(3); + if (wheel) { + /* Ignore this event as it is not a true press of the button */ + eventp->bstate = REPORT_MOUSE_POSITION; + } else { + PRESS_POSITION(3); + } break; default: /* @@ -1114,7 +1119,7 @@ decode_xterm_X10(SCREEN *sp, MEVENT * eventp) sp->_ifd, #endif kbuf + grabbed, (size_t) (MAX_KBUF - (int) grabbed)); - if (res == -1) + if (res < 0) break; } _nc_set_read_thread(FALSE); @@ -1162,7 +1167,7 @@ decode_xterm_1005(SCREEN *sp, MEVENT * eventp) sp->_ifd, #endif (kbuf + grabbed), (size_t) 1); - if (res == -1) + if (res < 0) break; grabbed += (size_t) res; if (grabbed > 1) { @@ -1219,7 +1224,7 @@ typedef struct { } SGR_DATA; static bool -read_SGR(SCREEN *sp, SGR_DATA * result) +read_SGR(const SCREEN *sp, SGR_DATA * result) { char kbuf[80]; /* bigger than any possible mouse response */ int grabbed = 0; @@ -1240,7 +1245,7 @@ read_SGR(SCREEN *sp, SGR_DATA * result) sp->_ifd, #endif (kbuf + grabbed), (size_t) 1); - if (res == -1) + if (res < 0) break; if ((grabbed + MAX_KBUF) >= (int) sizeof(kbuf)) { result->nerror++; @@ -1355,9 +1360,9 @@ _nc_mouse_inline(SCREEN *sp) /* mouse report received in the keyboard stream -- parse its info */ { bool result = FALSE; - MEVENT *eventp = sp->_mouse_eventp; + MEVENT *eventp = sp->_mouse_writep; - TR(MY_TRACE, ("_nc_mouse_inline() called")); + TR(MY_TRACE, (T_CALLED("_nc_mouse_inline(%p)"), (void *) sp)); if (sp->_mouse_type == M_XTERM) { switch (sp->_mouse_format) { @@ -1380,7 +1385,7 @@ _nc_mouse_inline(SCREEN *sp) (long) IndexEV(sp, eventp))); /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = NEXT(eventp); + sp->_mouse_writep = NEXT(eventp); if (!result) { /* If this event is from a wheel-mouse, treat it like position @@ -1400,11 +1405,11 @@ _nc_mouse_inline(SCREEN *sp) } } - return (result); + returnCode(result); } static void -mouse_activate(SCREEN *sp, int on) +mouse_activate(SCREEN *sp, bool on) { T((T_CALLED("mouse_activate(%p,%s)"), (void *) SP_PARM, on ? "on" : "off")); @@ -1422,7 +1427,7 @@ mouse_activate(SCREEN *sp, int on) #if NCURSES_EXT_FUNCS NCURSES_SP_NAME(keyok) (NCURSES_SP_ARGx KEY_MOUSE, on); #endif - enable_xterm_mouse(sp, 1); + enable_xterm_mouse(sp, TRUE); break; #if USE_GPM_SUPPORT case M_GPM: @@ -1438,7 +1443,7 @@ mouse_activate(SCREEN *sp, int on) sp->_mouse_active = TRUE; break; #endif -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER case M_TERM_DRIVER: enable_win32_mouse(sp, TRUE); break; @@ -1462,7 +1467,7 @@ mouse_activate(SCREEN *sp, int on) switch (sp->_mouse_type) { case M_XTERM: - enable_xterm_mouse(sp, 0); + enable_xterm_mouse(sp, FALSE); break; #if USE_GPM_SUPPORT case M_GPM: @@ -1475,7 +1480,7 @@ mouse_activate(SCREEN *sp, int on) sp->_mouse_active = FALSE; break; #endif -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER case M_TERM_DRIVER: enable_win32_mouse(sp, FALSE); break; @@ -1501,7 +1506,7 @@ static bool _nc_mouse_parse(SCREEN *sp, int runcount) /* parse a run of atomic mouse events into a gesture */ { - MEVENT *eventp = sp->_mouse_eventp; + MEVENT *eventp = sp->_mouse_writep; MEVENT *next, *ep; MEVENT *first_valid = NULL; MEVENT *first_invalid = NULL; @@ -1510,7 +1515,14 @@ _nc_mouse_parse(SCREEN *sp, int runcount) bool merge; bool endLoop; - TR(MY_TRACE, ("_nc_mouse_parse(%d) called", runcount)); + TR(MY_TRACE, (T_CALLED("_nc_mouse_parse(%d)"), runcount)); + + if (!sp->_maxclick + && sp->_mouse_readp != NULL + && ValidEvent(sp->_mouse_readp) + && ((sp->_mouse_readp->bstate & sp->_mouse_mask) != 0)) { + returnCode(1); + } /* * When we enter this routine, the event list next-free pointer @@ -1723,7 +1735,7 @@ _nc_mouse_parse(SCREEN *sp, int runcount) if (first_invalid == NULL) { first_invalid = eventp; } - sp->_mouse_eventp = first_invalid; + sp->_mouse_writep = first_invalid; #ifdef TRACE if (first_valid != NULL) { @@ -1746,7 +1758,7 @@ _nc_mouse_parse(SCREEN *sp, int runcount) /* after all this, do we have a valid event? */ ep = PREV(first_invalid); - return ValidEvent(ep) && ((ep->bstate & sp->_mouse_mask) != 0); + returnCode(ValidEvent(ep) && ((ep->bstate & sp->_mouse_mask) != 0)); } static void @@ -1772,7 +1784,7 @@ _nc_mouse_wrap(SCREEN *sp) mouse_activate(sp, FALSE); break; #endif -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER case M_TERM_DRIVER: mouse_activate(sp, FALSE); break; @@ -1809,7 +1821,7 @@ _nc_mouse_resume(SCREEN *sp) break; #endif -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER case M_TERM_DRIVER: mouse_activate(sp, TRUE); break; @@ -1830,36 +1842,34 @@ NCURSES_EXPORT(int) NCURSES_SP_NAME(getmouse) (NCURSES_SP_DCLx MEVENT * aevent) { int result = ERR; - MEVENT *eventp; + MEVENT *readp; T((T_CALLED("getmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent)); - if ((aevent != 0) && - (SP_PARM != 0) && + if ((aevent != NULL) && + (SP_PARM != NULL) && (SP_PARM->_mouse_type != M_NONE) && - (eventp = SP_PARM->_mouse_eventp) != 0) { - /* compute the current-event pointer */ - MEVENT *prev = PREV(eventp); - + (readp = SP_PARM->_mouse_readp) != NULL) { /* * Discard events not matching mask (there could be still some if * _nc_mouse_parse was not called, e.g., when _nc_mouse_inline returns * false). */ - while (ValidEvent(prev) && (!(prev->bstate & SP_PARM->_mouse_mask2))) { - Invalidate(prev); - prev = PREV(prev); + while (readp != SP_PARM->_mouse_writep && + (!ValidEvent(readp) || !(readp->bstate & SP_PARM->_mouse_mask2))) { + Invalidate(readp); + readp = NEXT(readp); } - if (ValidEvent(prev)) { + if (readp != SP_PARM->_mouse_writep && ValidEvent(readp)) { /* copy the event we find there */ - *aevent = *prev; + *aevent = *readp; TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %ld", - _nc_tracemouse(SP_PARM, prev), - (long) IndexEV(SP_PARM, prev))); + _nc_tracemouse(SP_PARM, readp), + (long) IndexEV(SP_PARM, readp))); - Invalidate(prev); /* so the queue slot becomes free */ - SP_PARM->_mouse_eventp = prev; + Invalidate(readp); /* so the queue slot becomes free */ + SP_PARM->_mouse_readp = NEXT(readp); result = OK; } else { /* Reset the provided event */ @@ -1890,15 +1900,15 @@ NCURSES_SP_NAME(ungetmouse) (NCURSES_SP_DCLx MEVENT * aevent) T((T_CALLED("ungetmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent)); - if (aevent != 0 && - SP_PARM != 0 && - (eventp = SP_PARM->_mouse_eventp) != 0) { + if (aevent != NULL && + SP_PARM != NULL && + (eventp = SP_PARM->_mouse_writep) != NULL) { /* stick the given event in the next-free slot */ *eventp = *aevent; /* bump the next-free pointer into the circular list */ - SP_PARM->_mouse_eventp = NEXT(eventp); + SP_PARM->_mouse_writep = NEXT(eventp); /* push back the notification event on the keyboard queue */ result = NCURSES_SP_NAME(ungetch) (NCURSES_SP_ARGx KEY_MOUSE); @@ -1926,7 +1936,7 @@ NCURSES_SP_NAME(mousemask) (NCURSES_SP_DCLx mmask_t newmask, mmask_t * oldmask) (unsigned long) newmask, (void *) oldmask)); - if (SP_PARM != 0) { + if (SP_PARM != NULL) { if (oldmask) *oldmask = SP_PARM->_mouse_mask; @@ -1988,7 +1998,7 @@ wenclose(const WINDOW *win, int y, int x) T((T_CALLED("wenclose(%p,%d,%d)"), (const void *) win, y, x)); - if (win != 0) { + if (win != NULL) { y -= win->_yoffset; if (IS_PAD(win)) { if (win->_pad._pad_y >= 0 && @@ -2020,7 +2030,7 @@ NCURSES_SP_NAME(mouseinterval) (NCURSES_SP_DCLx int maxclick) T((T_CALLED("mouseinterval(%p,%d)"), (void *) SP_PARM, maxclick)); - if (SP_PARM != 0) { + if (SP_PARM != NULL) { oldval = SP_PARM->_maxclick; if (maxclick >= 0) SP_PARM->_maxclick = maxclick; @@ -2042,9 +2052,9 @@ mouseinterval(int maxclick) /* This may be used by other routines to ask for the existence of mouse support */ NCURSES_EXPORT(bool) -_nc_has_mouse(SCREEN *sp) +_nc_has_mouse(const SCREEN *sp) { - return (((0 == sp) || (sp->_mouse_type == M_NONE)) ? FALSE : TRUE); + return (((NULL == sp) || (sp->_mouse_type == M_NONE)) ? FALSE : TRUE); } NCURSES_EXPORT(bool) diff --git a/contrib/ncurses/ncurses/base/lib_mvwin.c b/contrib/ncurses/ncurses/base/lib_mvwin.c index fca014efeb9a..66421971a7dd 100644 --- a/contrib/ncurses/ncurses/base/lib_mvwin.c +++ b/contrib/ncurses/ncurses/base/lib_mvwin.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2009,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -43,13 +43,13 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_mvwin.c,v 1.20 2021/10/23 18:57:41 tom Exp $") +MODULE_ID("$Id: lib_mvwin.c,v 1.21 2024/07/27 19:23:59 tom Exp $") NCURSES_EXPORT(int) mvwin(WINDOW *win, int by, int bx) { #if NCURSES_SP_FUNCS - SCREEN *sp = _nc_screen_of(win); + const SCREEN *sp = _nc_screen_of(win); #endif T((T_CALLED("mvwin(%p,%d,%d)"), (void *) win, by, bx)); diff --git a/contrib/ncurses/ncurses/base/lib_newterm.c b/contrib/ncurses/ncurses/base/lib_newterm.c index 15d05a31b583..91f67c2ff98e 100644 --- a/contrib/ncurses/ncurses/base/lib_newterm.c +++ b/contrib/ncurses/ncurses/base/lib_newterm.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2020,2022 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -49,9 +49,9 @@ #include <tic.h> -MODULE_ID("$Id: lib_newterm.c,v 1.104 2022/07/09 18:58:58 tom Exp $") +MODULE_ID("$Id: lib_newterm.c,v 1.110 2025/12/27 12:28:45 tom Exp $") -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels #else #define NumLabels num_labels @@ -88,7 +88,7 @@ _nc_initscr(NCURSES_SP_DCL0) buf.c_oflag &= (unsigned) ~(ONLCR); #elif HAVE_SGTTY_H buf.sg_flags &= ~(ECHO | CRMOD); -#elif defined(EXP_WIN32_DRIVER) +#elif USE_NAMED_PIPES buf.dwFlagIn = CONMODE_IN_DEFAULT; buf.dwFlagOut = CONMODE_OUT_DEFAULT | VT_FLAG_OUT; if (WINCONSOLE.isTermInfoConsole) { @@ -175,12 +175,12 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx FILE *ifp) { int errret; - SCREEN *result = 0; + SCREEN *result = NULL; SCREEN *current; TERMINAL *its_term; FILE *_ofp = ofp ? ofp : stdout; FILE *_ifp = ifp ? ifp : stdin; - TERMINAL *new_term = 0; + TERMINAL *new_term = NULL; START_TRACE(); T((T_CALLED("newterm(%p, \"%s\", %p,%p)"), @@ -190,8 +190,8 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx (void *) ifp)); #if NCURSES_SP_FUNCS - assert(SP_PARM != 0); - if (SP_PARM == 0) + assert(SP_PARM != NULL); + if (SP_PARM == NULL) returnSP(SP_PARM); #endif @@ -199,9 +199,9 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx _nc_lock_global(curses); current = CURRENT_SCREEN; - its_term = (current ? current->_term : 0); + its_term = (current ? current->_term : NULL); -#if defined(EXP_WIN32_DRIVER) +#if USE_NAMED_PIPES _setmode(fileno(_ifp), _O_BINARY); _setmode(fileno(_ofp), _O_BINARY); #endif @@ -212,11 +212,11 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx TINFO_SETUP_TERM(&new_term, name, fileno(_ofp), &errret, FALSE) != ERR) { int slk_format; - int filter_mode; + bool filter_mode; - _nc_set_screen(0); -#ifdef USE_TERM_DRIVER - assert(new_term != 0); + _nc_set_screen(NULL); +#if USE_TERM_DRIVER + assert(new_term != NULL); #endif #if NCURSES_SP_FUNCS @@ -241,19 +241,19 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx filter_mode, slk_format) == ERR) { _nc_set_screen(current); - result = 0; + result = NULL; } else { int value; int cols; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER TERMINAL_CONTROL_BLOCK *TCB; #elif !NCURSES_SP_FUNCS _nc_set_screen(CURRENT_SCREEN); #endif - assert(SP_PARM != 0); + assert(SP_PARM != NULL); cols = *(ptrCols(SP_PARM)); -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER _nc_set_screen(SP_PARM); TCB = (TERMINAL_CONTROL_BLOCK *) new_term; TCB->csp = SP_PARM; @@ -271,7 +271,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx if (current) current->_term = its_term; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER SP_PARM->_term = new_term; #else new_term = SP_PARM->_term; @@ -279,6 +279,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx /* allow user to set maximum escape delay from the environment */ if ((value = _nc_getenv_num("ESCDELAY")) >= 0) { + value = Min(value, MAX_DELAY_MSECS); #if NCURSES_EXT_FUNCS NCURSES_SP_NAME(set_escdelay) (NCURSES_SP_ARGx value); #else @@ -300,7 +301,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx SP_PARM->_use_meta = FALSE; #endif SP_PARM->_endwin = ewInitial; -#ifndef USE_TERM_DRIVER +#if !USE_TERM_DRIVER /* * Check whether we can optimize scrolling under dumb terminals in * case we do not have any of these capabilities, scrolling @@ -317,10 +318,10 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx NCURSES_SP_NAME(baudrate) (NCURSES_SP_ARG); /* sets a field in the screen structure */ - SP_PARM->_keytry = 0; + SP_PARM->_keytry = NULL; /* compute movement costs so we can do better move optimization */ -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER TCBOf(SP_PARM)->drv->td_scinit(SP_PARM); #else /* ! USE_TERM_DRIVER */ /* @@ -332,7 +333,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx * properly if we remove rmso or rmul. Curses applications * shouldn't be looking at this detail. */ -#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode)) +#define SGR0_TEST(mode) (mode != NULL) && (exit_attribute_mode == NULL || strcmp(mode, exit_attribute_mode)) SP_PARM->_use_rmso = SGR0_TEST(exit_standout_mode); SP_PARM->_use_rmul = SGR0_TEST(exit_underline_mode); #if USE_ITALIC diff --git a/contrib/ncurses/ncurses/base/lib_newwin.c b/contrib/ncurses/ncurses/base/lib_newwin.c index a6723197c093..3085453d9a50 100644 --- a/contrib/ncurses/ncurses/base/lib_newwin.c +++ b/contrib/ncurses/ncurses/base/lib_newwin.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -44,18 +44,18 @@ #include <curses.priv.h> #include <stddef.h> -MODULE_ID("$Id: lib_newwin.c,v 1.76 2021/10/23 18:53:38 tom Exp $") +MODULE_ID("$Id: lib_newwin.c,v 1.79 2024/12/14 23:50:18 tom Exp $") #define window_is(name) ((sp)->_##name == win) #if USE_REENTRANT #define remove_window(name) \ - sp->_##name = 0 + sp->_##name = NULL #else #define remove_window(name) \ - sp->_##name = 0; \ + sp->_##name = NULL; \ if (win == name) \ - name = 0 + name = NULL #endif static void @@ -64,7 +64,7 @@ remove_window_from_screen(WINDOW *win) SCREEN *sp; #ifdef USE_SP_WINDOWLIST - if ((sp = _nc_screen_of(win)) != 0) { + if ((sp = _nc_screen_of(win)) != NULL) { if (window_is(curscr)) { remove_window(curscr); } else if (window_is(stdscr)) { @@ -99,17 +99,17 @@ _nc_freewin(WINDOW *win) T((T_CALLED("_nc_freewin(%p)"), (void *) win)); - if (win != 0) { + if (win != NULL) { if (_nc_nonsp_try_global(curses) == 0) { WINDOWLIST *p, *q; - q = 0; + q = NULL; for (each_window(sp, p)) { if (&(p->win) == win) { remove_window_from_screen(win); - if (q == 0) + if (q == NULL) WindowList(sp) = p->next; else q->next = p->next; @@ -150,8 +150,8 @@ NCURSES_SP_NAME(newwin) (NCURSES_SP_DCLx || begx < 0 || num_lines < 0 || num_columns < 0 - || SP_PARM == 0) - returnWin(0); + || SP_PARM == NULL) + returnWin(NULL); if (num_lines == 0) num_lines = SP_PARM->_lines_avail - begy; @@ -160,14 +160,14 @@ NCURSES_SP_NAME(newwin) (NCURSES_SP_DCLx win = NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_ARGx num_lines, num_columns, begy, begx, 0); - if (win == 0) - returnWin(0); + if (win == NULL) + returnWin(NULL); for (i = 0; i < num_lines; i++) { win->_line[i].text = typeCalloc(NCURSES_CH_T, (unsigned) num_columns); - if (win->_line[i].text == 0) { + if (win->_line[i].text == NULL) { (void) _nc_freewin(win); - returnWin(0); + returnWin(NULL); } for (ptr = win->_line[i].text; ptr < win->_line[i].text + num_columns; @@ -207,11 +207,14 @@ derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx) /* * make sure window fits inside the original one */ - if (begy < 0 || begx < 0 || orig == 0 || num_lines < 0 || num_columns < 0) - returnWin(0); - if (begy + num_lines > orig->_maxy + 1 + if (begy < 0 + || begx < 0 + || orig == NULL + || num_lines < 0 + || num_columns < 0 + || begy + num_lines > orig->_maxy + 1 || begx + num_columns > orig->_maxx + 1) - returnWin(0); + returnWin(NULL); if (num_lines == 0) num_lines = orig->_maxy + 1 - begy; @@ -225,8 +228,8 @@ derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx) win = NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_ARGx num_lines, num_columns, orig->_begy + begy, orig->_begx + begx, flags); - if (win == 0) - returnWin(0); + if (win == NULL) + returnWin(NULL); win->_pary = begy; win->_parx = begx; @@ -244,10 +247,10 @@ derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx) NCURSES_EXPORT(WINDOW *) subwin(WINDOW *w, int l, int c, int y, int x) { - WINDOW *result = 0; + WINDOW *result = NULL; T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), (void *) w, l, c, y, x)); - if (w != 0) { + if (w != NULL) { T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx)); result = derwin(w, l, c, y - w->_begy, x - w->_begx); @@ -255,13 +258,6 @@ subwin(WINDOW *w, int l, int c, int y, int x) returnWin(result); } -static bool -dimension_limit(int value) -{ - NCURSES_SIZE_T test = (NCURSES_SIZE_T) value; - return (test == value && value > 0); -} - NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx int num_lines, @@ -278,20 +274,20 @@ NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx T((T_CALLED("_nc_makenew(%p,%d,%d,%d,%d)"), (void *) SP_PARM, num_lines, num_columns, begy, begx)); - if (SP_PARM == 0) - returnWin(0); + if (SP_PARM == NULL) + returnWin(NULL); - if (!dimension_limit(num_lines) || !dimension_limit(num_columns)) - returnWin(0); + if (!OK_DIMENSION(num_lines) || !OK_DIMENSION(num_columns)) + returnWin(NULL); - if ((wp = typeCalloc(WINDOWLIST, 1)) == 0) - returnWin(0); + if ((wp = typeCalloc(WINDOWLIST, 1)) == NULL) + returnWin(NULL); win = &(wp->win); - if ((win->_line = typeCalloc(struct ldat, ((unsigned) num_lines))) == 0) { + if ((win->_line = typeCalloc(struct ldat, ((unsigned) num_lines))) == NULL) { free(wp); - returnWin(0); + returnWin(NULL); } _nc_nonsp_lock_global(curses); @@ -322,7 +318,7 @@ NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx win->_sync = 0; win->_parx = -1; win->_pary = -1; - win->_parent = 0; + win->_parent = NULL; win->_regtop = 0; win->_regbottom = (NCURSES_SIZE_T) (num_lines - 1); @@ -389,18 +385,18 @@ NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx NCURSES_EXPORT(WINDOW *) _nc_curscr_of(SCREEN *sp) { - return (sp == 0) ? NULL : CurScreen(sp); + return (sp == NULL) ? NULL : CurScreen(sp); } NCURSES_EXPORT(WINDOW *) _nc_newscr_of(SCREEN *sp) { - return (sp == 0) ? NULL : NewScreen(sp); + return (sp == NULL) ? NULL : NewScreen(sp); } NCURSES_EXPORT(WINDOW *) _nc_stdscr_of(SCREEN *sp) { - return (sp == 0) ? NULL : StdScreen(sp); + return (sp == NULL) ? NULL : StdScreen(sp); } #endif diff --git a/contrib/ncurses/ncurses/base/lib_nl.c b/contrib/ncurses/ncurses/base/lib_nl.c index 417b257d0399..f02d3f1baac9 100644 --- a/contrib/ncurses/ncurses/base/lib_nl.c +++ b/contrib/ncurses/ncurses/base/lib_nl.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2023 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2000,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -45,17 +45,13 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_nl.c,v 1.14 2023/04/29 18:51:49 tom Exp $") - -#ifdef __EMX__ -#include <io.h> -#endif +MODULE_ID("$Id: lib_nl.c,v 1.16 2025/06/21 14:27:02 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (NCURSES_SP_DCL0) { T((T_CALLED("nl(%p)"), (void *) SP_PARM)); - if (0 == SP_PARM) + if (NULL == SP_PARM) returnCode(ERR); IsNl(SP_PARM) = TRUE; #ifdef __EMX__ @@ -77,7 +73,7 @@ NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (NCURSES_SP_DCL0) { T((T_CALLED("nonl(%p)"), (void *) SP_PARM)); - if (0 == SP_PARM) + if (NULL == SP_PARM) returnCode(ERR); IsNl(SP_PARM) = FALSE; #ifdef __EMX__ diff --git a/contrib/ncurses/ncurses/base/lib_overlay.c b/contrib/ncurses/ncurses/base/lib_overlay.c index 6d21c7617047..6ab8cf059f92 100644 --- a/contrib/ncurses/ncurses/base/lib_overlay.c +++ b/contrib/ncurses/ncurses/base/lib_overlay.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2023 Thomas E. Dickey * + * Copyright 2020-2023,2024 Thomas E. Dickey * * Copyright 1998-2013,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -41,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_overlay.c,v 1.34 2023/09/16 16:39:07 tom Exp $") +MODULE_ID("$Id: lib_overlay.c,v 1.35 2024/12/07 20:03:37 tom Exp $") static int overlap(const WINDOW *const src, WINDOW *const dst, int const flag) @@ -50,7 +50,7 @@ overlap(const WINDOW *const src, WINDOW *const dst, int const flag) T((T_CALLED("overlap(%p,%p,%d)"), (const void *) src, (void *) dst, flag)); - if (src != 0 && dst != 0) { + if (src != NULL && dst != NULL) { int sx1, sy1, sx2, sy2; int dx1, dy1, dx2, dy2; @@ -146,8 +146,8 @@ copywin(const WINDOW *src, WINDOW *dst, dminrow, dmincol, dmaxrow, dmaxcol, over)); - if (src != 0 - && dst != 0 + if (src != NULL + && dst != NULL && dmaxrow >= dminrow && dmaxcol >= dmincol) { attr_t bk; diff --git a/contrib/ncurses/ncurses/base/lib_pad.c b/contrib/ncurses/ncurses/base/lib_pad.c index d4bd7f111bef..c5bfd6053a50 100644 --- a/contrib/ncurses/ncurses/base/lib_pad.c +++ b/contrib/ncurses/ncurses/base/lib_pad.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2010,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -43,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_pad.c,v 1.50 2021/10/23 22:57:27 tom Exp $") +MODULE_ID("$Id: lib_pad.c,v 1.52 2024/12/07 17:44:59 tom Exp $") NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (NCURSES_SP_DCLx int l, int c) @@ -55,17 +55,17 @@ NCURSES_SP_NAME(newpad) (NCURSES_SP_DCLx int l, int c) T((T_CALLED("newpad(%p,%d, %d)"), (void *) SP_PARM, l, c)); if (l <= 0 || c <= 0) - returnWin(0); + returnWin(NULL); win = NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_ARGx l, c, 0, 0, _ISPAD); if (win == NULL) - returnWin(0); + returnWin(NULL); for (i = 0; i < l; i++) { if_USE_SCROLL_HINTS(win->_line[i].oldindex = _NEWINDEX); - if ((win->_line[i].text = typeCalloc(NCURSES_CH_T, ((size_t) c))) == 0) { + if ((win->_line[i].text = typeCalloc(NCURSES_CH_T, ((size_t) c))) == NULL) { (void) _nc_freewin(win); - returnWin(0); + returnWin(NULL); } for (ptr = win->_line[i].text; ptr < win->_line[i].text + c; ptr++) SetChar(*ptr, BLANK_TEXT, BLANK_ATTR); @@ -92,7 +92,7 @@ subpad(WINDOW *orig, int l, int c, int begy, int begx) if (orig) { if (!IS_PAD(orig) || ((win = derwin(orig, l, c, begy, begx)) == NULL)) - returnWin(0); + returnWin(NULL); } returnWin(win); } @@ -143,7 +143,7 @@ pnoutrefresh(WINDOW *win, T((T_CALLED("pnoutrefresh(%p, %d, %d, %d, %d, %d, %d)"), (void *) win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)); - if (win == 0) + if (win == NULL) returnCode(ERR); if (!IS_PAD(win)) @@ -197,8 +197,8 @@ pnoutrefresh(WINDOW *win, #endif /* TRACE */ #if USE_SCROLL_HINTS if (win->_pad._pad_y >= 0) { - displaced = pminrow - win->_pad._pad_y - - (sminrow - win->_pad._pad_top); + displaced = ((pminrow - win->_pad._pad_y) - + (sminrow - win->_pad._pad_top)); T(("pad being shifted by %d line(s)", displaced)); } else displaced = 0; @@ -331,7 +331,7 @@ pechochar(WINDOW *pad, const chtype ch) { T((T_CALLED("pechochar(%p, %s)"), (void *) pad, _tracechtype(ch))); - if (pad == 0) + if (pad == NULL) returnCode(ERR); if (!IS_PAD(pad)) diff --git a/contrib/ncurses/ncurses/base/lib_printw.c b/contrib/ncurses/ncurses/base/lib_printw.c index d901b727a91c..fa1a153b3981 100644 --- a/contrib/ncurses/ncurses/base/lib_printw.c +++ b/contrib/ncurses/ncurses/base/lib_printw.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2018-2020,2024 Thomas E. Dickey * * Copyright 1998-2012,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -40,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_printw.c,v 1.28 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_printw.c,v 1.30 2024/12/07 17:44:59 tom Exp $") NCURSES_EXPORT(int) printw(const char *fmt, ...) @@ -133,7 +133,7 @@ mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...) NCURSES_EXPORT(int) vwprintw(WINDOW *win, const char *fmt, va_list argp) { - char *buf; + const char *buf; int code = ERR; #if NCURSES_SP_FUNCS SCREEN *sp = _nc_screen_of(win); @@ -142,7 +142,7 @@ vwprintw(WINDOW *win, const char *fmt, va_list argp) T((T_CALLED("vwprintw(%p,%s,va_list)"), (void *) win, _nc_visbuf(fmt))); buf = NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_ARGx fmt, argp); - if (buf != 0) { + if (buf != NULL) { code = waddstr(win, buf); } returnCode(code); @@ -151,7 +151,7 @@ vwprintw(WINDOW *win, const char *fmt, va_list argp) NCURSES_EXPORT(int) vw_printw(WINDOW *win, const char *fmt, va_list argp) { - char *buf; + const char *buf; int code = ERR; #if NCURSES_SP_FUNCS SCREEN *sp = _nc_screen_of(win); @@ -160,7 +160,7 @@ vw_printw(WINDOW *win, const char *fmt, va_list argp) T((T_CALLED("vw_printw(%p,%s,va_list)"), (void *) win, _nc_visbuf(fmt))); buf = NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_ARGx fmt, argp); - if (buf != 0) { + if (buf != NULL) { code = waddstr(win, buf); } returnCode(code); diff --git a/contrib/ncurses/ncurses/base/lib_redrawln.c b/contrib/ncurses/ncurses/base/lib_redrawln.c index c99d6992a2a9..99c02490d775 100644 --- a/contrib/ncurses/ncurses/base/lib_redrawln.c +++ b/contrib/ncurses/ncurses/base/lib_redrawln.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2024 Thomas E. Dickey * * Copyright 1998-2009,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -40,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_redrawln.c,v 1.18 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_redrawln.c,v 1.19 2024/12/07 20:03:37 tom Exp $") NCURSES_EXPORT(int) wredrawln(WINDOW *win, int beg, int num) @@ -52,7 +52,7 @@ wredrawln(WINDOW *win, int beg, int num) T((T_CALLED("wredrawln(%p,%d,%d)"), (void *) win, beg, num)); - if (win == 0) + if (win == NULL) returnCode(ERR); sp = _nc_screen_of(win); diff --git a/contrib/ncurses/ncurses/base/lib_refresh.c b/contrib/ncurses/ncurses/base/lib_refresh.c index bcaa4624b8a9..e43e28d6bda9 100644 --- a/contrib/ncurses/ncurses/base/lib_refresh.c +++ b/contrib/ncurses/ncurses/base/lib_refresh.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020-2021,2023 Thomas E. Dickey * + * Copyright 2020-2023,2024 Thomas E. Dickey * * Copyright 1998-2010,2011 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -43,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_refresh.c,v 1.48 2023/05/27 20:13:10 tom Exp $") +MODULE_ID("$Id: lib_refresh.c,v 1.49 2024/09/22 20:17:40 tom Exp $") NCURSES_EXPORT(int) wrefresh(WINDOW *win) @@ -55,7 +55,7 @@ wrefresh(WINDOW *win) T((T_CALLED("wrefresh(%p)"), (void *) win)); - if (win == 0) { + if (SP_PARM == NULL || win == NULL) { code = ERR; } else if (win == CurScreen(SP_PARM)) { CurScreen(SP_PARM)->_clear = TRUE; @@ -92,7 +92,7 @@ wnoutrefresh(WINDOW *win) T((T_CALLED("wnoutrefresh(%p)"), (void *) win)); - if (win == NULL) + if (SP_PARM == NULL || win == NULL) returnCode(ERR); /* diff --git a/contrib/ncurses/ncurses/base/lib_restart.c b/contrib/ncurses/ncurses/base/lib_restart.c index 0c61cb7ea667..4d5b0c127dbd 100644 --- a/contrib/ncurses/ncurses/base/lib_restart.c +++ b/contrib/ncurses/ncurses/base/lib_restart.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2023 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2012,2015 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -42,7 +42,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_restart.c,v 1.18 2023/04/29 19:01:25 tom Exp $") +MODULE_ID("$Id: lib_restart.c,v 1.21 2025/12/27 12:41:23 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx @@ -51,8 +51,8 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx int *errret) { int result; -#ifdef USE_TERM_DRIVER - TERMINAL *new_term = 0; +#if USE_TERM_DRIVER + TERMINAL *new_term = NULL; #endif START_TRACE(); @@ -64,10 +64,10 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx if (TINFO_SETUP_TERM(&new_term, termp, filenum, errret, FALSE) != OK) { result = ERR; - } else if (SP_PARM != 0) { + } else if (SP_PARM != NULL) { TTY_FLAGS save_flags = SP_PARM->_tty_flags; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER SP_PARM->_term = new_term; #endif if (save_flags._echo) { diff --git a/contrib/ncurses/ncurses/base/lib_screen.c b/contrib/ncurses/ncurses/base/lib_screen.c index e2647b54e2eb..26708eb59c0b 100644 --- a/contrib/ncurses/ncurses/base/lib_screen.c +++ b/contrib/ncurses/ncurses/base/lib_screen.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019-2021,2023 Thomas E. Dickey * + * Copyright 2019-2024,2025 Thomas E. Dickey * * Copyright 1998-2017,2018 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -42,7 +42,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_screen.c,v 1.105 2023/04/28 20:58:54 tom Exp $") +MODULE_ID("$Id: lib_screen.c,v 1.113 2025/12/27 12:28:45 tom Exp $") #define MAX_SIZE 0x3fff /* 16k is big enough for a window or pad */ @@ -58,7 +58,7 @@ MODULE_ID("$Id: lib_screen.c,v 1.105 2023/04/28 20:58:54 tom Exp $") #define ARG_SLIMIT(name) /* nothing */ #endif -#define CUR_SLIMIT _nc_SLIMIT(limit - (size_t) (target - base)) +#define CUR_SLIMIT _nc_SLIMIT(limit - (size_t) (target + 1 - base)) #define TOP_SLIMIT _nc_SLIMIT(sizeof(buffer)) /* @@ -172,7 +172,7 @@ read_txt(FILE *fp) char *result = malloc(limit); char *buffer; - if (result != 0) { + if (result != NULL) { int ch = 0; size_t used = 0; @@ -182,9 +182,9 @@ read_txt(FILE *fp) if (used + 2 >= limit) { limit += 1024; buffer = realloc(result, limit); - if (buffer == 0) { + if (buffer == NULL) { free(result); - result = 0; + result = NULL; break; } result = buffer; @@ -201,7 +201,7 @@ read_txt(FILE *fp) TR(TRACE_IEVENT, ("READ:%s", result)); } else if (used == 0) { free(result); - result = 0; + result = NULL; } } return result; @@ -222,7 +222,6 @@ decode_attr(char *source, attr_t *target, int *color) source++; found = FALSE; } else if (found) { - size_t n; char *next = source; if (source[0] == GUTTER) { @@ -241,6 +240,8 @@ decode_attr(char *source, attr_t *target, int *color) *target |= pair; *color = value; } else { + size_t n; + while (isalnum(UChar(*next))) { ++next; } @@ -304,8 +305,8 @@ decode_char(char *source, int *target) if (limit) { *target = 0; while (limit-- > 0) { - char *find = strchr(digits, *source++); - int ch = (find != 0) ? (int) (find - digits) : -1; + const char *find = strchr(digits, *source++); + int ch = (find != NULL) ? (int) (find - digits) : -1; *target *= base; if (ch >= 0 && ch < base) { *target += ch; @@ -337,7 +338,7 @@ decode_chtype(char *source, chtype fillin, chtype *target) #if NCURSES_WIDECHAR static char * -decode_cchar(char *source, cchar_t *fillin, cchar_t *target) +decode_cchar(char *source, const cchar_t *fillin, cchar_t *target) { int color; attr_t attr = fillin->attr; @@ -382,18 +383,18 @@ read_win(WINDOW *win, FILE *fp) memset(win, 0, sizeof(WINDOW)); for (;;) { - char *name; + const char *name; char *value; char *txt = read_txt(fp); - if (txt == 0) + if (txt == NULL) break; if (!strcmp(txt, "rows:")) { free(txt); code = OK; break; } - if ((value = strchr(txt, '=')) == 0) { + if ((value = strchr(txt, '=')) == NULL) { free(txt); continue; } @@ -505,8 +506,8 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) T((T_CALLED("getwin(%p)"), (void *) filep)); - if (filep == 0) { - returnWin(0); + if (filep == NULL) { + returnWin(NULL); } /* @@ -514,7 +515,7 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) * screen-dump, or new-format. */ if (read_block(&tmp, (size_t) 4, filep) < 0) { - returnWin(0); + returnWin(NULL); } /* * If this is a new-format file, and we do not support it, give up. @@ -523,9 +524,9 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) #if NCURSES_EXT_PUTWIN if (read_win(&tmp, filep) < 0) #endif - returnWin(0); + returnWin(NULL); } else if (read_block(((char *) &tmp) + 4, sizeof(WINDOW) - 4, filep) < 0) { - returnWin(0); + returnWin(NULL); } else { old_format = TRUE; } @@ -537,7 +538,7 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) tmp._maxy > MAX_SIZE || tmp._maxx == 0 || tmp._maxx > MAX_SIZE) { - returnWin(0); + returnWin(NULL); } if (IS_PAD(&tmp)) { @@ -555,7 +556,7 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) * fields, because the window hierarchy within which they * made sense is probably gone. */ - if (nwin != 0) { + if (nwin != NULL) { int n; size_t linesize = sizeof(NCURSES_CH_T) * (size_t) (tmp._maxx + 1); @@ -593,13 +594,13 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) for (n = 0; n <= nwin->_maxy; n++) { if (read_block(nwin->_line[n].text, linesize, filep) < 0) { delwin(nwin); - returnWin(0); + returnWin(NULL); } } } #if NCURSES_EXT_PUTWIN else { - char *txt = 0; + char *txt = NULL; bool success = TRUE; NCURSES_CH_T prior = blank; @@ -608,7 +609,7 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) long row; char *next; - if ((txt = read_txt(filep)) == 0) { + if ((txt = read_txt(filep)) == NULL) { T(("...failed to read string for row %d", n + 1)); success = FALSE; break; @@ -627,13 +628,13 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) break; } free(txt); - txt = 0; + txt = NULL; } if (!success) { free(txt); delwin(nwin); - returnWin(0); + returnWin(NULL); } } #endif @@ -797,7 +798,7 @@ putwin(WINDOW *win, FILE *filep) T((T_CALLED("putwin(%p,%p)"), (void *) win, (void *) filep)); #if NCURSES_EXT_PUTWIN - if (win != 0) { + if (win != NULL) { const char *version = curses_version(); char buffer[1024]; NCURSES_CH_T last_cell; @@ -916,7 +917,7 @@ putwin(WINDOW *win, FILE *filep) * ncurses is compiled with wide-character support, and also may depend * on the version of ncurses, e.g., if the WINDOW structure is extended. */ - if (win != 0) { + if (win != NULL) { size_t len = (size_t) (win->_maxx + 1); int y; @@ -942,7 +943,7 @@ putwin(WINDOW *win, FILE *filep) * Replace a window covering the whole screen, i.e., newscr or curscr. */ static WINDOW * -replace_window(WINDOW *target, FILE *source) +replace_window(const WINDOW *target, FILE *source) { WINDOW *result = getwin(source); #if NCURSES_EXT_FUNCS @@ -959,26 +960,28 @@ replace_window(WINDOW *target, FILE *source) } } #endif - delwin(target); return result; } NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (NCURSES_SP_DCLx const char *file) { - FILE *fp = 0; + FILE *fp = NULL; int code = ERR; T((T_CALLED("scr_restore(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file))); - if (_nc_access(file, R_OK) >= 0 - && (fp = safe_fopen(file, BIN_R)) != 0) { - NewScreen(SP_PARM) = replace_window(NewScreen(SP_PARM), fp); + if (SP_PARM != NULL + && _nc_access(file, R_OK) >= 0 + && (fp = safe_fopen(file, BIN_R)) != NULL) { + WINDOW *my_newscr = replace_window(NewScreen(SP_PARM), fp); + (void) fclose(fp); + if (my_newscr != NULL) { + delwin(NewScreen(SP_PARM)); + NewScreen(SP_PARM) = my_newscr; #if !USE_REENTRANT - newscr = NewScreen(SP_PARM); + newscr = my_newscr; #endif - (void) fclose(fp); - if (NewScreen(SP_PARM) != 0) { code = OK; } } @@ -997,12 +1000,12 @@ NCURSES_EXPORT(int) scr_dump(const char *file) { int result; - FILE *fp = 0; + FILE *fp = NULL; T((T_CALLED("scr_dump(%s)"), _nc_visbuf(file))); if (_nc_access(file, W_OK) < 0 - || (fp = safe_fopen(file, BIN_W)) == 0) { + || (fp = safe_fopen(file, BIN_W)) == NULL) { result = ERR; } else { (void) putwin(newscr, fp); @@ -1019,23 +1022,25 @@ NCURSES_SP_NAME(scr_init) (NCURSES_SP_DCLx const char *file) T((T_CALLED("scr_init(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file))); - if (SP_PARM != 0 && -#ifdef USE_TERM_DRIVER + if (SP_PARM != NULL && +#if USE_TERM_DRIVER InfoOf(SP_PARM).caninit #else !(exit_ca_mode && non_rev_rmcup) #endif ) { - FILE *fp = 0; + FILE *fp = NULL; if (_nc_access(file, R_OK) >= 0 - && (fp = safe_fopen(file, BIN_R)) != 0) { - CurScreen(SP_PARM) = replace_window(CurScreen(SP_PARM), fp); + && (fp = safe_fopen(file, BIN_R)) != NULL) { + WINDOW *my_curscr = replace_window(CurScreen(SP_PARM), fp); + (void) fclose(fp); + if (my_curscr != NULL) { + delwin(CurScreen(SP_PARM)); + CurScreen(SP_PARM) = my_curscr; #if !USE_REENTRANT - curscr = CurScreen(SP_PARM); + curscr = my_curscr; #endif - (void) fclose(fp); - if (CurScreen(SP_PARM) != 0) { code = OK; } } @@ -1058,13 +1063,14 @@ NCURSES_SP_NAME(scr_set) (NCURSES_SP_DCLx const char *file) T((T_CALLED("scr_set(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file))); - if (NCURSES_SP_NAME(scr_init) (NCURSES_SP_ARGx file) == OK) { + if (SP_PARM != NULL + && NCURSES_SP_NAME(scr_init) (NCURSES_SP_ARGx file) == OK) { delwin(NewScreen(SP_PARM)); NewScreen(SP_PARM) = dupwin(curscr); #if !USE_REENTRANT newscr = NewScreen(SP_PARM); #endif - if (NewScreen(SP_PARM) != 0) { + if (NewScreen(SP_PARM) != NULL) { code = OK; } } diff --git a/contrib/ncurses/ncurses/base/lib_set_term.c b/contrib/ncurses/ncurses/base/lib_set_term.c index 78de859208b6..b6f9e57f5568 100644 --- a/contrib/ncurses/ncurses/base/lib_set_term.c +++ b/contrib/ncurses/ncurses/base/lib_set_term.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2021,2022 Thomas E. Dickey * + * Copyright 2018-2024,2025 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -57,9 +57,9 @@ #undef CUR #define CUR SP_TERMTYPE -MODULE_ID("$Id: lib_set_term.c,v 1.184 2022/12/10 21:34:12 tom Exp $") +MODULE_ID("$Id: lib_set_term.c,v 1.199 2025/12/27 12:28:45 tom Exp $") -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER #define MaxColors InfoOf(sp).maxcolors #define NumLabels InfoOf(sp).numlabels #else @@ -81,7 +81,7 @@ set_term(SCREEN *screenp) _nc_set_screen(screenp); newSP = screenp; - if (newSP != 0) { + if (newSP != NULL) { TINFO_SET_CURTERM(newSP, newSP->_term); #if !USE_REENTRANT curscr = CurScreen(newSP); @@ -91,11 +91,11 @@ set_term(SCREEN *screenp) COLOR_PAIRS = newSP->_pair_count; #endif } else { - TINFO_SET_CURTERM(oldSP, 0); + TINFO_SET_CURTERM(oldSP, NULL); #if !USE_REENTRANT - curscr = 0; - newscr = 0; - stdscr = 0; + curscr = NULL; + newscr = NULL; + stdscr = NULL; COLORS = 0; COLOR_PAIRS = 0; #endif @@ -110,7 +110,7 @@ set_term(SCREEN *screenp) static void _nc_free_keytry(TRIES * kt) { - if (kt != 0) { + if (kt != NULL) { _nc_free_keytry(kt->child); _nc_free_keytry(kt->sibling); free(kt); @@ -120,7 +120,7 @@ _nc_free_keytry(TRIES * kt) static bool delink_screen(SCREEN *sp) { - SCREEN *last = 0; + SCREEN *last = NULL; SCREEN *temp; bool result = FALSE; @@ -160,7 +160,7 @@ delscreen(SCREEN *sp) rop++) { if (rop->win) { (void) delwin(rop->win); - rop->win = 0; + rop->win = NULL; } } } @@ -174,9 +174,9 @@ delscreen(SCREEN *sp) } } - if (sp->_slk != 0) { + if (sp->_slk != NULL) { - if (sp->_slk->ent != 0) { + if (sp->_slk->ent != NULL) { int i; for (i = 0; i < sp->_slk->labcnt; ++i) { @@ -186,14 +186,14 @@ delscreen(SCREEN *sp) free(sp->_slk->ent); } free(sp->_slk); - sp->_slk = 0; + sp->_slk = NULL; } _nc_free_keytry(sp->_keytry); - sp->_keytry = 0; + sp->_keytry = NULL; _nc_free_keytry(sp->_key_ok); - sp->_key_ok = 0; + sp->_key_ok = NULL; FreeIfNeeded(sp->_current_attr); @@ -217,9 +217,9 @@ delscreen(SCREEN *sp) } #if USE_GPM_SUPPORT #ifdef HAVE_LIBDL - if (sp->_dlopen_gpm != 0) { + if (sp->_dlopen_gpm != NULL) { dlclose(sp->_dlopen_gpm); - sp->_dlopen_gpm = 0; + sp->_dlopen_gpm = NULL; } #endif #endif /* USE_GPM_SUPPORT */ @@ -232,17 +232,17 @@ delscreen(SCREEN *sp) */ if (is_current) { #if !USE_REENTRANT - curscr = 0; - newscr = 0; - stdscr = 0; + curscr = NULL; + newscr = NULL; + stdscr = NULL; COLORS = 0; COLOR_PAIRS = 0; #endif - _nc_set_screen(0); + _nc_set_screen(NULL); #if USE_WIDEC_SUPPORT - if (SP == 0) { + if (SP == NULL) { FreeIfNeeded(_nc_wacs); - _nc_wacs = 0; + _nc_wacs = NULL; } #endif } else { @@ -303,7 +303,7 @@ extract_fgbg(const char *src, int *result) } #endif -#define ReturnScreenError() do { _nc_set_screen(0); \ +#define ReturnScreenError() do { _nc_set_screen(NULL); \ returnCode(ERR); } while (0) /* OS-independent screen initializations */ @@ -315,26 +315,29 @@ NCURSES_SP_NAME(_nc_setupscreen) ( int slines, int scolumns, FILE *output, - int filtered, + bool filtered, int slk_format) { -#ifndef USE_TERM_DRIVER +#if !USE_TERM_DRIVER static const TTY null_TTY; /* all zeros iff uninitialized */ #endif char *env; int bottom_stolen = 0; SCREEN *sp; -#ifndef USE_TERM_DRIVER +#if !USE_TERM_DRIVER bool support_cookies = USE_XMC_SUPPORT; #endif T((T_CALLED("_nc_setupscreen(%d, %d, %p, %d, %d)"), slines, scolumns, (void *) output, filtered, slk_format)); - assert(CURRENT_SCREEN == 0); /* has been reset in newterm() ! */ + /* CURRENT_SCREEN is reset in newterm() */ + if (CURRENT_SCREEN) + returnCode(ERR); #if NCURSES_SP_FUNCS - assert(spp != 0); + if (spp == NULL) + returnCode(ERR); sp = *spp; if (!sp) { @@ -357,13 +360,13 @@ NCURSES_SP_NAME(_nc_setupscreen) ( sp->_next_screen = _nc_screen_chain; _nc_screen_chain = sp; - if ((sp->_current_attr = typeCalloc(NCURSES_CH_T, 1)) == 0) { + if ((sp->_current_attr = typeCalloc(NCURSES_CH_T, 1)) == NULL) { ReturnScreenError(); } #else if (!_nc_alloc_screen() - || ((SP->_acs_map = typeCalloc(chtype, ACS_LEN)) == 0) - || ((SP->_screen_acs_map = typeCalloc(bool, ACS_LEN)) == 0)) { + || ((SP->_acs_map = typeCalloc(chtype, ACS_LEN)) == NULL) + || ((SP->_screen_acs_map = typeCalloc(bool, ACS_LEN)) == NULL)) { returnCode(ERR); } @@ -373,7 +376,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( sp->_next_screen = _nc_screen_chain; _nc_screen_chain = sp; - if ((sp->_current_attr = typeCalloc(NCURSES_CH_T, 1)) == 0) { + if ((sp->_current_attr = typeCalloc(NCURSES_CH_T, 1)) == NULL) { returnCode(ERR); } #endif @@ -383,12 +386,16 @@ NCURSES_SP_NAME(_nc_setupscreen) ( */ _nc_set_screen(sp); sp->_term = cur_term; -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER TCBOf(sp)->csp = sp; _nc_get_screensize(sp, sp->_term, &slines, &scolumns); #else _nc_get_screensize(sp, &slines, &scolumns); #endif + if (scolumns < 0) + scolumns = 0; + if (slines < 0) + slines = 0; SET_LINES(slines); SET_COLS(scolumns); @@ -401,7 +408,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( if (filtered) { slines = 1; SET_LINES(slines); -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER CallDriver(sp, td_setfilter); #else /* *INDENT-EQLS* */ @@ -420,12 +427,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( #endif T(("filter screensize %dx%d", slines, scolumns)); } -#ifdef __DJGPP__ - T(("setting output mode to binary")); - fflush(output); - setmode(output, O_BINARY); -#endif -#if defined(EXP_WIN32_DRIVER) +#if USE_NAMED_PIPES T(("setting output mode to binary")); fflush(output); _setmode(fileno(output), _O_BINARY); @@ -437,12 +439,12 @@ NCURSES_SP_NAME(_nc_setupscreen) ( fflush(output); sp->_ofd = output ? fileno(output) : -1; sp->_ofp = output; -#if defined(EXP_WIN32_DRIVER) +#if USE_NAMED_PIPES if (output) _setmode(fileno(output), _O_BINARY); #endif sp->out_limit = (size_t) ((2 + slines) * (6 + scolumns)); - if ((sp->out_buffer = malloc(sp->out_limit)) == 0) + if ((sp->out_buffer = malloc(sp->out_limit)) == NULL) sp->out_limit = 0; sp->out_inuse = 0; @@ -455,7 +457,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( /* * Set our assumption of the terminal's default foreground and background - * colors. The curs_color man-page states that we can assume that the + * colors. The curs_color man page states that we can assume that the * background is black. The origin of this assumption appears to be * terminals that displayed colored text, but no colored backgrounds, e.g., * the first colored terminals around 1980. More recent ones with better @@ -484,7 +486,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( * Allow those assumed/default color assumptions to be overridden at * runtime: */ - if ((env = getenv("NCURSES_ASSUMED_COLORS")) != 0) { + if ((env = getenv("NCURSES_ASSUMED_COLORS")) != NULL) { int fg, bg; char sep1, sep2; int count = sscanf(env, "%d%c%d%c", &fg, &sep1, &bg, &sep2); @@ -551,7 +553,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( if (NCURSES_SP_NAME(has_colors) (NCURSES_SP_ARG)) { sp->_ok_attributes |= A_COLOR; } -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER _nc_cookie_init(sp); #else #if USE_XMC_SUPPORT @@ -560,7 +562,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( * in the environment, reset the support-flag. */ if (magic_cookie_glitch >= 0) { - if (getenv("NCURSES_NO_MAGIC_COOKIE") != 0) { + if (getenv("NCURSES_NO_MAGIC_COOKIE") != NULL) { support_cookies = FALSE; } } @@ -638,10 +640,10 @@ NCURSES_SP_NAME(_nc_setupscreen) ( NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_ARG); #if USE_WIDEC_SUPPORT sp->_screen_unicode = _nc_unicode_locale(); - if (_nc_wacs == 0) { + if (_nc_wacs == NULL) { _nc_init_wacs(); } - if (_nc_wacs == 0) { + if (_nc_wacs == NULL) { ReturnScreenError(); } @@ -649,7 +651,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( && _nc_locale_breaks_acs(sp->_term)); #endif env = _nc_get_locale(); - sp->_legacy_coding = ((env == 0) + sp->_legacy_coding = ((env == NULL) || !strcmp(env, "C") || !strcmp(env, "POSIX")); T(("legacy-coding %d", sp->_legacy_coding)); @@ -657,19 +659,19 @@ NCURSES_SP_NAME(_nc_setupscreen) ( sp->_nc_sp_idcok = TRUE; sp->_nc_sp_idlok = FALSE; - sp->oldhash = 0; - sp->newhash = 0; + sp->oldhash = NULL; + sp->newhash = NULL; T(("creating newscr")); NewScreen(sp) = NCURSES_SP_NAME(newwin) (NCURSES_SP_ARGx slines, scolumns, 0, 0); - if (NewScreen(sp) == 0) { + if (NewScreen(sp) == NULL) { ReturnScreenError(); } T(("creating curscr")); CurScreen(sp) = NCURSES_SP_NAME(newwin) (NCURSES_SP_ARGx slines, scolumns, 0, 0); - if (CurScreen(sp) == 0) { + if (CurScreen(sp) == NULL) { ReturnScreenError(); } #if !USE_REENTRANT @@ -688,8 +690,8 @@ NCURSES_SP_NAME(_nc_setupscreen) ( * Get the current tty-modes. setupterm() may already have done this, * unless we use the term-driver. */ -#ifndef USE_TERM_DRIVER - if (cur_term != 0 && +#if !USE_TERM_DRIVER + if (cur_term != NULL && !memcmp(&cur_term->Ottyb, &null_TTY, sizeof(TTY))) #endif { @@ -755,7 +757,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( assert((sp->_lines_avail + sp->_topstolen + bottom_stolen) == slines); if ((StdScreen(sp) = NCURSES_SP_NAME(newwin) (NCURSES_SP_ARGx sp->_lines_avail, - scolumns, 0, 0)) == 0) { + scolumns, 0, 0)) == NULL) { ReturnScreenError(); } SET_LINES(sp->_lines_avail); @@ -771,10 +773,10 @@ NCURSES_EXPORT(int) _nc_setupscreen(int slines GCC_UNUSED, int scolumns GCC_UNUSED, FILE *output, - int filtered, + bool filtered, int slk_format) { - SCREEN *sp = 0; + SCREEN *sp = NULL; int rc = NCURSES_SP_NAME(_nc_setupscreen) (&sp, slines, scolumns, @@ -782,7 +784,7 @@ _nc_setupscreen(int slines GCC_UNUSED, filtered, slk_format); if (rc != OK) - _nc_set_screen(0); + _nc_set_screen(NULL); return rc; } #endif @@ -805,13 +807,13 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx TR_FUNC_ARG(0, init))); #if NCURSES_SP_FUNCS - if (SP_PARM != 0 && SP_PARM->_prescreen) + if (SP_PARM != NULL && SP_PARM->_prescreen) #endif { if (line == 0) { code = OK; } else { - if (safe_ripoff_sp == 0) { + if (safe_ripoff_sp == NULL) { safe_ripoff_sp = safe_ripoff_stack; } if (safe_ripoff_sp < safe_ripoff_stack + N_RIPS) { diff --git a/contrib/ncurses/ncurses/base/lib_slk.c b/contrib/ncurses/ncurses/base/lib_slk.c index 47e57e0bc5bd..3ddc98161ba9 100644 --- a/contrib/ncurses/ncurses/base/lib_slk.c +++ b/contrib/ncurses/ncurses/base/lib_slk.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2022 Thomas E. Dickey * + * Copyright 2020-2024,2025 Thomas E. Dickey * * Copyright 1998-2010,2011 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -48,9 +48,9 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_slk.c,v 1.50 2022/08/20 18:29:22 tom Exp $") +MODULE_ID("$Id: lib_slk.c,v 1.52 2025/12/27 12:41:23 tom Exp $") -#ifdef USE_TERM_DRIVER +#if USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels #define NoColorVideo InfoOf(SP_PARM).nocolorvideo #define LabelWidth InfoOf(SP_PARM).labelwidth @@ -68,7 +68,7 @@ MODULE_ID("$Id: lib_slk.c,v 1.50 2022/08/20 18:29:22 tom Exp $") static int slk_failed(NCURSES_SP_DCL0) { - if ((0 != SP_PARM) && SP_PARM->_slk) { + if ((NULL != SP_PARM) && SP_PARM->_slk) { FreeIfNeeded(SP_PARM->_slk->ent); free(SP_PARM->_slk); SP_PARM->_slk = (SLK *) 0; @@ -148,7 +148,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) assert(stwin); sp = _nc_screen_of(stwin); - if (0 == sp) + if (NULL == sp) returnCode(ERR); assert(TerminalOf(SP_PARM)); @@ -157,7 +157,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) if (SP_PARM->_slk) { /* we did this already, so simply return */ returnCode(OK); - } else if ((SP_PARM->_slk = typeCalloc(SLK, 1)) == 0) + } else if ((SP_PARM->_slk = typeCalloc(SLK, 1)) == NULL) returnCode(ERR); if (!SP_PARM->slk_format) @@ -196,13 +196,13 @@ _nc_slk_initialize(WINDOW *stwin, int cols) for (i = 0; i < SP_PARM->_slk->labcnt; i++) { size_t used = max_length + 1; - SP_PARM->_slk->ent[i].ent_text = (char *) _nc_doalloc(0, used); - if (SP_PARM->_slk->ent[i].ent_text == 0) + SP_PARM->_slk->ent[i].ent_text = (char *) _nc_doalloc(NULL, used); + if (SP_PARM->_slk->ent[i].ent_text == NULL) returnCode(slk_failed(NCURSES_SP_ARG)); memset(SP_PARM->_slk->ent[i].ent_text, 0, used); - SP_PARM->_slk->ent[i].form_text = (char *) _nc_doalloc(0, used); - if (SP_PARM->_slk->ent[i].form_text == 0) + SP_PARM->_slk->ent[i].form_text = (char *) _nc_doalloc(NULL, used); + if (SP_PARM->_slk->ent[i].form_text == NULL) returnCode(slk_failed(NCURSES_SP_ARG)); if (used > 1) { @@ -2 |
